
Докеризированная лаборатория для обучения по уязвимости перезаписи NGINX (CVE-2026-42945) с уязвимыми и исправленными экземплярами, безвредными тестовыми скриптами и упражнениями по аудиту конфигурации.
Два контейнеризированных экземпляра NGINX: фрагмент «рискованного переписывания» на основе шаблона против исправленного фрагмента с именованным захватом, привязанные к nginx:1.30.0-alpine / nginx:1.30.1-alpine. Скрипты выполняют безвредные curl-запросы, выводят nginx -T и архивируют доказательства. Только для обучения проверке конфигурации — /health, /nginx_status, /legacy/ являются лабораторными конечными точками; ужесточите доступ за пределами лабораторной VLAN.
Область применения: только авторизованные хосты. Рекомендации поставщика и ваша собственная политика интерпретируют вывод [RISK] из scripts/check-nginx-rewrite-risk.sh (эвристический grep по конфигурации, не формальный сканер).
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)
Дерево репозитория: docker-compose.yml, nginx-{vulnerable,patched}/default.conf, www/, scripts/, evidence/ (артефакты в gitignore, кроме .gitkeep), docs/.
Docker + docker compose, bash, curl. Один раз: chmod +x scripts/*.sh. Linux (или ВМ) предоставляет /proc/sys/kernel/randomize_va_space, если вас интересует эта строка сборщика в collect-evidence.sh; macOS Docker Desktop часто её пропускает — скрипт отмечает этот случай.
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
Измените порты хоста, если 18080/18081 конфликтуют (docker-compose.yml).
| Path | Role |
|---|---|
/health | Стабильный текст для проверок (vulnerable-nginx-alive / patched-nginx-alive) |
/nginx_status | stub_status (ограничить в продакшене) |
/legacy/ | Демонстрация переписывания |
| File | Purpose |
|---|---|
docs/LAB_GUIDE.md | Пошаговая лабораторная работа |
docs/WEBINAR_FLOW.md | Темп ведущего |
docs/PRTG_MONITORING_NOTES.md | Примеры датчиков |
docs/REMEDIATION_SUMMARY_TEMPLATE.md | Шаблон CAB/инцидента |
docs/NGINX_RIFT_DEFENSIVE_LAB_COMPLETE_GUIDE.md | Объединенный Markdown |
docs/TR_KAPSAMLI_SAVUNMA_LAB_REHBERI.md | Турецкое руководство |
docs/PDF_GENERATION_NOTES.txt | Опциональная локальная сборка PDF (docs/*.pdf, в gitignore) |
Используйте docker compose up -d с дефисом. Глоббинги оболочки, такие как *d, могут разворачиваться в нежелательные имена файлов.