
Comprobador de exposición no intrusivo para la cadena de RCE pre-autenticación wp2shell de WordPress (CVE-2026-63030 / CVE-2026-60137).
Comprobador de exposición no intrusivo para la cadena RCE de preautenticación "wp2shell" de WordPress (CVE-2026-63030 + CVE-2026-60137).
⚠️ Solo para uso autorizado. Ejecuta esto únicamente contra instancias de WordPress que sean tuyas o para las que tengas permiso explícito para realizar pruebas. Es una ayuda de triaje, no un exploit. Escanear sistemas sin permiso puede ser ilegal.
Dada una URL, wp2shell-check:
generator de la página de inicio (pasivo).?rest_route=/batch/v1) para comprobar si
la ruta de lotes REST es accesible.Está diseñado para un triaje rápido de flotas: ¿cuáles de mis sitios están en una versión afectada con REST accesible?
Dos fallos encadenados del núcleo de WordPress, divulgados con un lanzamiento de emergencia el 2026-07-17:
| CVE | Tipo | Versiones afectadas |
|---|---|---|
| CVE-2026-63030 | Confusión de rutas de lotes en la API REST (habilitador de RCE) | 6.9.0–6.9.4, 7.0.0–7.0.1 |
| CVE-2026-60137 | Inyección SQL en WP_Query author__not_in | 6.8.0 y posteriores (6.8.0–6.8.5 = banda solo SQLi) |
Encadenados, permiten que un atacante no autenticado alcance la inyección SQL y escale a ejecución remota de código en una instalación predeterminada — sin plugins, sin inicio de sesión. La mitad de RCE solo aplica cuando no se está utilizando una caché de objetos persistente.
Corregido en: 6.8.6 (solo SQLi), 6.9.5, 7.0.2 (y 7.1 Beta 2+). WordPress habilitó actualizaciones automáticas forzadas para los sitios afectados — verifica que la actualización realmente se aplicó.
Reportado por Adam Kues (Assetnote / Searchlight Cyber) a través del programa HackerOne de WordPress.
Requiere Python 3.9+ y requests.
# con uv
uv pip install requests
# o con pip normal
pip install requests
python wp2shell.py https://target.example
Ejemplo de salida:
https://target.example: VULNERABLE (RCE) [6.9.3]
generator suele eliminarse o falsearse; una versión ausente
produce wordpress not detected, no una garantía de que el sitio sea seguro o no sea WordPress./wp-json/batch/v1 y ?rest_route=/batch/v1 en tu WAF,
o restringe el acceso anónimo a la API REST.Se proporciona tal cual, únicamente para pruebas de seguridad autorizadas y fines educativos. Eres el único responsable del uso que le des.
| Veredicto | Significado |
|---|
VULNERABLE (RCE) / VULNERABLE (SQLi) | Versión afectada y ruta de lotes REST accesible → expuesto en una instalación predeterminada. Véase Limitaciones. |
version-affected (...), route unconfirmed | La versión está en una banda afectada, pero la ruta de lotes REST no respondió como se esperaba. |
not affected | WordPress detectado, versión fuera de las bandas afectadas. |
wordpress not detected | No se encontró versión (REST bloqueada, etiqueta generator eliminada, o no es WordPress). |
unreachable | El host no respondió. |