À l’aide : un hacker a ajouté une chaîne encodée dans mon code PHP (base64_decode)

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. 

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é.

▼Publicité

Courriel des outils Google pour Webmestre indiquant que le site a é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.

PHP

<? 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 :

  • Une chance que j'avais inscrit mon site sur Google Webmasters. Sans cet outil, je n'aurais probablement jamais su que certains URL de mon site étaient détournés vers un site malveillant.
  • Lorsque je recherche une chaîne de caractères dans les fichiers et dans le script SQL de la base de données, il se peut que la chaîne ait été encodée. Je dois donc également rechercher la présence des fonctions de décodage qui auraient pu être utilisées par le langage de programmation. Dans le cas présent, la fonction base64_decode() avait été utilisée. C'est pourquoi je ne trouvais aucune trace de la chaîne « yalbz ».
  • Lors de la réinstallation de WordPress, du thème et des extensions, il faut prendre soin de vérifier si des fichiers sont présents sur le serveur alors qu'ils ne le sont pas dans les versions officielles. Si de tels fichiers sont trouvés, il faut analyser leur contenu afin de déterminer s'ils sont légitimes ou non.
  • Lorsque je désactive des extensions, je dois retirer tous les fichiers de cette extension ainsi que tous les dossiers qu'elle utilisait. Dans le présent cas, l'extension que j'ai retirée utilisait un dossier pour lequel j'avais dû augmenter les droits afin de permettre à l'extension d'y ajouter des fichiers. Ceci a ouvert une faille de sécurité que les hackers ont exploité.
Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories