Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-92084-beaver-builder-shortcode-poc — Laboratorio de validación con Docker y PoC en Python para CVE-2026-92084, una vulnerabilidad de ejecución de shortcode sin autenticación en Beaver Builder Lite <= 2.11.0.5, con un control parcheado y una pantalla de nuclei. | Kitploit
Herramientas/GitHubGitHub/hassham1/cve-2026-92084-beaver-builder-shortcode-poc
Escáneres de VulnerabilidadesAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebLabs y Práctica
GitHubhassham1/cve-2026-92084-beaver-builder-shortcode-poc

CVE-2026-92084-beaver-builder-shortcode-poc

Laboratorio de validación con Docker y PoC en Python para CVE-2026-92084, una vulnerabilidad de ejecución de shortcode sin autenticación en Beaver Builder Lite <= 2.11.0.5, con un control parcheado y una pantalla de nuclei.

Ver Repositorio
hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-92084 - Laboratorio de validación de ejecución arbitraria de shortcodes en Beaver Builder

Material de investigación de seguridad para reproducir y validar CVE-2026-92084: Beaver Builder (Lite) <= 2.11.0.5 ejecuta shortcodes arbitrarios registrados de WordPress insertados en la salida de widgets renderizada por el módulo Sidebar, mediante la pasada do_shortcode() a nivel de diseño del builder.

  • Afectado: Beaver Builder Lite <= 2.11.0.5
  • Corregido: 2.11.0.6 (el módulo Sidebar establece 'renders_shortcodes' => false; la maquinaria de codificación de corchetes en sí se distribuyó antes y no ha cambiado)
  • CVSS 3.1: 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) - CWE-94
  • Autenticación: ninguna, pero el comentario del atacante debe superar el umbral de aprobación de comentarios del sitio (autoaprobación o acción del moderador) antes de que el widget Recent Comments exponga el shortcode insertado

Úsese solo en sistemas de su propiedad o para los que tenga autorización explícita de prueba. El PoC publica un comentario cuyo nombre de autor contiene un shortcode marcador registrado en el laboratorio. No se utiliza ningún shortcode destructivo y no se escribe nada en disco.

Veredicto

Estado: demostrado en el laboratorio proporcionado.

Beaver Builder Lite 2.11.0.5 (WordPress 7.1.2, página del builder con un módulo Sidebar

  • widget Recent Comments):
comment posted : author name "[cve92084]" on the builder page
result         : rendered page contains the marker shortcode's server-side
                 output "CVE92084-SHORTCODE-FIRED"
                 (executed by the layout-wide do_shortcode() pass)
2.11.0.6       : brackets entity-encoded, marker absent (patched negative
                 control; page shows the literal text [cve92084])

Esto demuestra la ejecución del lado del servidor de un shortcode registrado arbitrario con la salida incrustada en la página, revelada a cada visitante. No demuestra RCE; el impacto depende de qué shortcodes estén registrados en el objetivo (exposición de post/meta, formularios, shortcodes proporcionados por plugins con efectos secundarios).

Causa raíz (verificada contra la corrección de 2.11.0.6)

El sink. FLBuilder::render_content() ejecuta el layout del builder ensamblado a través de una pasada amplia de shortcodes antes de imprimirlo:

// classes/class-fl-builder.php:2139, Beaver Builder Lite 2.11.0.5
$content = do_shortcode( $content );

El punto de inyección. El módulo Sidebar renderiza la salida de los widgets de una barra lateral de WordPress tal cual en ese diseño:

