🔥 XSS2Shell — Scanner CVE-2026-64638 et boîte à outils PoC
Scanner de masse axé sur le comportement et générateur de PoC de qualité probante pour la chaîne XSS vers RCE en pré-authentification de WordPress, affectant plus de 500 millions de sites web.
Détection uniquement. Aucune weaponisation. Conçu pour les programmes de bug bounty et les blue teams.
Qu'est-ce que c'est ? • Démarrage rapide • Shodan Dorks • Utilisation • Matrice de décision • Détection • FAQ
Recherchez des instances WordPress potentiellement vulnérables sur Internet avant de scanner :
http.component:"wordpress" -http.title:"Just a moment"
Trouve les sites WordPress tout en excluant les pages en mode « I'm Under Attack » / protection anti-bot de Cloudflare qui bloqueront ou défieront les requêtes automatisées.
http.component:"wordpress" http.title:"Log In"
Ne renvoie que les pages de connexion WordPress — la surface d'attaque exacte de CVE-2026-64638.
http.component:"wordpress" "wp-content" "?ver=7.0" -"?ver=7.0.3"
Signale les instances WordPress 7.0.x sans le correctif 7.0.3 grâce à l'empreinte des versions des ressources.
http.component:"wordpress" http.html:"wp-login.php"
Capture les sites où wp-login.php est accessible mais n'est peut-être pas la page courante — couverture plus large.
http.component:"wordpress" -http.title:"Just a moment" -http.title:"Attention Required" -org:"Cloudflare"
Filtre agressif qui élimine la plupart des cibles derrière Cloudflare. À utiliser lors de scans à grande échelle avec --active — Cloudflare limitera le débit ou bloquera la requête de la sonde.
Astuce : exportez les résultats Shodan avec
shodan downloadet canalisez les noms d'hôtes directement versxss2shell_mass.py -i.
Le 7 août 2026, pwn.ai a divulgué CVE-2026-64638 (XSS2Shell) — une vulnérabilité critique de cross-site scripting avant authentification dans le cœur de WordPress qui s'enchaîne jusqu'à l'exécution de code à distance sur le serveur. [citation:pwn.ai blog]
Le bug exploite un désaccord entre l'analyseur syntaxique de PHP strip_tags() et celui de WordPress wp_kses_post() :
strip_tags() utilise < immédiatement suivi d'une lettre pour identifier les balises HTML. < area id=...> (avec un espace) est traité comme du texte — il survit.wp_kses_post() (KSES) reconnaît < area comme un élément <area> valide — et <area> est sur la liste blanche de KSES. [citation:pwn.ai blog]Un échec de connexion avec un nom d'utilisateur spécialement conçu < area id=ajaxurl href=/?rest_route=/&_method=GET&_jsonp=alert>... contourne les deux assainisseurs, est rendu comme DOM vivant sur la page de connexion, détourne le script user-profile.js de WordPress via le DOM clobbering et déclenche alert() dans l'origine WordPress — zéro clic, zéro authentification, zéro cookie requis. [citation:pwn.ai blog]
Escaladée jusqu'à un administrateur connecté ? La même primitive vole les mots de passe d'application via l'exécution de méthode de même origine (SOME), téléverse un plugin malveillant et exécute du PHP en tant que www-data. [citation:pwn.ai blog] [citation:hadrian.io blog]
Versions affectées : WordPress 6.4 à 7.0.2 — corrigé dans 7.0.3 avec des rétroportages vers 4.7+.
Impact : ~500 millions de sites web au moment de la divulgation. [citation:pwn.ai blog]
| Ressource | Lien |
|---|---|
| Divulgation originale (pwn.ai) | pwn.ai/blog/xss2shell |
| Analyse technique Hadrian | hadrian.io/blog/wordpress-xss2shell |
| Avis WordPress (GHSA) | GHSA-52p2-r8wf-jcrf |
| Recherche sur l'attaque SOME (2022) | pwn.ai/blog/bypass-csp-using-wordpress |
| Version WordPress 7.0.3 | wordpress.org/news/2026/08/wordpress-7-0-3-release |
Il s'agit d'un kit de détection uniquement. Il ne weaponise pas la vulnérabilité — il donne aux chercheurs en sécurité, aux chasseurs de bug bounty et aux blue teams tout ce qu'il faut pour :
« Une chaîne de version indique le niveau de correctif que le code devrait avoir.
Seul le comportement de l'assainisseur de la page de connexion indique si le bug se déclenche. »
Les hébergeurs gérés rétroportent silencieusement des correctifs de sécurité sans modifier les chaînes de version. Les plugins de durcissement de connexion remplacent entièrement le message d'erreur, supprimant le canal de réflexion même sur les versions non sécurisées. Les scanners basés uniquement sur la version produisent des faux positifs et des faux négatifs. Ce scanner envoie une seule sonde bénigne et classe le comportement réel de l'assainisseur.
git clone https://github.com/jakestone/xss2shell.git
cd xss2shell
pip install -r requirements.txt
# Passive — no probes sent to target, version + endpoint fingerprinting only
python3 xss2shell_mass.py -i domains.txt -o results
# Active — sends ONE benign failed-login per host (authorized assets only!)
python3 xss2shell_mass.py -i domains.txt -o results --active --workers 80
# Single target
python3 make_poc.py --target https://blog.example.com
# Batch from scanner output
python3 make_poc.py --from-results results.csv -o pocs/
Ouvrez le fichier .poc.html généré dans votre navigateur tout en enregistrant une vidéo → si alert() se déclenche, vous avez capturé une preuve de XSS avant authentification.
xss2shell_mass.py)usage: xss2shell_mass.py [-h] -i INPUT [-o OUTPUT]
[--active] [--workers WORKERS]
[--timeout TIMEOUT] [--quiet]