Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2026-42945 — Analisa a CVE-2026-42945, um estouro de heap no rewrite do NGINX, fornecendo um detector diferencial, PoC de DoS determinístico e um port de RCE creditado com verificação. | Kitploit
Ferramentas/GitHubGitHub/franklinf25/cve-2026-42945
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoExploração de Binários
GitHubfranklinf25/cve-2026-42945

cve-2026-42945

Analisa a CVE-2026-42945, um estouro de heap no rewrite do NGINX, fornecendo um detector diferencial, PoC de DoS determinístico e um port de RCE creditado com verificação.

Ver Repositório
2há 10h 57mAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-42945 — Estouro de Heap no Rewrite do NGINX: Análise, DoS e Porte Creditado de RCE

Pesquisa de segurança sobre CVE-2026-42945 (CVSS 4.0 9.2 CRÍTICO): um estouro de buffer no heap no mecanismo de scripts do NGINX, onde um rewrite com argumentos na substituição (ex.: rewrite ^(.*) /new?c=1;) deixa o flag is_args do mecanismo definido e nunca limpo — então qualquer captura ($1) avaliada posteriormente em set/if é copiada com escape de URI para um buffer que foi dimensionado para o comprimento sem escape. Acessível pré-autenticação por qualquer cliente cuja URI de requisição contenha escapes %XX ou +.

um (vulnerável 1.30.0 vs corrigido 1.30.1, zero crashes) além de um (SIGSEGV, core dumped — a resposta é totalmente servida primeiro). Ambos reproduzidos contra builds compilados a partir do código-fonte no commit .

Resultado (fase 1):
detector diferencial seguro
DoS determinístico do worker
71d62c6

Resultado (fase 2): um porte creditado do RCE do relator — execução de system() como o usuário do worker (nobody), reproduzido 3/3 execuções limpas contra o build fixado do relator replicado em lab/rce/. A técnica de exploração é de Leo Lin (DepthFirst); veja O que é original aqui vs trabalho anterior e a seção Trabalho anterior do writeup.

Matriz de verificação

AlegaçãoEvidência
Causa raiz derivada do commit da correção (não de blogs)finding-sheet
A correção é de uma linha — e->is_args = 0; em ngx_http_script_regex_end_code()commit 524977e (citado no writeup)
Detector seguro: oráculo vulnerável vs corrigido, zero crashespoc/diagnose.py — impressão digital de truncamento (/foo%25b vs /foo%bar)
Matriz de gatilho: URI com aspas/mais e caracteres escapáveis na captura — ambos necessáriosbateria de sondas de poc/diagnose.py incl. o controle /a%41b
DoS determinístico do worker (SIGSEGV, core dumped, resposta servida primeiro)poc/crash.py — mudança de X-Worker-PID prova a morte do worker
1.30.1 corrigido sobrevive ao ataque idênticopoc/crash.py --host 127.0.0.1:29544 — 3/3 rodadas sobreviveram
RCE (fase 2, técnica do relator, porte creditado)exploit/rce.py — 3/3 execuções, arquivo de prova + uid=65534(nobody), workers exited on signal 11 após a execução

Início rápido

root@kitploit:~
# par diferencial: nginx 1.30.0 (:29543) + 1.30.1 (:29544) compilados a partir do código-fonte
cd lab && docker compose up -d --build && cd ..

python3 poc/diagnose.py                          # oráculo seguro — nunca derruba nenhum worker
python3 poc/crash.py --host 127.0.0.1:29543      # 1.30.0: worker morre no signal 11, core dumped
python3 poc/crash.py --host 127.0.0.1:29544      # 1.30.1: sobrevive a todas as rodadas

docker logs cve-42945-vuln 2>&1 | grep 'exited on signal' | tail -3

Fase 2 — RCE contra o build fixado do relator (rev de dev do nginx 98fc3bb7 = release-1.29.8-14, ASLR desabilitado pelo entrypoint fixado):

root@kitploit:~
docker compose -f lab/rce/docker-compose.yml up -d --build   # :29545, minutos para compilar