// modules/sidebar/includes/frontend.php:4, 2.11.0.5
if ( ! dynamic_sidebar( $settings->sidebar ) ) {

El contenido del widget son datos de usuario no confiables: el widget principal Recent Comments muestra get_comment_author_link(), es decir, cualquier nombre que haya proporcionado un comentarista (no autenticado). FLBuilder::double_escape_shortcodes() solo vuelve a poner entre corchetes la forma escapada [[x]], por lo que un [cve92084] sin formato pasa y la pasada de do_shortcode() lo ejecuta.

La corrección. 2.11.0.5 ya incluye el mecanismo de neutralización: FLBuilderModule::$renders_shortcodes = true (class-fl-builder-module.php:143) y FLBuilder::escape_foreign_module_shortcodes() enganchado a ambos filtros de renderizado de módulos (class-fl-builder.php:109-110, aplicado en 3240), que codifica como entidades los corchetes de cualquier shortcode registrado en la salida del módulo. El módulo Sidebar simplemente nunca se excluyó. El único cambio funcional en 2.11.0.6 es la exclusión:

// modules/sidebar/sidebar.php, 2.11.0.6
'renders_shortcodes' => false,
// dynamic_sidebar() renders third-party widget output that can contain
// untrusted user data (e.g. a comment author name via the core Recent
// Comments widget); do not run its shortcodes.

Flujo de explotación (según validación)

  1. Apunte a cualquier página del builder cuyo layout contenga el módulo Sidebar sobre una barra lateral que muestre texto de widget controlable por el atacante (el laboratorio: el widget core Recent Comments; en objetivos reales, cualquier widget que refleje datos del usuario).
  2. Envíe un comentario por POST a /wp-comments-post.php con el payload de shortcode como nombre del autor del comentario.
  3. El comentario supera el umbral de aprobación del sitio (el laboratorio lo aprueba automáticamente; en objetivos reales: aprobación automática o un moderador) y el widget Recent Comments comienza a renderizar el nombre del autor.
  4. En el siguiente y en cada posterior renderizado de la página del builder, la salida del widget queda dentro del layout y la pasada de do_shortcode() ejecuta el payload. Su salida reemplaza el nombre del autor, visible para todos los visitantes.

Inicio rápido

Requisitos: Docker con Compose v2, Python 3.10+ en el host.

./lab verify

Construye el laboratorio 2.11.0.5, requiere que el marcador se active, luego construye el laboratorio 2.11.0.6 y requiere su ausencia. Elimina todo con ./lab reset.

Evidencia esperada

Control vulnerable:

[!!!] SHORTCODE EXECUTION CONFIRMED
  posted  : comment author '[cve92084]' on page 5
  evidence: 'CVE92084-SHORTCODE-FIRED' present in the rendered builder page
  context : ...<a href="https://github.com/hassham1/cve-2026-92084-beaver-builder-shortcode-poc/blob/main/..." class="url">CVE92084-SHORTCODE-FIRED</a>...
RESULT: VULNERABLE CONTROL CONFIRMED

Control parcheado:

[=] shortcode text present but NOT executed: brackets entity-encoded
    (patched >= 2.11.0.6 behavior: escape_foreign_shortcodes).
RESULT: PATCHED CONTROL CONFIRMED

Un marcador en la página solo dentro del comentario mostrado (texto sin procesar) no se acepta como prueba; el marcador debe aparecer como la salida ejecutada del shortcode.

Ciclo de vida manual del laboratorio

./lab start vulnerable   # 2.11.0.5 lab on http://127.0.0.1:9488
./lab test               # assert marker fires
./lab start patched      # 2.11.0.6 lab
./lab test               # assert absence
./lab status
./lab reset

Ejecute el PoC manualmente (loopback por defecto; los objetivos externos autorizados requieren la anulación explícita):

python3 poc/poc_cve_2026_92084.py --url http://127.0.0.1:9488 --post-id 5
python3 poc/poc_cve_2026_92084.py --url https://target.example \
  --post-id 5 --allow-authorized-non-loopback [--insecure]

La plantilla de nuclei (nuclei/cve-2026-92084.yaml) es solo un cribado de versión (etiqueta estable de readme.txt <= 2.11.0.5). La cadena de comportamiento requiere el envío de un comentario más una transición de aprobación, lo cual no es práctico de expresar en nuclei; el PoC en Python realiza el flujo completo.

Versiones afectadas y probadas

VersiónEvaluación
Beaver Builder Lite 2.11.0.5Ejecución de shortcode reproducida de extremo a extremo
Beaver Builder Lite 2.11.0.6Control negativo parcheado reproducido
Beaver Builder Lite <= 2.11.0.4Afectada según el aviso; no probada individualmente
Beaver Builder (Pro/Agency)No probada - el alcance del aviso es el plugin Lite

Estructura del repositorio

.
├── .github/workflows/validate.yml
├── .gitignore
├── LICENSE
├── README.md
├── SECURITY.md
├── docker-compose.yml
├── lab
├── nuclei/
│   └── cve-2026-92084.yaml
├── poc/
│   └── poc_cve_2026_92084.py
└── provision/
    └── install.php

Sin confirmar: assets/ (zips de plugins), .lab-state, __pycache__/.

Límites de validación

Descargar herramienta