Hello there, ('ω')ノ
🎯 ラボのゴール
/adminへのアクセスはフロントエンドでブロックされる- バックエンドは
X-Original-URLヘッダーを使ってリクエスト先を解釈する - これを利用して
/adminへアクセスし、carlosを削除する
手順
Step 1: /admin に直接アクセスしてブロック確認
- ブラウザで次のURLを開く:
https://[ラボドメイン]/admin
- 「アクセス禁止」や非常にシンプルなエラーページが表示されるはずです → これはフロントエンドシステムの制限
Step 2: Burp Repeater で X-Original-URL の挙動を確認
/adminへのリクエストをBurpでキャプチャしRepeaterへ送る- リクエストラインを
/に変更
GET / HTTP/1.1
- ヘッダーに追加:
X-Original-URL: /invalid
- 実行すると「Not Found」が返ってくる → バックエンドが
X-Original-URLを見ている証拠
Step 3: 管理者パネルにアクセス
- ヘッダーを以下に変更:
X-Original-URL: /admin
- 実行すると
/adminページの内容が表示される
Step 4: carlos を削除
- 削除用のパスに切り替える:
X-Original-URL: /admin/delete
- リクエストURLのクエリ文字列としてユーザー名を追加:
GET /?username=carlos HTTP/1.1
X-Original-URL: /admin/delete
- 実行すると
carlosが削除され、ラボクリア
✅ 学べるポイント
- フロントエンドのアクセス制御は容易に回避できる
- バックエンドが
X-Original-URLやX-Rewrite-URLを受け入れていると危険 - URLベースの制御は必ずサーバー側で厳密に行うべき
Best regards, (^^ゞ