Il s'agit d'une republication. La version originale et toujours à jour se trouve ici : https://own2pwn.fr/articles/appsec/wp2shell-wordpress-rce (elle intègre également un vérificateur d'exposition en direct et non intrusif).
Une demande. UNPOSTEà/wp-json/batch/v1, un corps JSON légèrement tordu, et le serveur répond un 200 OK parfaitement ordinaire. Trente secondes plus tard, il y a un autre compte administrateur dans la base de données, un plugin inconnu déposé souswp-content/plugins/, et un shell qui répond àidentifiant. Pas de mot de passe. Aucun plugin tiers vulnérable. Pas de thème exotique. Juste WordPress, dans son installation par défaut. Il s’agit de wp2shell, le bug sur lequel les équipes de sécurité se sont démenées le 17 juillet 2026.
Note légale, lisez ceci en premier. Cet article documente et défend. Nous décortiquons le véritable mécanisme de wp2shell afin que vous puissiez le détecter et le réparer. Nous ne publions aucune charge utile prête à l'emploi (les chercheurs originaux ont délibérément retenu les leurs, nous faisons de même). Tester cette faille sur un WordPress que vous ne possédez pas et que vous n’êtes pas mandaté d’auditer est un crime. Tout ce qui suit suppose un pentest autorisé ou un laboratoire que vous possédez.
Malgré son nom, wp2shell n'est pas un plugin, ni encore un autre outil « administrateur vers shell » qui suppose que vous disposez déjà d'informations d'identification. C'est le nom donné par Searchlight Cyber (via son unité Assetnote) à un RCE pré-authentifié dans le noyau WordPress, divulgué le 17 juillet 2026. La pré-authentification signifie exactement ce qu'elle dit : un attaquant anonyme, sans aucun compte, obtient l'exécution de code sur le serveur.
Techniquement, wp2shell n’est pas une faille mais une chaîne de deux bugs principaux de WordPress :
/wp-json/batch/v1). C'est le lien qui transforme un bug « théorique » en un RCE exploitable et sans compte.WP_Queryla gestion deauteur__not_in.Pris séparément, ces deux-là sont ennuyeux. Enchaînés, ils offrent un RCE complet sur une installation d'origine sans composant tiers. La confusion d'itinéraire a été découverte par Adam Kues (Assetnote / Searchlight Cyber) et signalée via le programme HackerOne de WordPress ; l'injection SQL a été rapportée en parallèle par les chercheurs TF1T, dtro et haongo. WordPress a répondu en poussant de force les mises à jour automatiques des installations concernées.
La portée exacte de la version :
ÉTAT DE BRANCHE FIXÉ DANS ------------ ----------------------------------------- ------------ < 6.8.0 non vulnérable à la chaîne -- 6.8.0 - 6.8.5 Injection SQL uniquement (pas de RCE) 6.8.6 6.9.0 - 6.9.4 Pré-autorisation complète RCE 6.9.5 7.0.0 - 7.0.1 Pré-autorisation complète RCE 7.0.2 7.1 bêta FULL pré-autorisation RCE 7.1 bêta 2La branche 6.8 n'est touchée que par l'injection SQL ; le RCE complet commence à 6.9.0. Corrigé dans 6.8.6 / 6.9.5 / 7.0.2.
Le point de terminaison batch de l'API REST existe pour regrouper plusieurs appels en une seule requête HTTP : vous envoyez un tableau de sous-requêtes, WordPress les traite les unes après les autres et renvoie un tableau de réponses. Pratique pour un front-end qui souhaite créer dix...
[Courte citation de 8% de l'article original]