PortSwigger Web Security Academy の Web Cache Poisoning ラボ群を、日本語の美容EC文脈で再構成した教材です。Unkeyed Input によるキャッシュ汚染で、1人の攻撃者が全ユーザに XSS を配信する手法を扱います。

全5問予定 Lab 01 公開 シミュレータ完結

教育目的のシミュレータです。攻撃の挙動はブラウザ内で完結し、外部システムへの影響はありません。

知識ベース — 前提知識と概念整理
Knowledge Base · 各ラボから参照される基礎
KB1
Web Cache Poisoning の基礎
キャッシュキーとキャッシュ可能性、Unkeyed Input、典型的な攻撃、ヘッダ削除・キャッシュキー拡張による正しい防御。
Phase 1 — 基礎
Practitioner · 主要パターン
01
X-Forwarded-Host で全ユーザに XSS 配信
アプリが X-Forwarded-Host から正規ホスト名を取得しレスポンスに反映するが、CDN のキャッシュキーには含まれていない。1回の汚染で全ユーザに攻撃者 JS。
Practitioner
02
クエリパラメータの差で別レスポンス汚染
?utm_source=... のような認識されないクエリで、サーバ側の挙動が変わるが、CDN は「不要なクエリ」として無視するパターン。
準備中
03
Cookie ベースのキャッシュ汚染
アプリが特定 Cookie を見て言語切替するが、CDN がそれをキャッシュキーに含めず、英語応答が日本語ユーザに配信される。
準備中
04
HTTP Header Smuggling 経由の汚染
プロキシとオリジンが異なるヘッダ正規化を行う場合、両者の解釈の差を突いてキャッシュを汚染。
準備中
05
Cache Deception — 認証ページの公開キャッシュ
profile.css のような拡張子で、CDN は「静的アセット」と判断してキャッシュ。実は動的に生成された個人情報ページが全員に配信される。
準備中