
Prueba de concepto que explota XSS pre-autenticación de WordPress para lograr RCE mediante DOM clobbering, abuso de la API REST y carga de plugins maliciosos para ejecución en el lado del servidor. Solo pruebas autorizadas.
Espejo de distribución de HackSpeak. Este repositorio es un espejo de distribución del PoC educativo XSS2Shell (CVE-2026-64638) publicado por WordSec, con el código idéntico al upstream; el upstream tiene Licencia MIT, Copyright (c) 2026 WordSec.
⚠️ Solo para investigación de seguridad y pruebas autorizadas; ejecútelo únicamente contra sitios WordPress propios o con autorización escrita para su evaluación; el PoC genera y limpia publicaciones temporales, no lo utilice contra administradores de terceros ni sistemas de producción.
XSS2Shell (CVE-2026-64638) es un XSS reflejado de preautenticación en la página de inicio de sesión de WordPress (wp-login.php) que puede escalarse mediante una cadena completa hasta ejecución de código PHP en el servidor (RCE).
strip_tags() y WordPress KSES (wp_kses_post()) — al insertar un espacio entre < y el nombre de la etiqueta (como < area), el primero lo conserva como texto plano, mientras que el segundo lo analiza como un elemento HTML válido (<area>/<div>/<button> están todos en la lista de permitidos);ajaxurl → el user-profile.js incluido en la página de inicio de sesión dispara automáticamente un POST jQuery → REST API JSONP (_jsonp) → Same Origin Method Execution (SOME, Paulos Yibelo 2022) → clic entre ventanas en el botón de autorización de Application Password del administrador → robo de credenciales de API → publicación de una página que contiene <script> → subida de un ZIP de plugin malicioso → ejecución directa de PHP (sin necesidad de activación);python3 xss2shell_poc.py -t http://wordpress.test --lhost 192.168.1.100 --lport 8080 -c "whoami"
Dependencias: Python 3.7+, cero paquetes de terceros; se requiere que un administrador inicie sesión en el sitio objetivo y abra la URL del atacante (una interacción).
| Parámetro | Descripción |
|---|
-t, --target | Dirección base de WordPress (incluye http/https, normaliza automáticamente la barra final) |
-c, --command | Comando a ejecutar una vez que el shell esté listo |
--lhost / --lport | Dirección/puerto de escucha (lport 0 = aleatorio) |
--keep | Conserva la página de publicación temporal (por defecto se limpia) |