Voici une histoire vécue. J'ai développé un site WordPress pour ma mère afin qu'elle y partage ses recherches en éducation ainsi que le récit de ses voyages d'aide humanitaire.
▼Publicité
Tout va pour le mieux jusqu'au jour où je reçois un courriel des outils Google pour Webmestre m'indiquant que mon site a probablement été piraté.
Lorsque je navigue sur le site, je ne vois rien d'anormal. Mais les liens que Google pour Webmestre m'envoie mènent bel et bien à des pages que je ne désire pas voir sur mon site. Heureusement, lorsque ces pages sont affichées, rien n'indique qu'elles font partie de mon site. Seul le nom de domaine trahit l'arnaque dont j'ai été victime.
Mon premier réflexe est de rechercher parmi tous mes fichiers et dans ma base de données la chaîne qui est présente dans les URL suspects : « yalbz ». Je crée donc un script SQL de la base de données puis j'utilise Agent Ransack pour rechercher la chaîne dans ce fichier ainsi que dans tous les fichiers du site. Rien, elle n'est pas là.
Je choisis de réinstaller WordPress ainsi que le thème est les extensions que j'utilise. De cette façon, si un fichier a été corrompu, il sera écrasé par le fichier sain. Je conserve bien entendu ma base de données ainsi que tout le contenu du dossier wp-content afin que le contenu du site ne soit pas perdu. Bien que cette étape soit essentielle, elle n'a pas réglé mon problème.
Je me tourne donc vers Google pour tenter de trouver comment les hackers s'y sont pris pour faire en sorte que les URL utilisant le sous-dossier « yalbz » affichent leurs pages plutôt que ma page d'erreur 404. D'ailleurs, j'ai fait des tests et ma page 404.php fonctionne correctement pour tous les autres URL non trouvés sur mon site. Seuls ceux utilisant le sous-dossier « yalbz » sont problématiques. Et il y en a plusieurs. Si je recherche sur Google la chaîne « site:mondomaine.com sexe », j'obtiens une soixantaine de liens...
Après de nombreuses heures de recherche et de tests, je tombe finalement sur l'article qui allait me mettre la puce à l'oreille : How to Diagnose and Remove the WordPress Pharma Hack. Bien qu'il ne s'agisse pas exactement du même problème que celui auquel je fais face, l'auteur mentionne que les hackers utilisent la fonction php base64_decode() pour décoder des chaînes malveillantes qui ont été encodées dans un fichier .php.
Je recherche donc la présence de cette fonction dans les fichiers du site. Je la trouve à plusieurs endroits. Je compare ces fichiers avec les fichiers natifs de WordPress puis du thème et des extensions que j'utilise pour déterminer si la présence de la fonction est légitime ou non. Je trouve finalement le problème : il y a un nouveau fichier nommé wp-info.php dans le dossier wp-content/backups (dossier installé par une extension que je n'utilise plus). Ce fichier ne fait qu'une chose : décoder une chaîne malveillante.
<? eval(base64_decode("...")); ?>
Comme l'extension qui utilisait ce dossier n'est plus active, je supprime carrément le dossier. Résultat : les URL qui menaient vers des pages de sexe mènent désormais vers ma page d'erreur 404.
Ce que je retiens de cette aventure :
Site fièrement hébergé chez A2 Hosting.