Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Nginx-chain-Rift-Poolslip — PoC de cadeia RCE no nginx independente de ASLR, combinando o vazamento por over-read de heap PoolSlip (CVE-2026-9256) com o overflow rift (CVE-2026-42945) para alcançar system() em nginx padrão. | Kitploit
Ferramentas/GitHubGitHub/y198nt/nginx-chain-rift-poolslip
Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoEngenharia ReversaExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads

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
Exploração de Binários
Labs e Prática
GitHuby198nt/nginx-chain-rift-poolslip

Nginx-chain-Rift-Poolslip

PoC de cadeia RCE no nginx independente de ASLR, combinando o vazamento por over-read de heap PoolSlip (CVE-2026-9256) com o overflow rift (CVE-2026-42945) para alcançar system() em nginx padrão.

Ver Repositório
146há 4 mesesAinda não revisado

nginx PoolSlip × Rift — cadeia de RCE independente de ASLR

Primeira cadeia pública de dois bugs recém-divulgados do motor de rewrite do nginx em um único system() remoto independente de ASLR na imagem Docker oficial nginx:1.30.0 padrão (Debian 13, glibc 2.41) — sem endereços fixos, sem reinício do nginx, ~90 % por worker novo.

  • CVE-2026-9256 "PoolSlip" — um over-read de heap em $args → vaza libc + heap ao vivo.
  • CVE-2026-42945 "rift" — um overflow de heap em is_args (apenas bytes URL-safe) → uma sobrescrita parcial de 2 bytes de um ponteiro de cleanup de limit_conn → ngx_destroy_pool o percorre → system(cmd).

Ambos são o mesmo descasamento de duas passagens do is_args apontado para dois sinks. Write-up técnico completo: Writeup


Divulgação e segurança

  • Ambas as CVEs já estão corrigidas e sob exploração ativa na natureza. Atualize para nginx 1.30.2 (stable) ou 1.31.1 (mainline) — note que 1.30.1 corrige o rift mas ainda é vulnerável ao PoolSlip, então apenas 1.30.2 fecha ambos. NGINX Plus: R36 P5 / R32 P7 / R37.0.1.1.
  • Isto é publicado apenas para educação e testes autorizados. Ele roda contra o laboratório Docker local incluído — não aponte-o para infraestrutura que você não possui ou para a qual não tem permissão por escrito para testar.
CVEapelidovulnerávelcorrigido (nginx OSS)
CVE-2026-42945rift0.6.27 – 1.30.01.30.1 / 1.31.0
CVE-2026-9256PoolSlip0.1.17 – 1.30.1 + 1.31.01.30.2 / 1.31.1

O que há no repositório

ArquivoPropósito
nginx.confUma configuração crível de API-gateway (o alvo — limit_conn, um rewrite de migração v1→v2, um proxy de upload, uma página de busca degradada). Sem ajuste de alocador.
run.shLevanta o laboratório local: nginx:1.30.0 padrão servindo nginx.conf, mais um upstream lento, no host :19322.
exp_official.pyA cadeia completa: vazamento PoolSlip → deriva libc/heap → spray → groom → sobrescrita parcial rift → system().

Requisitos

  • Docker, Python 3 (para rodar exp_official.py), curl, Linux x86-64.
  • O laboratório é totalmente autocontido / offline — run.sh usa perl (já presente na imagem nginx padrão) para o upstream lento, então não há pacote extra, nem arquivo slow_backend, nem necessidade de internet. O binário do nginx em si permanece padrão.
  • Opcional: para acompanhar as sessões de gdb em WRITEUP.md, faça docker exec e apt-get install gdb file binutils, depois carregue o gef.

Execute

git clone https://github.com/y198nt/Nginx-chain-Rift-Poolslip
cd Nginx-chain-Rift-Poolslip

bash run.sh                                          # stock nginx:1.30.0 on http://127.0.0.1:19322
python3 exp_official.py --cmd 'id > /tmp/rce_proof'  # leak → overwrite → system()
docker exec nginx-rift-official cat /tmp/rce_proof   # → uid=101(nginx) ...

exp_official.py é one-shot (~90 % por worker novo): ele vaza uma vez e dispara uma vez. Se o arquivo de prova estiver vazio, o groom caiu um slot fora — basta rodar de novo.

docker rm -f nginx-rift-official      # tear the lab down

Como funciona (resumo)

  1. Vazamento (PoolSlip). Um rewrite ^/search/((.*))$ /lookup?$1$2 faz a passagem de cópia definir r->args.len além do buffer; a página /search degradada reflete $args no heap adjacente. Após um breve aquecimento, um ponteiro do libpcre-cluster (fixo 0xb0ad08 abaixo da libc) e um ponteiro de heap se estabilizam em offsets estáveis → libc_base e heap_base, nada fixo.
  2. Escrita (rift). O overflow do rift só consegue emitir bytes URL-safe, então um endereço completo de 48 bits é gravável ~0,9 % das vezes sob ASLR. Em vez disso, sobrescrevemos apenas os 2 bytes baixos de um ponteiro de cleanup de limit_conn já válido — os bytes altos aleatórios do ASLR seguem intactos → independente de ASLR.
  3. Disparo. O ponteiro é redirecionado para um ngx_pool_cleanup_t{handler=&system, data=cmd, next=0} pulverizado; fechar a vítima dispara a caminhada de cleanup do ngx_destroy_pool → system(cmd).

Veja o Writeup para a derivação completa, sessões de gdb e os becos sem saída/pivôs.

Mitigações e detecção

  • Corrija (atualize para 1.30.2 / 1.31.1) — a única correção real.
  • A escrita só dispara através de um rewrite cujo replacement contém ? e referencia uma captura PCRE ($1/$2), ou um padrão de captura aninhada como ^/x/((.*))$ → /y?$1$2. Audite as configurações para esses casos e reformule o rewrite/set problemático até corrigir.
  • Um $args refletido (ou qualquer variável derivada da requisição ecoada de volta) é o que transforma o over-read em vazamento de informação — não reflita argumentos de requisição literalmente.
  • Sinais de WAF / log: enxurradas de %2B/+ no caminho da URI (GET /search/+++…), 503s de uma página degradada ecoando um $args longo, e tempestades de SIGSEGV/respawn de workers.

Créditos e referências

  • PoCs originais dos componentes: DepthFirstDisclosures/Nginx-Rift (rift).
  • Avisos do fornecedor — CVE-2026-42945 (rift) e CVE-2026-9256 (PoolSlip), F5/nginx.
  • Encadeamento, técnica independente de ASLR e porte para Debian glibc-2.41: este repositório.
Baixar ferramenta