Et oui, malheureusement, ça peut arriver… :(

Replaçons le contexte : vendredi soir, 23 heures, Bastien m’annonce que je me suis fait hacker mon blog (merci à Jennifer de l’avoir découvert). En effet, on retrouve un script PHP sur la page d’abonnement, script qui n’a rien à faire là.

Hack WordPress

Le résultat sur ma page "Abonnez-vous"

Alors, que s’est-il réellement passé ? Véritable hackeur ? Petit farceur ? Script-kiddies ? Vous en saurez plus dans la suite de l’article ! ;)

Que faire quand vous découvrez que votre site/blog a été hacké ? Voici, en quelques étapes clés ma réaction.

1. Protéger le blog

C’est l’étape la plus importante : vous devez protéger vos données dès que possible.

En effet, tant que vous n’avez pas identifié et sécurisé la faille, quelqu’un peut à tout moment accéder à vos données, ou modifier vos fichiers pour créer des backdoors.

Un moyen simple, mais efficace : bloquer tous les accès, sauf votre adresse IP grâce à un fichier .htaccess à placer à la racine de votre blog. Les deux lignes à ajouter en début de fichier sont :

Allow from 123.123.123.123
Deny from all

Note : remplacez 123.123.123.123 par votre adresse IP publique.

2. Trouver la portée des dommages

J’ai pu constater dans l’interface d’administration de mon blog que les données du compte admin ont été changées. J’y ai notamment retrouvé ce mail à la place du mien :

yahiaouibilal@live.fr

Note : oui oui, vous pouvez le spammer ! :)

Si vous ne pouvez pas constater visuellement, un accès SSH à vos fichiers peut vous sauver la mise dans 99% des cas. Voici une commande qui permet de trouver tous les fichiers modifiés les dernières 48h :

woueb@ssh1:~$ find . -mtime -1 -print | more
./www/wp-content/themes/classic/style.css
./www/wp-content/themes/glossyblue-1-3/print.css
./www/wp-content/themes/glossyblue-1-3/simple_recent_comments.php
./www/wp-content/themes/glossyblue-1-3/abonnez-vous.php

Un petit tour dans ces fichiers : ils sont encodés en base 64, et effectivement, ont été modifiés pour afficher un script PHP sur la page « Abonnez-vous ».

3. Restaurer des données

Comment ça vous n’avez pas de backups ? Dans ce cas, je ne peux pas vous aider ! :(

4. Trouver la faille de sécurité

Si celle-ci n’est pas évidente, le mieux est de consulter les logs d’Apache. Dans les miens, j’ai retrouvé ceci :

1
83.233.168.63 www.woueb.net - [14/Nov/2008:03:11:48 +0100] "POST /wp-login.php?action=lostpassword HTTP/1.1" 302 20 "http://www.woueb.net/wp-login.php?action=lostpassword" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"
1
83.233.168.63 www.woueb.net - [14/Nov/2008:03:12:00 +0100] "GET /wp-login.php?action=rp&key=Iq6NN8gS4Jd2hJJwhD4H HTTP/1.1" 302 20 "http://bl117w.blu117.mail.live.com/mail/InboxLight.aspx?n=700632850" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"

Je suppose donc que quelqu’un a réussi à contourner le système de réinitialisation du mot de passe de WordPress ; par contre, je ne sais pas du tout comment !

5. Sécuriser le blog

Une fois que vous avez trouvé la faille, il ne vous reste qu’à la corriger : je reviendrais sur mes méthodes dans un autre article au courant de la semaine.

6. Remettre en production

Si jamais vous n’avez pas pu sécuriser votre blog, je déconseille fortement de le remettre en production pour éviter que quelqu’un fasse un doublé !

Il vaudra toujours mieux voir son blog inaccessible pendant 24h que de perdre des données. Dans tous les cas, ne jamais paniquer, et toujours protéger le blog en premier lieu !

Dans mon cas, je dirai que j’ai eu de la chance : je suis tombé sur des boulets personnes qui n’ont pas trop foutu le bordel puisqu’il n’ont jamais trouvé l’adresse de la page ! :D

En effet, pour la petite histoire, je pense qu’ils n’ont pas remarqué qu’ils avaient réussi à installer leur script :

  • ils ont essayé d’accéder la page « Abonnez-vous », mais sur la mauvaise adresse, comme en témoigne les logs d’Apache avec ces erreurs 404,
1
83.233.168.63 www.woueb.net - [14/Nov/2008:03:13:56 +0100] "GET /themes/glossyblue-1-3/abonnez-vous.php HTTP/1.1" 404 6213 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"
1
83.233.168.63 www.woueb.net - [14/Nov/2008:03:14:08 +0100] "GET /themes/abonnez-vous.php HTTP/1.1" 404 6226 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"
  • personne d’autre n’a accédé à cette page jusqu’à 23h le soir.

Vous pouvez éventuellement placer une étape 7, si jamais vous retrouvez le responsable (rare).

7. Lui casser les genoux

L’adresse IP ne vous donne pas beaucoup d’informations puisque ces personnes utilisent en général des serveurs proxy dans d’autres pays.

Autre chose ? Ah oui, je hais les script-kiddies ! :)

Et vous, ça vous est déjà arrivé ? Vous avez réagi comment ?