
CVE-2026-27944 - Nginx UI Descarga y descifrado de copias de seguridad sin autenticación
CVE-2026-27944 - Descarga y Descifrado de Copia de Seguridad No Autenticado en Nginx UI
https://img.shields.io/badge/python-3.6+-blue.svg
https://img.shields.io/badge/license-MIT-green
https://img.shields.io/badge/PoC-Exploit-red
Un exploit de prueba de concepto (PoC) para CVE‑2026‑27944, una vulnerabilidad crítica en Nginx UI ≤ 2.3.2 que permite a cualquier atacante no autenticado descargar y descifrar el archivo de copia de seguridad completo del servidor a través del endpoint /api/backup.
La copia de seguridad está cifrada con AES‑256, pero la clave de cifrado y el Vector de Inicialización (IV) se exponen en texto plano en la cabecera HTTP de respuesta X‑Backup‑Security, lo que permite un descifrado inmediato.
📦 Características
info – Muestra información detallada sobre la vulnerabilidad (descripción, causa raíz, impacto).
scan – Comprobación ligera de si un objetivo es vulnerable (envía una petición HEAD y busca la cabecera X‑Backup‑Security).
exploit – Descarga la copia de seguridad cifrada, extrae la clave/IV de la cabecera, descifra los datos y los guarda en un archivo.
🚨Impacto
Si se explota, un atacante puede obtener:
Credenciales de usuario y tokens de sesión (database.db)
Secretos de aplicación y claves API (app.ini)
Claves privadas y certificados SSL (server.key, server.cert)
Configuración completa de Nginx (nginx.conf)
Claves TLS de todos los dominios alojados (directorio ssl/)
Esto normalmente conduce al compromiso total del servidor y al movimiento lateral dentro de la red.
⚙️ Requisitos
Python 3.6+
Librería requests
pycryptodome (para descifrado AES)
Instala las dependencias con:
bash
pip install requests pycryptodome
🔧 Uso
text
usage: CVE-2026-27944.py [-h] {info,scan,exploit} ...
CVE-2026-27944 - Nginx UI Backup Exposure Scanner & Exploit
positional arguments:
{info,scan,exploit} Subcommands
info Display detailed information about the CVE
scan Check if a target is vulnerable
exploit Download and decrypt the backup
optional arguments:
-h, --help show this help message and exit
Ejemplos
bash
python3 CVE-2026-27944.py info
bash
python3 CVE-2026-27944.py scan 192.168.1.100:9000
bash
python3 CVE-2026-27944.py exploit 192.168.1.100:9000 -o backup_decrypted.zip
El archivo descifrado suele ser un archivo ZIP: cámbiale el nombre a .zip e inspecciona su contenido.
📚 Cómo Funciona
El script envía una petición HEAD a /api/backup para comprobar la presencia de la cabecera X‑Backup‑Security.
Si la encuentra, procede con una petición GET para descargar la copia de seguridad cifrada.
El valor de la cabecera contiene la clave AES‑256 y el IV codificados en Base64, separados por dos puntos.
El script los decodifica, usa pycryptodome para descifrar los datos (modo AES‑256 CBC) y elimina el relleno PKCS#7.
Los bytes descifrados se guardan en el archivo de salida especificado.
⚠️ Descargo de Responsabilidad
Esta herramienta se proporciona únicamente con fines educativos y de investigación de seguridad.
Probar sistemas sin autorización, que no poseas o para los que no tengas permiso explícito, es ilegal. El autor no es responsable de ningún uso indebido o daño causado por este script.
🛡️ Mitigación
Si estás utilizando Nginx UI, actualiza inmediatamente a la versión 2.3.3 o posterior.
Además:
Rota todas las credenciales y secretos que puedan haber quedado expuestos.
Regenera los certificados SSL/TLS.
Nunca expongas las interfaces administrativas a Internet público: usa cortafuegos o VPN.
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE para más detalles.
📬 Referencias
MITRE CVE‑2026‑27944 (marcador de posición)
Entrada NVD (marcador de posición)
Sitio oficial de Nginx UI