Hello there, ('ω')ノ
🎯 ラボの目標
/adminには管理者のみアクセス可能- 管理者は特定の機能(ユーザー昇格)を POST リクエストで実行できる
- 非管理者アカウントでメソッド制御を回避し、自分を管理者にする
手順
Step 1: 管理者アカウントで挙動を確認
administrator:adminでログイン/adminにアクセスcarlosを昇格するボタンを押すBurp Suite でリクエストをキャプチャし、Repeaterに送信
例:
POST /admin/promote HTTP/1.1 Cookie: session=... username=carlos
Step 2: 非管理者アカウントで制御回避を試す
- プライベートブラウザで
wiener:peterでログイン - この非管理者の
sessionCookie をコピー - Step 1 の Burp Repeater リクエストの Cookie を上書き
- そのまま送ると「Unauthorized」 → アクセス拒否される
Step 3: HTTPメソッドを変更
- Repeaterでメソッドを
POSTXに変える → 「missing parameter」と返る → これはバックエンドが完全にメソッドで制御していないサイン - 右クリック → Change request method で
GETに変更 - パラメータをURLクエリに入れる:
GET /admin/promote?username=wiener HTTP/1.1
Cookie: session=<非管理者のCookie>
- 送信すると、自分(wiener)が管理者に昇格
✅ 学べるポイント
HTTPメソッドベースのアクセス制御は危険
- フロントやルーターの設定でPOSTだけを制御しても、GETなどで回避可能
テスト手順の鉄則
- 管理者の正規リクエストをキャプチャ
- 権限の低いユーザーで同じリクエストを試す
- メソッド・URL形式・パラメータの位置を変えて送信
Best regards, (^^ゞ