
Laboratorio dockerizzato per l'addestramento sulla vulnerabilità del rewrite di NGINX (CVE-2026-42945) con istanze vulnerabili e patchate, script di test benigni ed esercizi di audit della configurazione.
Due istanze NGINX containerizzate: snippet "riscritta rischiosa" basato su pattern vs snippet corretto con named capture, bloccati rispettivamente su nginx:1.30.0-alpine / nginx:1.30.1-alpine. Gli script eseguono curl innocui, generano dump di nginx -T e archiviano le evidenze. Solo per formazione sulla revisione della configurazione: /health, /nginx_status, /legacy/ sono endpoint di laboratorio; limitare l'esposizione al di fuori di una VLAN di laboratorio.
Ambito: solo host autorizzati. Gli advisory dei vendor e le policy interne interpretano l'output [RISK] di scripts/check-nginx-rewrite-risk.sh (grep euristico sulla configurazione, non uno scanner formale).
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)
Struttura del repository: docker-compose.yml, nginx-{vulnerable,patched}/default.conf, www/, scripts/, evidence/ (artefatti gitignorati tranne .gitkeep), docs/.
Docker + docker compose, bash, curl. Una volta: chmod +x scripts/*.sh. Linux (o VM) espone /proc/sys/kernel/randomize_va_space se ti interessa quella riga del collector in collect-evidence.sh; Docker Desktop su macOS spesso la salta — lo script annota questo caso.
cd nginx-rift-defensive-lab
docker compose pull # opzionale
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
Cambia le porte host se 18080/18081 sono in conflitto (docker-compose.yml).
| Percorso | Ruolo |
|---|---|
/health | Testo stabile per le sonde (vulnerable-nginx-alive / patched-nginx-alive) |
/nginx_status | stub_status (da limitare in produzione) |
/legacy/ | Demo della riscrittura |
| File | Scopo |
|---|---|
docs/LAB_GUIDE.md | Guida al laboratorio passo passo |
docs/WEBINAR_FLOW.md | Tempi per il presentatore |
docs/PRTG_MONITORING_NOTES.md | Esempi di sensori |
docs/REMEDIATION_SUMMARY_TEMPLATE.md | Bozza per CAB/incidenti |
docs/NGINX_RIFT_DEFENSIVE_LAB_COMPLETE_GUIDE.md | Markdown consolidato |
docs/TR_KAPSAMLI_SAVUNMA_LAB_REHBERI.md | Manuale in turco |
docs/PDF_GENERATION_NOTES.txt | Build PDF locale opzionale (docs/*.pdf, gitignorati) |
Usa docker compose up -d con un trattino. I glob di shell come *d possono espandersi in nomi di file indesiderati.