Le site piraté…

Petite anecdote… je suis en train de tester un script trouvé sur internet qui permet de récupérer des milliers d’adresses emails automatiquement sur internet. Un crawler simple mais efficace qui permet avec quelques regex de parser le contenu d’une page html, de reconnaître les adresses email qui s’y trouvent, de les enregistrer dans une table, puis de récupérer les autres liens hypertexte pointant vers d’autres pages internet, de le mettre dans une table permettant de faire remplir la liste des prochaines url à traiter. Le script s’auto-nourrit en quelque sorte.

Bon, comme souvent sur internet, le script fonctionne mais nécessite quelques adaptations pour réussir à faire ce que je souhaite. Dont acte, je prends le script et pour des raisons pratiques, je le mets chez mon hébergeur dans le dossier listant tous les fichiers wordpress nécessaires au bon fonctionnement de ce site. Je le mets plus exactement à la racine de ce site (cela me permet de tester quelques fonctions en appelant l’url, chose que je peux faire en ligne de commande mais bon).

Je mets le crawler en place, commence à procéder aux nombreuses modifications, réalise les premiers tests pour vérifier que cela fonctionne -activation du mode débugage maison :) – pour finalement me rendre compte qu’en tant que padawan codeur/bricoleur après quelques heures de travail, j’arrive à faire tourner le script, ce qui m’apprend au passage à comprendre le fonctionnement de quelques nouvelles fonctions sous php.

Le code est lancé, mais comme il a tendance à se bloquer parfois (pb d’url  non crawlables et autres avaries dans le genre), je décide de mettre en place rapidement un script cette fois-ci écrit en bash permettant de relancer automatiquement le script en cas de plantage.

Le script fonctionne jusque là tout va bien. Je le lance dans une commande Screen sous linux permettant de continuer les actions même après la fermeture de ma session sur le serveur.

2 jours plus tard, au moment de la relève des compteurs, surprise, le script a cessé de fonctionner. Je retourne après quelques moments sur mon site internet et là je découvre que la plupart des photos ont été désactivées: plus de logo, photos d’illustration manquantes… l’horreur. Je check ma boîte mail et j’ai reçu un message de mon herbergeur, 1&1, m’indiquant que mon site avait été attaqué. Bon jusque là je me dis qu’il fallait bien que cela arrive un jour même si je mets à jour régulièrement tous les plugins, que j’attends chaque nouvelle release de la plateforme wordpress comme le messie et que le site est aussitôt mis à jour.

Bref, photos désactivées, je consulte dans le détail le rapport d’attaque, les fichiers qui ont morflé, je change les logins, mots de passe, je passe du temps à updater les scripts, à supprimer les plugins pour re-télécharger une version clean… et j’en profite pour aller sur le serveur (merci la connexion ssh) pour réactiver toutes les photos dont les droits avaient été changés automatiquement pour mesure de sécurité…

Quelques jours passent, je relance mon autre script de crawl et là, devinez-quoi, nouvelle attaque une journée plus tard. Deux fois en moins d’une semaine, ça commence à bien faire. On recommence avec le lot de .jpg et autres .png désactivés, les fichiers corrompus…encore une fois attaqué alors que toutes les précautions ont été prises. D’un coup je commence à comprendre. Le fait d’avoir mis mon script automatique dans un repertoire wordpress et donc de provoquer une activité type d’un bot fait penser à mon hébergeur que mon site a été piraté et que le pirate s’en sert pour lancer des scripts automatiques…sauf que dans ce cas, le pirate c’est moi.

Je réactive le tout (encore une fois, et j’espère la dernière!) puis je change d’emplacement mes scripts de crawl chez mon hébergeur. Quelques jours plus tard, rien, plus de notification d’attaque et les scripts tournent parfaitement.

Merci donc à 1&1 d’avoir mis en place ces règles de sécurité…et de m’avoir causé quelques frayeurs! Toujours intéressant de voir ce genre de règles de sécurité entrer en action. La prochaine fois, on ne m’y reprendra pas…