Vous l’avez peut-être lu récemment, WordPress est vulnérable depuis 4 ans car une faille se trouve dans le parsing des tags HTML des commentaires.
Les pirates ont bien sûr déjà mis au point des attaques sur les sites qui ont les commentaires activés et le core non mis à jour.
La preuve que se tenir à jour est important, et vous allez comprendre encore mieux après lecture de ce cas.
Énoncé
Mise en situation, vous avez un blog ou un site acceptant les commentaires sous WordPress 3.9.2, dernière version de la branche 3.9 à être diffusée sans faille connue. Et là, découverte d’une faille qui touche les versions 3.x, toutes les 3.x.
Vous êtes donc touchés, mais ne pouvez pas vous tenir à jour pour des raisons qui vous regardent. Oui, parfois on ne peut pas mettre à jour le site car nous n’en sommes pas directement responsables, ou le client est sous contrat etc etc Bref.
La faille touche donc les commentaires, et les pirates mettent au point des phrases malicieuses capables de les exploiter.
Problème
Le commentaire en question s’active dès votre passage de la souris sur un de ses liens. Une fois survolé, le script s’exécute, point.
Oui mais que peut me faire un script JavaScript lancé en front-end lorsque je visite mon site !? Me faire une belle popup “GOT U LOL” ? Oui, il peut, mais là, ce que j’ai découvert (merci à Laurent Olivares pour l’envoi du code) est bien pire.
Le script en question est capable de :
- Ajouter une iframe invisible dans la page,
- Charger l’éditeur de fichiers sur le plugin
hello.php
(ce plugin qui est installé par défaut), - Modifier le contenu de la textarea,
- Remplacer le code par une backdoor
- cliquer “Envoyer”, ce code va :
- Supprimer son propre commentaire en base de données afin d’effacer les traces,
- Remplacer le fichier
wp-comments-post.php
par du vide pour éviter que d’autres hackers ne le hack de nouveau, - Ajouter une ligne de code dans
wp-config.php
ethello.php
permettant l’exécution de n’importe quel autre code PHP quand bon lui semble,
Ce n’est “que” du JavaScript après tout !
Touché, coulé ?
Il y a bien sûr des prérequis qui doivent tous être présents afin que le hack se passe bien pour le pirate, ils sont :
- Être sous WordPress 3.x,
- Être connecté en administrateur sur le site au moment de votre visite du commentaire en front-end,
- Ne pas avoir ajouté la constante
DISALLOW_FILE_EDIT
ouDISALLOW_FILE_MODS
, - Avoir le JavaScript activé sur votre navigateur,
- Avoir le plugin Hello Dolly,
hello.php
présent (même non actif, ce qui rejoint la fin de mon article sur “Arrêtez de créer des index.php“), - Avoir les droits d’écriture ou de modification des droits sur
hello.php
etwp-config.php*
, - Avoir la ligne
$table_prefix
danswp-config.php
.
Attention pour le dernier point, si le fichier de configuration n’a pas été modifié, Hello Dolly l’a peut-être été lui !
Solution(s)
Pour éviter de se faire hacker par cette faille, vous pouvez adopter une ou plusieurs de ces solutions :
- Être sous WordPress 4.x,
- Ne pas être connecté en administrateur sur le site au moment de votre visite du commentaire en front-end,
- Avoir ajouté la constante
DISALLOW_FILE_EDIT
ouDISALLOW_FILE_MODS
, - Avoir le JavaScript désactivé sur votre navigateur,
- Avoir supprimé le plugin Hello Dolly,
hello.php
, - Interdire l’écriture ou la modification des droits sur
hello.php
etwp-config.php
,
Et vous, êtes-vous en 4.x ?