
CLI de solo lectura para comprobar si un sitio WordPress está expuesto a WP2Shell (CVE-2026-63030 / CVE-2026-60137)
Una herramienta de línea de comandos que comprueba si un sitio WordPress está expuesto a WP2Shell (CVE-2026-63030 y CVE-2026-60137). Lee la versión de WordPress y la superficie de la API REST mediante peticiones de solo lectura y emite un veredicto. No explota nada.
[!WARNING] Solo para pruebas autorizadas. Úsalo en sitios que poseas o para los que tengas permiso por escrito. El autor (
DanSec) no se hace responsable del mal uso o de los daños.
WP2Shell encadena una inyección SQL (CVE-2026-60137) con una falla del procesador por lotes de REST
(CVE-2026-63030) a través del endpoint /wp-json/batch/v1, lo que permite la ejecución remota de
código sin autenticación en una instalación predeterminada de WordPress. Ambos CVE están en el
catálogo de vulnerabilidades explotadas conocidas de CISA.
| Rama | Vulnerable | Corregida en |
|---|---|---|
| 6.9.x | 6.9.0 a 6.9.4 | 6.9.5 |
| 7.0.x | 7.0.0 a 7.0.1 | 7.0.2 |
| 7.1 y posteriores | no afectada | n/a |
Requiere Python 3.8+.
pip install -r requirements.txt
Se requieren requests y rich. sublist3r es opcional (enumeración de subdominios).
Para una enumeración más amplia, instala subfinder
(un binario de Go, no pip) y pasa --subfinder.
# Comprobar un host
python wpScanner.py example.com --passive
# Enumerar subdominios de un dominio raíz y comprobar cada uno
python wpScanner.py example.com --subfinder --threads 8
Los resultados también se escriben en CSV. Cuando las fuentes de versión discrepan, la herramienta
clasifica según la más baja para evitar un falso todo claro. Una comprobación remota no puede ver un
parche retroportado que dejó la cadena de versión sin cambios, por lo que en hosts que controlas,
wp core version es la verdad absoluta.
Actualiza el núcleo a 6.9.5, 7.0.2 o 7.1+ (wp core update). Si aún no puedes parchear, bloquea
/wp-json/batch/v1 en tu cortafuegos y restringe el acceso anónimo a REST.
Proporcionado únicamente para uso autorizado y defensivo. Eres responsable de tener permiso para comprobar cualquier host al que lo apuntes.
| Opción | Descripción | Predeterminado |
|---|
-o, --output | Archivo de salida CSV | WP2Shell_output.csv |
--passive | Comprobar solo el host indicado, omitir enumeración | desactivado |
--subfinder | Añadir subfinder como fuente de subdominios | desactivado |
--threads | Trabajadores concurrentes | 1 |
--retries | Reintentos por host | 1 |
--rate-limit | Máx. peticiones/seg (un solo hilo, 0 = sin límite) | 0 |
| Veredicto | Significado |
|---|
VULNERABLE | Versión afectada y el endpoint por lotes es accesible. |
LIKELY_MITIGATED | Versión afectada, pero el endpoint por lotes parece bloqueado o REST está deshabilitado. |
PATCHED | Versión corregida, o anterior a las versiones afectadas. |
VERSION_UNKNOWN | WordPress encontrado, no se pudo leer la versión. |
NOT_WORDPRESS | Sin huella de WordPress. |
ERROR | Inaccesible o error de red. |