python3 exploit/rce.py \
  --cmd 'echo pwned-by-cve-2026-42945 > /tmp/proof' --verify --expect pwned
docker compose -f lab/rce/docker-compose.yml exec nginx cat /tmp/proof

Documentos

DocO que é
docs/finding-sheet.mdFicha técnica de uma página: versões, CVSS, padrão de configuração, condições de gatilho, assinaturas de detecção
docs/report-ptes.mdRelatório estruturado em PTES (7 fases), escopado ao que foi realmente feito
docs/research-writeup.mdA narrativa da investigação — arqueologia do commit da correção, a surpresa do truncamento, lições portáveis, trabalho futuro

O que é original aqui vs trabalho anterior

A cadeia de pesquisa da fase 1 é trabalho original: o oráculo diferencial sem crashes e sua impressão digital de truncamento (o corpo servido é a captura re-escapada truncada ao comprimento bruto — a assinatura visível do descompasso de duas passagens comprimento/valor), a matriz de gatilho provando ambas as pré-condições necessárias, a explicação no nível do código-fonte de por que a passagem de comprimento não consegue ver is_args, e a morte determinística do worker pós-resposta. O bug em si, o padrão de configuração vulnerável e a análise do commit da correção são trabalho anterior do relator e do upstream — Leo Lin (DepthFirst) divulgou o problema e Roman Arutyunyan o corrigiu; veja a seção Trabalho anterior do writeup e DepthFirst Disclosures — Nginx-Rift, árvore CVE-2026-42945.

A fase 2 (RCE) é um porte do exploit publicado do relator, não uma cadeia independente: o feng shui de heap entre requisições que coloca o estouro no ponteiro cleanup do pool de uma requisição adjacente, o spray de falso ngx_pool_cleanup_t via corpos POST retidos, o redirecionamento do dispatch de cleanup para system() da libc, a geometria do estouro (349 A + 969 + + 6 bytes alvo), as constantes de base/offset sem ASLR e o build fixado em lab/rce/ (seu env/) são todos design de Leo Lin, reproduzidos com crédito em exploit/rce.py. Nosso na fase 2: o porte em si — as convenções de CLI/logging/verificação deste repositório, descoberta de candidatos por varredura de heap ao vivo e autodetecção de base (suas constantes estáticas dependem do kernel; veja o docstring do exploit), o listener de reverse shell da stdlib e a evidência de verificação.

Pesquisa complementar

Este repositório compartilha sua metodologia com CVE-2026-42533 — Estouro de Heap Pré-Autenticação no NGINX: Análise & RCE (repositório irmão): a mesma classe de bug de duas passagens comprimento/valor no mecanismo de scripts do nginx, levada lá até uma cadeia completa de RCE pré-autenticação. Essa cadeia delimitou o teto plausível para este bug; a fase 2 deste repositório atinge o mesmo teto aqui — como um porte creditado da técnica do relator, não uma cadeia independente.

Estrutura do repositório

root@kitploit:~
docs/            finding sheet · relatório PTES · writeup da pesquisa
poc/             diagnose.py (oráculo diferencial seguro) · crash.py (DoS determinístico)
exploit/         rce.py — porte creditado da cadeia system() do relator
lab/             Dockerfile (nginx a partir do código-fonte, -g -O0) + par diferencial do compose
lab/nginx/       vulnerable.conf — a configuração do PoC do commit da correção
lab/rce/         ambiente RCE fixado do relator (seu env/, nosso mapeamento do porte)

Referências

  • Commit da correção: 524977e7c534 "Rewrite: fixed escaping and possible buffer overrun" (Roman Arutyunyan) — lançado no nginx 1.30.1
  • Red Hat: RHSA-2026:17790 e acompanhamentos (correção ampla a jusante)
  • DepthFirst Disclosures — Nginx-Rift, árvore CVE-2026-42945 (trabalho anterior do relator; Leo Lin)

Artefato educacional de pesquisa. Execute apenas contra sistemas que você possui ou para os quais está explicitamente autorizado a testar. A vulnerabilidade está corrigida — atualize o nginx para ≥ 1.30.1.

Baixar ferramenta