Se faire pirater son blog sous Wordpress peut arriver à n’importe qui, y compris à des développeurs. La mésaventure est arrivée le mois dernier à ma collègue Samantha Halfon, pourtant pas la moitié d’une bille en PHP, et la semaine dernière à Stephanie Booth.

Parce qu’il est la solution de publication Web la plus utilisée au monde, Wordpress est également la plus étudiée par les pirates informatiques à la recherche de vulnérabilités nombreuses dans ce bloatware codé avec les pieds par des mecs qui pensent encore en PHP 4.

Et parce que Wordpress a une communauté de développeurs et de contributeurs sans précédent, il existe des centaines de ressources permettant de l’étendre téléchargeables gratuitement sur le Web, plugins et thèmes confondus, dont plus de 80% contiennent en fait des malware. Utiliser Wordpress avec un thème et des plugins téléchargés sur Internet sans audit préalable revient peu ou prou à avoir une relation SQL non protégée dans un bordel de Chang Mai.

Wordpress

Dans cet article vous apprendrez les gestes qui sauvent après un hack de votre Wordpress, et que faire pour l’éviter une fois votre installation remise en place.

Les enjeux de la sécurité sur le Web

Sans entrer dans les détails, les enjeux de la sécurité sur Internet ont traditionnellement tourné autour de 3 thématiques :

  1. L’intrusion dans des systèmes d’informations afin d’en prendre le contrôle.
  2. L’intrusion dans des systèmes d’informations afin d’y voler des données normalement non accessibles.
  3. L’intrusion dans des systèmes d’informations afin d’y modifier des données.

Ces dernières années, on a vu se développer sur le Web de plus en plus d’attaques visant à :

  1. Usurper l’identité des utilisateurs d’un service.
  2. Modifier du contenu afin de le remplacer par d’autre.

Facilement automatisable, ce dernier point intéresse tout particulièrement les créateurs de malware Web.

Les thèmes et les plugins infectés modifient les pages du site hôte afin d’y afficher des revendications politiques, y intégrer des liens spammy de type viagra afin de faire remonter les cites liés dans les moteurs de recherche. Si les messages à caractère politique viennent remplacer le contenu légitime, le spam ne s’affiche que lors du passage des crawlers des moteurs de recherche, rendant leur détection extrêmement difficile.

Comment savoir que vous vous êtes fait hacker ?

Si votre site est infesté de liens pointant vers des malware et que vous utilisez un navigateur moderne, ce dernier tentera de vous empêcher d’accéder à votre site de photos de chatons car il pourrait nuire à votre sécurité. C’est ce qui est arrivé à Samanthe et lui a permis de savoir qu’elle s’était fait hacker.

Si le trafic des visiteurs en provenance des moteurs de recherche a soudainement baissé de 90%, il y a de grandes chances pour que Google considère que votre site rentre dans la catégorie spam, même si vous pouvez également avoir fait ce qu’il fallait pour vous faire mal voir.

Afin d’anticiper le plus gros du problème, il est indispensable de consulter régulièrement les Google Webmaster Tools, qui en savent souvent plus sur votre site Web que vous-même. Si vous voyez apparaître des liens sortant vers des sites inconnus, ou que les principaux mots clés de votre site sur les bébés phoques concernent la vente de Viagra pas cher, vous pouvez être certain que quelqu’un a détourné votre contenu. Sauf si vous vendez du Viagra pas cher, évidemment.

Trouvez les fichiers infectés

95% des gens dont le Wordpress s’est fait hacker réagissent de la même manière : ils réinstallent un Wordpress “propre”, éventuellement la version originale des plugins, remettent en place leur thème et leur répertoire de média et recommencent à bloguer comme si rien ne s’était passé. C’est le meilleur moyen de recommencer à faire la promotion du Viagra pas cher dans les heures qui suivent.

Si vous êtes développeur, lisez la suite de cet article. Dans le cas contraire, utilisez les fonctionnalités d’export de Wordpress et allez tout de suite ouvrir un compte chez Wordpress.com, le service d’hébergement d’Automattic. Sérieusement. Tout le code installé aura été audité pour vous, et vous courrez beaucoup moins de risques qu’en hébergeant sciemment des logiciels potentiellement dangereux.

Première chose à faire : rapatriez tout le contenu de votre site sur votre machine locale, en FTP ou en SSH, et supprimez tout ce que vous aviez sur le site compromis. En faisant cela, vous serez certain de supprimer le code infecté tout en protégeant vos visiteurs. Quant aux moteurs de recherche, de toute manière ils vous ont déjà dans le nez.

Si vous êtes sous Linux ou Mac OS X, ouvrez un terminal et placez-vous à la racine de votre site. Sinon éditez tout votre site dans un éditeur de textes un peu costaud.

Supprimez les .htaccess qui n’ont rien à faire là

De nombreux malwares Wordpress installent ou modifient des fichiers .htaccess afin d’y placer des redirections. Directement interprétés par votre serveur Web, ces derniers permettent à votre site d’en modifier la configuration.

Sous Linux ou Mac Os, lancez la commande suivante :

$ find . -type f -name .htaccess

Sinon, cherchez des fichiers nommés .htaccess dans votre éditeur de textes.

Vous ne devriez en trouver qu’un seul à la racine de votre site. Éditez le. S’il contient une chaîne redirigeant vers un site ne vous appartenant pas, ou mentionnant Google, Yahoo! ou Bing, supprimez les.

RewriteEngine On
RewriteOptions inherit
RewriteCond %{HTTP_REFERER} .*google.*/images.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*live.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*aol.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*mail.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*new.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*bing.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*msn.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*yahoo.*$ [NC]
RewriteRule .* http://pills.ind.in/in.cgi?4¶meter=0510 [R,L]
Trouvez les malware qui tentent d’échapper à la détection

