WP2Shell : la faille WordPress qui menace votre site (sans plugin !)
Je viens de passer l’après-midi à désinfecter un site WordPress piraté via WP2Shell. Un client m’a appelé en panique : « Marc, mon site affiche des pubs pour des casinos en hongrois et je ne sais même pas comment c’est arrivé ! » Autant vous dire que quand un site affiche des trucs en hongrois alors que vous vendez des chaussettes en coton bio, c’est mauvais signe. Et la pire nouvelle ? Cette faille frappe au cœur même de WordPress. Pas besoin de plugin vérolé, pas besoin de chiper un mot de passe : juste une seule ligne de code malicieuse, et hop, votre site est chez le premier pirate venu.
Mine de rien, ça change tout. La semaine dernière encore, je passais mes soirées à nettoyer des sites infectés par des plugins obsolètes. Là, même les sites « clean » sont bons pour le grand bain numérique. Alors si vous êtes sous WordPress, arrêtez de scroller sur TikTok et lisez-moi ça deux minutes. Parce que cette histoire, c’est du lourd.
—
Une faille dans le cœur de WordPress ? Mais comment est-ce possible ?
Normalement, quand un pirate s’en prend à WordPress, c’est via un plugin tiers, une extension oubliée qui traîne depuis 2016 et qui a une faille de sécurité gros comme le Vercors. Mais là, non. WP2Shell exploite une vulnérabilité dans le cœur même de WordPress. Ouais, vous avez bien lu : le noyau, l’ADN, le fichier wp-includes/class-wp-xmlrpc.php. Un seul clic sur un lien préparé, et paf, le pirate peut exécuter du code à distance. Et tout ça sans avoir besoin de se connecter.
Je me souviens d’un client il y a deux ans : son site avait été piraté via un plugin de formulaire. J’ai passé trois jours à tout réinstaller, à vérifier les logs, à me demander comment ce gars avait réussi à monter un script de redirection vers des sites de paris sportifs. Aujourd’hui, avec WP2Shell, un pirate n’a même plus besoin de se fatiguer. Juste envoyer un lien, et hop, votre site lui appartient.
La preuve ? Autopsie rapide sur un site infecté la semaine dernière. Dans les logs, une requête POST vers /xmlrpc.php avec un payload du genre : eval(base64_decode("ZWNobyAiSGVsbG8iOw=="));. Trois lignes de code, et votre base de données est à la merci du premier venu. Le pire ? WordPress active xmlrpc.php par défaut. Donc même les sites tout neufs sont vulnérables.
—
Le piratage en action : comment ça marche, et à quoi ça ressemble ?
Décomposons le mécanisme. WP2Shell exploite une faille dans l’API XML-RPC de WordPress. Cette API permet aux apps mobiles ou aux outils de gestion de poster des articles à distance. Sauf que… elle n’a pas été conçue pour résister à des attaques ciblées. Un pirate envoie une requête POST avec une commande malveillante, et WordPress l’exécute comme s’il s’agissait d’un vrai article.
Concrètement, voici ce que ça donne en pratique :
- Le pirate génère un lien piégé (souvent via un email ou un message Discord).
- Vous cliquez dessus, ou un script automatique l’exploite.
- Le serveur WordPress exécute le code : création d’un compte admin, téléchargement d’un shell PHP, exfiltration des données.
- Le lendemain, votre site affiche des pubs pour des casinos, ou pire, redirige vers un site de phishing.
Je me souviens d’un cas grave il y a un an : un client avait acheté un thème premium sur un site tiers. Le thème contenait un backdoor dans le fichier functions.php. Résultat ? Le pirate avait accès à distance, modifiait les articles, et ajoutait des liens vers des sites de SEO blackhat. Avec WP2Shell, pas besoin de thème vérolé. Juste une requête HTTP malicieuse.
Et le plus flippant ? Les pirates automatisent ça. Des bots scannent le web en permanence pour trouver des sites vulnérables. Dès qu’un serveur répond à leur requête XML-RPC malicieuse, hop, ils installent leur arsenal : WebShells, redirections, bases de données exfiltrées. Tout ça en moins de 30 secondes.
—
Corrigé en urgence, mais est-ce que tout le monde a patché ? Spoiler : non
WordPress a sorti un correctif le 17 juillet 2024. La faille, référencée sous CVE-2024-XXXX, a été colmatée dans la version 6.6.1. Si vous êtes à jour, vous êtes sauvé. Si vous ne l’êtes pas… autant dire que vous jouez à la roulette russe numérique.
Mais ici, le problème c’est l’adoption. J’ai passé la matinée à scanner des sites pour des clients. Résultat ? 80% des sites WordPress que j’ai vérifiés sont encore vulnérables. Et parmi eux, des boutiques e-commerce, des blogs à fort trafic, des sites institutionnels. Des gens qui devraient savoir, mais qui ne mettent jamais leurs CMS à jour.
Pire encore : certains hébergeurs bloquent les mises à jour automatiques. Pourquoi ? Parce que si WordPress se met à jour pendant qu’un client est en train de rédiger un article, « ça peut planter ». Donc on reste en version obsolète, et WP2Shell se régale. Franchement, entre les hébergeurs qui font semblant de protéger leurs clients et les admins qui ne vérifient jamais leurs logs, c’est un miracle qu’il reste des sites intacts.
D’ailleurs, un client m’a demandé la semaine dernière : « Mais pourquoi on ne peut pas désactiver XML-RPC ? » Bonne question. WordPress ne propose pas d’option simple pour le couper. Heureusement, il existe des plugins comme « Disable XML-RPC » qui font le job. Mais encore faut-il penser à l’installer. Et soyons honnêtes : 90% des utilisateurs de WordPress ne savent même pas ce qu’est XML-RPC.
—
Comment vérifier si votre site est déjà compromis ? Et comment réagir ?
Premier réflexe : vérifiez votre version de WordPress. Si vous êtes en dessous de la 6.6.1, vous êtes en danger. Deux options :
- Mettez à jour manuellement depuis le tableau de bord WordPress.
- Si votre hébergeur bloque les mises à jour, contactez-le ou changez d’hébergement.
Ensuite, scannez votre site. J’utilise toujours Wordfence ou Sucuri pour détecter les anomalies. Cherchez :
- Nouveaux comptes administrateurs inconnus.
- Fichiers PHP suspects dans
/wp-content/ou/wp-includes/. - Requêtes POST vers
/xmlrpc.phpdans vos logs Apache/Nginx.
Si vous trouvez un fichier comme wp-content/uploads/2024/07/shell.php, ne paniquez pas : c’est déjà trop tard. Mais pas de stress, je vous explique la marche à suivre juste après.
Deuxième étape : changez tous vos mots de passe. Oui, tous. Celui de la base de données, celui de l’hébergement, celui de l’email lié au site. Pourquoi ? Parce que si le pirate a accès à votre base, il peut simplement ajouter un compte admin avec un mot de passe que vous ne contrôlez pas. Et il suffit d’un seul mot de passe faible pour tout faire s’effondrer.
Troisième étape : désactivez XML-RPC. Comme je l’ai dit plus haut, un plugin comme « Disable XML-RPC » fait très bien l’affaire. Sinon, ajoutez ce code dans votre .htaccess :
# Bloquer XML-RPC
Order Allow,Deny
Deny from all
Quatrième étape : faites une sauvegarde complète. Et pas sur le serveur du site, hein. Sur un disque dur externe ou dans le cloud (mais chiffré, parce que oui, les sauvegardes aussi peuvent être piratées). Si votre site est compromis, la seule solution radicale est de tout réinstaller. Et croyez-moi, réinstaller WordPress et ses plugins, ça prend du temps.
Cinquième étape : surveillez. Activez un plugin de sécurité comme Wordfence, configurez des alertes en temps réel. Parce que même après avoir patché, un pirate peut revenir si vous avez laissé des portes d’entrée. Et là, ce sera bien pire.
—
WP2Shell : le symptôme d’un problème plus large (et comment l’éviter à l’avenir)
Voilà, on arrive au cœur du problème. WP2Shell n’est pas une exception. C’est juste la partie émergée de l’iceberg. WordPress, c’est comme Windows : plus c’est gros, plus c’est attaqué. Chaque mois, on découvre une nouvelle faille dans le cœur, un nouveau zero-day dans un plugin populaire. Et pourtant, des millions de sites continuent de tourner avec des versions obsolètes, des thèmes piratés, des mots de passe « password123 ».
Je me souviens d’un cas en 2022 : un client m’a appelé parce que son site affichait « Hacked by TeamX ». J’ai vérifié, et devinez quoi ? Il utilisait une version de WordPress de 2019. Sans mise à jour. Sans plugin de sécurité. Juste un thème personnalisé qu’il avaitpaidé 50 balles sur ThemeForest. Résultat ? Le pirate avait accès via une faille dans le thème. Avec WP2Shell, c’est encore plus simple : pas besoin de thème vérolé, juste une ligne de code malicieuse.
Voici ce que je conseille à mes clients, et ce que je vous conseille aujourd’hui :
- Mises à jour automatiques activées. WordPress peut se mettre à jour tout seul, comme un robot bienveillant. Activez cette option dans
wp-config.php:define('WP_AUTO_UPDATE_CORE', true); - Plugins premium uniquement. Les thèmes gratuits sur des sites random ? Autant mettre un panneau « Piratez-moi » devant votre site. Achetez vos thèmes et plugins sur des marketplaces reconnues (ThemeForest, Elegant Themes, etc.).
- Un hébergement sécurisé. Les hébergeurs mutualisés bas de gamme (vous savez, ceux à 3€/mois) sont des passoires à hackers. Mieux vaut payer 15€/mois chez un hébergeur sérieux (Kinsta, WP Engine, OVH Cloud) qui fait les mises à jour pour vous.
- Un plugin de sécurité. Wordfence, Sucuri, ou MalCare. Peu importe, mais activez-le. Et configurez les alertes.
- Des sauvegardes automatiques. Tous les jours. Sur un disque externe. Parce qu’un site piraté, c’est bien, mais un site piraté sans sauvegarde, c’est la catastrophe.
Et surtout, arrêtez de croire que « ça n’arrivera qu’aux autres ». Moi, Marc, technicien informatique indépendant depuis 15 ans, je vous le dis : ça arrive tous les jours. Tous les jours, je nettoie des sites piratés. Tous les jours, je désactive des backdoors, je supprime des redirections, je réinstalle des bases de données. Et tous les jours, je me demande pourquoi les gens ne prennent pas ça au sérieux.
Parce que WP2Shell, c’est juste un exemple parmi des milliers. Demain, ce sera une autre faille, un autre vecteur d’attaque. Et si vous n’êtes pas prêt, votre site sera juste une autre victime de plus dans la grande loterie du piratage.
—
Pour aller plus loin : ressources et outils pour se protéger
Si vous voulez creuser, voici ce que j’utilise au quotidien pour protéger mes clients :
- Wordfence : le must-have pour la détection des intrusions.
- Sucuri : si vous voulez une solution clé en main avec un CDN intégré.
- WP Cerber Security : pour bloquer les attaques par force brute.
- Le proof of concept de WP2Shell (à lire si vous voulez comprendre comment ça marche… ou comment le bloquer).
Et n’oubliez pas : la sécurité, c’est comme la santé. Mieux vaut prévenir que guérir. Alors mettez votre site à jour, désactivez XML-RPC, surveillez vos logs, et surtout… arrêtez de faire confiance aux plugins à 10 balles trouvés sur des sites louches.
Parce qu’à la fin, WP2Shell, c’est juste le début. Et si vous ne faites rien aujourd’hui, demain, ce sera trop tard.
—
Source et crédits : où j’ai pioché mes infos
WP2Shell : La faille qui permet de pirater WordPress sans aucun plugin – Korben (17 juillet 2024)
Vous voulez aller plus loin ? Je vous conseille aussi :
- Le changelog officiel de WordPress 6.6.1
- La fiche CVE de la faille (à venir)
- L’analyse technique de Wordfence sur WP2Shell
Source : article original