Le week-end dernier, j’ai eu la très mauvaise surprise de me rendre compte que mon site s’était fait piraté. Une alerte s’affichait indiquant que le site n’était pas sûr et qu’il contenait un code malicieux. Passé le premier moment de panique (mon site est quand même pas mal en bordel avec des pages codées par moi, des CMS externes, et toutes sortent de dossiers, donc difficile de cerner le problème rapidement) j’ai commencé mes investigations. Je me suis ainsi rendu compte que certains de mes fichiers .htaccess contenaient (bien planqué en fin de fichier) un gentil code type :
ErrorDocument 404 http://statsetting.in/acrus/index.php
Ou encore :
RewriteCond %{HTTP_REFERER} ^.*(google|ask|yahoo|baidu|youtube|wikipedia|…
Ce code se tapait l’incruste dans mes .htaccess sans mon autorisation et il avait la sale manie de ré-écrire les url depuis les moteurs de recherche empêchant les gens de tomber sur le site en les redirigeant vers des pages d’erreur. J’avoue avoir trouvé ça un peu gonflant, pas mortellement grave et dangereux pour mes visiteurs mais assez chiant quand même.
J’ai nettoyé les fichiers, demandé une ré-évaluation de la dangerosité par google et l’alerte a été levée. Malheureusement je me suis rendu compte que la semaine suivante les visites sur mon site avaient très largement diminuées pour se limiter à la portion congrue des entrées directes. Ça m’a mis la puce à l’oreille. J’ai pris le temps ce week-end de pousser un peu plus loin mon investigations et je me suis rendu compte que mes fichiers .htaccess étaient toujours infectées (en même temps je n’avais pas eu le temps de rechercher la faille de sécurité donc il fallait s’y attendre).
En fait, il s’agit d’une faille majeure de Zenphoto découverte le 11 novembre et très largement exploitée depuis. Il faut donc mettre en oeuvre rapidement les correctifs – mise à jour de Zenphoto, suppression du fichier incriminé qui permet aux script kiddies de modifier les fichiers sur le serveur :
zp-core/zp-extensions/tiny_mce/plugins/ajaxfilemanager
Il y a plus de détail sur http://www.zenphoto.org/news/security-alert-part-2.
Toujours est-il qu’avant de me rendre compte que mon problème venait de là, j’ai flippé et donc, fait quelques vérifications de base :
- scan antivirus fin sur mon pc,
- vérification des logs ftp pour m’assurer que j’étais bien le seul à accéder à mon serveur (c’est le cas…ouf)
- récupérer tous mes fichier index et autre pour voir s’ils n’étaient pas eux aussi modifiées
- ne pas se rendre compte que les permissions sur le fichier .htaccess sont changées lorsque le script agit dessus et qu’il est donc impossible de simplement le remplacer. Il faut bien le supprimer et mettre un nouveau .htaccess propre (sinon on tourne en rond pendant deux heures en paniquant parce qu’on ne comprend pas comment ils font pour modifier ce maudis .htaccess instantanément);
- ne pas travailler avec le mode « retour à ligne automatique activé ». Pour la MAJ de Zenphoto, il faut désactiver register global et magic quote et passer en php 5. Sous OVH mutualisé on n’a pas accés au php.ini et il faut passer par un SetEnv dans le .htaccess type :
SetEnv REGISTER_GLOBALS 0
SetEnv MAGIC_QUOTES 0
SetEnv PHP_VER 5sauf que si comme moi votre bloc-note écris SetEnv REGISTER_GLOBALS 0SetEnv MAGIC_QUOTES 0SetEnv PHP_VER 5 mais qu’il affiche les sauts de ligne, vous avez un magnifique 500 internal serveur error. Et vous vous cassez la tête à comprendre pourquoi;
- Si après la MAJ de Zenphoto vous avez une alerte en haut de la gallerie à propos d’une « deprecated fonction », vous pouvez la masquer en activant le plugin « deprecated function » puis en allant dans les options du plugin pour désactiver l’alerte correspondante en attendant de mettre à jour votre thème.
Bon voilà, ce billet était tout à la fois un défouloir, un pense-bête et je l’espère une aide pour des gens qui se trouveraient dans la même situation.
Laisser un commentaire