Les malware plus récents ne modifient pas directement le fichier .htaccess, mais injectent une chaîne de caractères d’apparence anodine qui rend la détection beaucoup plus délicate.

Le code est injecté sous la forme d’une chaîne encodée en base64. Le format base64 permet d’encoder du binaire sous forme d’un texte. Il est par exemple utilisé afin de lier un fichier au corps d’un e-mail.

Une bonne méthode de détection consiste donc à rechercher l’instruction base64_decode dans le PHP de votre Wordpress. Si vous utilisez un terminal pour trouver l’injection de votre Malware, c’est comme ça :

$ find . -type f -name "*.php" | xargs grep base64_decode 

Attention cependant, base64_decode peut être utilisée de manière tout à fait légitime par un de vos plugins, mais si elle est suivie d’un gros paté de caractères, il y a de fortes chances pour qu’il n’ait rien à faire là. Dans ce cas, le plus simple est de le copier / coller à part dans un fichier php et de voir ce qu’il fait réellement.

Débarrassez-vous des autres répertoires cachés

Certains malwares installent une copie d’eux-même afin de se réinstaller tranquillement en cas de découverte. Ils s’installent généralement dans des répertoires cachés. Ce sont donc eux que vous allez débusquer :

$ find . -type d -name ".*"

Si cette commande vous donne des résultats, il y a de grandes chances pour que ce répertoire ne soit pas à sa place.

Vérifiez l’intégrité de votre base de données

Il vous reste à vérifier que votre base de données n’a pas été infectée. Pour cela, vous allez regarder le contenu de la table wp_options, qui regroupe la configuration de votre Wordpress et de ses plugins à la recherche d’une ligne suspecte. Sont concernées toutes les entrées ne se référant pas directement à votre installation Wordpress ou aux plugins connus. Si vous avez été infecté, vous devriez normalement trouver votre bonheur dans les 50 derniers enregistrements.

Il se peut également que les liens aient été directement injectés dans les articles de votre blog. Dans ce cas, j’espère pour vous que vous disposez d’un backup récent.

Réinstallez votre environnement

Il est maintenant temps pour vous de réinstaller votre blog. Téléchargez la dernière version de Wordpress, et déployez la sur votre machine locale. Téléchargez ensuite le thème que vous utilisiez et vos plugins favoris. Ou mieux, migrez sur Wordpress.com, je ne le répéterai jamais assez.

Répétez à présent les étapes précédentes, afin de vous assurez que rien de ce que vous venez d’installer n’a été corrompu.

Vous êtes presque prêt à remettre votre site en ligne. Il ne vous reste qu’une chose à vérifier : en plus du code infectant votre système, certains malware vont télécharger leur propre code sur Internet. En PHP, cela se fait en utilisant la fonction fopen, associée à une URL.

Dans votre terminal lancez la commande suivante :

$ find ./wp-content -type f -name "*.php" | xargs grep fopen

Si vous ne trouvez rien dans votre thème ou vos plugins, c’est que vous devez être à peu près propre.

Sécurisez un peu votre installation

Cette dernière partie s’adresse plus particulièrement aux personnes ayant la main sur la configuration de leur serveur, même si certains conseils sont applicables par tout le monde.

Utilisez les permissions les plus restrictives

Dans la très grande majorité des cas, votre Wordpress n’aura pas besoin des droits en écriture ni sur les fichiers, ni sur les répertoires. Commencez par supprimer les droits en écriture sur l’ensemble de votre Wordpress, vous rétablirez les droits nécessaires après au cas par cas.

$ find . -type d -exec chmod 550 '{}' \;
$ find . -type d -exec chmod 440 '{}' \;

Rétablissez ensuite les droits en écriture dans le répertoire des images et dans celui des plugins en ayant spécifiquement besoin, à commencer par wp-supercache.

Désactivez les .htaccess

Si vous avez la main sur la configuration de votre Apache, ajoutez la directive suivante dans votre vhost:

AllowOverride none

Cela vous obligera à y déplacer tout le contenu de votre .htaccess puisque celui-ci ne sera plus supporté, mais en contrepartie, vous vous prémunirez contre les infections par .htaccess.

Il y a un autre intérêt à désactiver le support des .htaccess : les performances. Vous éviterez à Apache de faire un scan de tous les sous répertoires auxquels ils s’appliquent chaque fois qu’un de vos visiteurs veut accéder à une de vos pages.

Désactivez l’URL fopen

Il ne vous reste plus qu’une chose à faire : désactiver le téléchargement de fichiers distants depuis votre Wordpress. Pour cela, éditez le fichier /etc/php.ini, et remplacez

allow_url_fopen = On

Par

allow_url_fopen = Off

Puis redémarrez votre Apache.

Et voilà les amis, c’est à peu près tout pour aujourd’hui. Évidemment, la meilleure manière de se prémunir des dangers de Wordpress, c’est encore de ne pas utiliser Wordpress, mais cela ne résoudra pas vos problèmes. Rappelez-vous juste que l’administration système est un vrai métier, et qu’en gérant vous-même l’hébergement de votre Wordpress (même sur des pages perso Free ou un mutualisé OVH), vous êtes responsable de ce qu’il vous arrive. Même si elle peut paraître moins souple, la solution Wordpress.com est peut-être pour vous la meilleure manière de dormir sur vos deux oreilles.

Perry the Platypus wants you to subscribe now! Even if you don't visit my site on a regular basis, you can get the latest posts delivered to you for free via Email: