Shikata Ga Nai

Private? There is no such things.

LAB: 基本的なSSRFを利用した他のバックエンドシステムへの攻撃

Hello there, ('ω')ノ

このラボでは、SSRF(Server-Side Request Forgery)を利用して、内部ネットワークの管理インターフェースをスキャンし、ユーザー「carlos」を削除する ことが目的です。
アプリケーションには「在庫チェック機能」があり、これを利用して 192.168.0.X の範囲で管理画面が動作しているサーバーを特定し、管理操作を実行 します。


🔍 攻撃の手順

1. 在庫チェック機能を利用してリクエストを傍受する

  1. 任意の製品ページを開く
  2. 「Check stock(在庫を確認)」ボタンをクリック
  3. 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://stock.weliketoshop.net:8080/product/stock/check?productId=6&storeId=1

このリクエストは、サーバーが 指定されたURLにリクエストを送信する 仕組みになっています。
ここで stockApi パラメータを悪用 すれば、内部ネットワークの管理インターフェースにアクセスできます。


2. Burp Intruder を使って内部サーバーをスキャン

管理画面のIPアドレスが 192.168.0.X の範囲にあるため、Burp Suiteの Intruder を使って、管理インターフェースが動作しているサーバーを特定します。

  1. Burp Suite の Intruder にリクエストを送信

    • キャプチャしたリクエストを Intruder に送る
    • stockApi のURLを http://192.168.0.1:8080/admin に変更
    • 192.168.0.1「1」の部分をハイライト し、Add § ボタンをクリック
  2. IPアドレスをスキャン

    • Payloads タブ を開く
    • Payload type を「Numbers」に変更」
    • 範囲(From: 1, To: 255, Step: 1)を設定
    • 「Start attack」をクリック

レスポンスのステータスコードを確認
「200 OK」のレスポンスがあるものが管理画面のアドレス!


3. 管理画面にアクセスし、ユーザー削除

スキャン結果から、192.168.0.X:8080/admin の管理ページが見つかったら、Burp Suite の Repeater に送ります。

  1. 管理画面のHTMLを確認し、削除リクエストを探す

    • HTML内に次のようなリンクが含まれている可能性がある
      html <a href="/admin/delete?username=carlos">Delete carlos</a>
    • これが 削除リクエストのパス になる
  2. stockApi/admin/delete?username=carlos を送信

    • リクエストを Burp Suite Repeater に送る
    • stockApi のURLを http://192.168.0.X:8080/admin/delete?username=carlos に変更

    リクエストの例: ```http 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://192.168.0.X:8080/admin/delete?username=carlos ```

    • 「Send」ボタンをクリック!

成功すると、carlos のアカウントが削除され、ラボクリア!🎉


🎯 まとめ

  1. 在庫チェック機能を使い、Burp Suite でリクエストをキャプチャ
  2. Burp Intruder で 192.168.0.X:8080 の範囲をスキャンし、管理画面を特定
  3. 管理画面のHTMLを取得し、削除リクエストを特定
  4. Burp Repeater で /admin/delete?username=carlos を送信し、ユーザーを削除
  5. ラボクリア!🎉

Best regards, (^^ゞ