PortSwigger Web Security Academy の JWT ラボ群を、日本語の美容EC文脈で再構成した教材です。alg=none、alg confusion、弱い HMAC 鍵、kid 注入など JWT 検証の典型ミスを扱います。

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

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

知識ベース — 前提知識と概念整理
Knowledge Base · 各ラボから参照される基礎
KB1
JWT の基礎
JWT の構造、alg=none 攻撃、alg confusion、弱い HMAC 鍵のブルートフォース、期待 alg 明示による正しい防御。
Phase 1 — 基礎
Practitioner · 主要パターン
01
alg=none による権限昇格
サーバが JWT 内の alg ヘッダ値を信用。alg=none で署名検証がスキップされ、role を user→admin に書き換え可能。
Practitioner
02
alg confusion(RS256 → HS256)
サーバの公開鍵を HMAC 鍵として使い、alg を RS256 から HS256 に変更して任意ペイロードを署名できる。
準備中
03
弱い HMAC 鍵のブルートフォース
HS256 鍵に "secret" 等の弱い値が使われており、JWT は公開情報なので hashcat でオフライン総当たり可能。
準備中
04
kid パラメータの注入
kid ヘッダがファイルパスや SQL に渡されているケース。Path Traversal や SQL Injection で攻撃者制御の鍵を選択できる。
準備中
05
JWT の jku ヘッダ悪用
jku で公開鍵 URL を指定する仕様。攻撃者がコントロールするドメインの JWKS を指して、自前の鍵で署名したトークンを通せる。
準備中