
Laboratório Dockerizado para treinamento na vulnerabilidade de rewrite do NGINX (CVE-2026-42945) com instâncias vulneráveis e corrigidas, scripts de teste benignos e exercícios de auditoria de configuração.
Duas instâncias NGINX em Docker: um snippet de rewrite baseado em padrão "arriscado" vs snippet de captura nomeada corrigido, fixados em nginx:1.30.0-alpine / nginx:1.30.1-alpine. Scripts executam curls benignos, despejam nginx -T e arquivam evidências. Apenas para treinamento de revisão de configuração — /health, /nginx_status, /legacy/ são endpoints do laboratório; restrinja a exposição fora de uma VLAN de laboratório.
Escopo: apenas hosts autorizados. Avisos do fornecedor e sua própria política interpretam a saída [RISK] de scripts/check-nginx-rewrite-risk.sh (grep heurístico sobre configuração, não um scanner formal).
Host 127.0.0.1:18080 -> nginx-rift-vulnerable (listens :8080 in container)
Host 127.0.0.1:18081 -> nginx-rift-patched
www/ -> RO -> /usr/share/nginx/html (both)
nginx-vulnerable/nginx-patched -> RO -> conf.d/default.conf
Network: nginx_rift_net (bridge)
Árvore do repositório: docker-compose.yml, nginx-{vulnerable,patched}/default.conf, www/, scripts/, evidence/ (artefatos ignorados pelo git, exceto .gitkeep), docs/.
Docker + docker compose, bash, curl. Uma vez: chmod +x scripts/*.sh. O Linux (ou VM) expõe /proc/sys/kernel/randomize_va_space se você se importar com essa linha do coletor em collect-evidence.sh; o Docker Desktop no macOS geralmente a ignora — o script nota esse caso.
cd nginx-rift-defensive-lab
docker compose pull # optional
docker compose up -d
docker compose ps
./scripts/benign-request-test.sh
./scripts/check-nginx-rewrite-risk.sh
./scripts/check-nginx-rewrite-risk.sh nginx-rift-patched
./scripts/collect-evidence.sh
./scripts/cleanup-lab.sh
# ./scripts/cleanup-lab.sh --purge-evidence
Altere as portas do host se 18080/18081 colidirem (docker-compose.yml).
| Path | Função |
|---|---|
/health | Texto estável para sondas (vulnerable-nginx-alive / patched-nginx-alive) |
/nginx_status | stub_status (restrinja em produção) |
/legacy/ | Demonstração de rewrite |
| Arquivo | Propósito |
|---|---|
docs/LAB_GUIDE.md | Laboratório passo a passo |
docs/WEBINAR_FLOW.md | Ritmo do apresentador |
docs/PRTG_MONITORING_NOTES.md | Exemplos de sensores |
docs/REMEDIATION_SUMMARY_TEMPLATE.md | Esqueleto para CAB/incidente |
docs/NGINX_RIFT_DEFENSIVE_LAB_COMPLETE_GUIDE.md | Markdown consolidado |
docs/TR_KAPSAMLI_SAVUNMA_LAB_REHBERI.md | Manual em turco |
docs/PDF_GENERATION_NOTES.txt | Construção opcional de PDF local (docs/*.pdf, ignorado pelo git) |
Use docker compose up -d com um hífen. Globos do shell como *d podem expandir para nomes de arquivo não intencionais.