PortSwigger Web Security Academy の XSS ラボ群を、日本語の美容EC文脈で再構成した教材です。
各ラボは独立した模擬サイト。iframe sandbox で実際にペイロードを実行できる安全な環境です。

全5問 Reflected / Stored / DOM iframe sandbox 実行 シミュレーター解説付き

教育目的のシミュレータです。攻撃ペイロードの実行は iframe sandbox 内で隔離されており、外部サイトへの影響はありません。

知識ベース — 前提知識と概念整理
Knowledge Base · 各ラボから参照される基礎
KB1
HTML と DOM の基礎
HTML タグと属性、DOM、script タグと JavaScript の実行、イベントハンドラ属性、innerHTML の危険性。
KB2
XSS の3分類
Reflected / Stored / DOM-based の違い、被害範囲の比較、XSS の真の被害(Cookie 窃取、改ざん、なりすまし)。
Phase 1 — 基礎
Apprentice / Practitioner · XSS の主要パターン
01
Reflected XSS — 記事共有メッセージへの注入
うつろい journal の記事ページの ?shared_by パラメータが、エスケープされずに HTML に挿入される。最も基本的な Reflected XSS。
Apprentice
02
Stored XSS — 商品レビュー欄
うつろい EC の商品レビュー機能。投稿されたレビューが他のユーザのページで実行される。攻撃者ビュー + 被害者ビューを並べて、永続化された攻撃の被害範囲を体感する。
Apprentice
03
DOM-based XSS — URL フラグメントから innerHTML 注入
うつろい journal の検索ページが location.hashinnerHTML に展開。サーバを通らない、ブラウザ内で完結する XSS。
Apprentice
04
Cookie 窃取 — Stored XSS から完全攻撃へ
Lab 02 から発展。alert ではなく document.cookie を取得して攻撃者サーバへ送信する。HttpOnly が設定されていない場合の被害シナリオを再現。
Practitioner
05
コンテキスト脱出 — 属性値の中で破られるエスケープ
うつろい予約サイトのお名前が href 属性内に展開。< > はエスケープされるが " はエスケープされず、属性ブレイクアウトで XSS。
Practitioner