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
Herramientas/GitHubGitHub/yucaerin/cve-2026-5118
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubyucaerin/cve-2026-5118

CVE-2026-5118

Divi Form Builder <= 5.1.2 — Escalada de privilegios no autenticada mediante inyección de roles

Ver Repositorio
11hace 3 mesesAú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-5118 — Divi Form Builder <= 5.1.2 — Escalada de Privilegios No Autenticada mediante Inyección de Rol

🔥 Resumen de la Vulnerabilidad

El plugin de WordPress Divi Form Builder en versiones <= 5.1.2 es vulnerable a una escalada de privilegios no autenticada. Esta falla crítica permite a atacantes no autenticados crear una nueva cuenta de Administrador directamente a través de cualquier formulario de Divi Form Builder — incluidos formularios de contacto, formularios de cotización, formularios de boletín informativo o cualquier otro formulario habilitado para DFB.

La vulnerabilidad se origina en la función create_user() de FormSubmissionHandler.php, que acepta el parámetro role directamente de los datos POST enviados por el usuario sin la autorización adecuada ni validación mediante lista blanca. El plugin solo comprueba si el rol enviado existe en el sistema (p. ej., administrator es un rol válido de WordPress) — nunca comprueba si el rol es seguro para el registro público.

Descubrimiento Clave: El fb_nonce utilizado por Divi Form Builder es un nonce global compartido (wp_create_nonce('security')) — idéntico en todos los formularios del sitio. Además, form_type=register puede sobrescribirse mediante POST en el manejador AJAX compartido. Esto significa que cualquier formulario DFB (contacto, cotización, comentarios, etc.) puede ser utilizado como arma para desencadenar el registro de usuarios con asignación arbitraria de roles.

🔍 Plugin Afectado

  • Nombre del Plugin: Divi Form Builder
  • Versión Afectada: <= 5.1.2
  • Tipo de Vulnerabilidad: Escalada de Privilegios No Autenticada mediante Inyección de Rol
  • ID CVE: CVE-2026-5118
  • Puntuación CVSS: 9.8 (Crítica)
  • CWE: CWE-266 — Asignación Incorrecta de Privilegios
  • Impacto: Toma Completa del Sitio — Creación de Cuenta de Administrador

🧨 Qué Pueden Hacer los Atacantes

🧪 Características del Exploit

  • 🔓 No se requiere autenticación
  • 📝 Funciona a través de CUALQUIER formulario DFB — contacto, cotización, boletín, comentarios, etc.
  • 🎯 Apunta al endpoint AJAX /wp-admin/admin-ajax.php?action=de_fb_ajax_submit_ajax_handler
  • 🧠 Inyección de rol — envía role=administrator junto con los campos normales del formulario
  • 🌐 Soporte de escaneo masivo — escáner multiobjetivo con hilos y autodetección
  • 📄 Resultados guardados en result.txt

🧠 Código Vulnerable

root@kitploit:~
// includes/shared/handlers/FormSubmissionHandler.php ~ line 2250
$role = isset($form_data['role']) ? sanitize_text_field($form_data['role']) : 'subscriber';

// ~ line 2278 — ONLY checks if role EXISTS, not if it is SAFE
$roles_obj = function_exists('wp_roles') ? wp_roles() : null;
if ($roles_obj && is_object($roles_obj) && is_array($roles_obj->roles) && !isset($roles_obj->roles[$role])) {
    $role = 'subscriber';  // ← "administrator" EXISTS, so this check PASSES
}

// ~ line 2301 — Directly applies the injected role
$user = new WP_User($user_id);
$user->set_role($role);  // ← PRIVILEGE ESCALATION!

🚀 Uso

Objetivo Único

root@kitploit:~
python3 exploit.py -t http://target.com
python3 exploit.py -t https://target.com -u hacker -p Pass123! -e [email protected]

Escaneo Masivo (Lista sin http/https)

Crea targets.txt:

root@kitploit:~
target1.com
target2.com:8080
192.168.1.50
subdomain.target.com
root@kitploit:~
python3 exploit.py -l targets.txt -T 20

Opciones

🛠 Recomendaciones de Corrección

root@kitploit:~
// SECURE: Allowlist only safe roles for public registration
$allowed_registration_roles = array('subscriber', 'contributor');
if (!in_array($role, $allowed_registration_roles, true)) {
    $role = 'subscriber';  // ← Reject ALL dangerous roles
}
  • Elimina por completo la entrada oculta role de los formularios del frontend
  • Añade comprobaciones de capacidad current_user_can('create_users') para roles privilegiados
  • Implementa una verificación estricta de nonce con alcance por formulario en lugar de global
  • Añade límite de velocidad en el endpoint AJAX de registro

🧠 Investigador

  • Créditos: 0xd4rk5id3

📚 Referencias

  • Aviso de Wordfence
  • Repositorio Original del CVE

🔒 Aviso Legal:

Esta información se proporciona únicamente con fines educativos y de pruebas de penetración autorizadas. La explotación no autorizada de sistemas informáticos es ilegal y poco ética. Obtén siempre permiso explícito por escrito antes de probar cualquier objetivo que no sea de tu propiedad.

Descargar herramienta
CapacidadImpacto
🔑 Crear cuenta de administrador sin iniciar sesiónToma Completa del Sitio
📦 Acceder a los datos de clientes de WooCommerceFuga de Datos
💉 Editar archivos PHP de plugins/temasEjecución Remota de Código
🕳️ Instalar puertas traseras ocultasAcceso Persistente
👥 Ver todos los datos de los usuariosViolación de Privacidad
FlagDescripción
-t, --targetURL de un único objetivo
-l, --listArchivo con la lista de objetivos (uno por línea, http/https opcional)
-T, --threadsHilos para el escaneo masivo (por defecto: 10)
-o, --outputArchivo de salida para los resultados (por defecto: result.txt)
-u, --usernameNombre de usuario personalizado para la nueva cuenta
-p, --passwordContraseña personalizada para la nueva cuenta
-e, --emailCorreo electrónico personalizado para la nueva cuenta
-v, --verboseSalida de depuración detallada
--no-confirmOmitir la solicitud de confirmación de permisos