Shikata Ga Nai

Private? There is no such things.

Refererヘッダーを利用したSSRF攻撃

Hello there, ('ω')ノ

一部のアプリケーションは、サーバーサイドのアナリティクス(訪問者追跡)ソフトウェアを使用し、Refererヘッダーをログに記録または解析 します。
この解析プロセスの中で、Refererヘッダー内のURLにリクエストを送る 仕様になっている場合、SSRF(Server-Side Request Forgery)攻撃が可能になります。


1. Refererヘッダーを悪用したSSRFの仕組み

通常、Webアプリケーションは、訪問者がどこから来たのかを把握するために、リクエストのRefererヘッダーをログに記録 します。
しかし、一部のアナリティクスソフトウェアは、Refererヘッダー内のURLに自動的にリクエストを送る 機能を持っているため、これをSSRF攻撃に悪用できます。

🔹 典型的なアナリティクスの流れ

  1. ユーザーが 外部サイト(http://attacker.com にあるリンクをクリックし、ターゲットサイトにアクセス
  2. ユーザーのリクエストには、Refererヘッダーが含まれる http Referer: http://attacker.com/page.html
  3. ターゲットサイトのアナリティクスソフトウェアが、このRefererヘッダーをログに記録
  4. アナリティクスがReferer内のURL(http://attacker.com/page.html)にリクエストを送信
  5. 攻撃者のサーバーがリクエストを受信し、内部ネットワークへの攻撃を試みる

攻撃者はRefererヘッダーを操作することで、ターゲットの内部リソースへリクエストを強制できる!


2. Refererヘッダーを利用したSSRF攻撃

Refererヘッダーの値を 攻撃者が指定できるURL に変更することで、ターゲットサーバーが 攻撃者の意図するURLにリクエストを送るように誘導 できます。

📌 攻撃例:AWSメタデータサービスへのSSRF

  1. 攻撃者がRefererヘッダーを変更し、メタデータAPIのURLをセット http Referer: http://169.254.169.254/latest/meta-data/
  2. アナリティクスソフトウェアがこのURLにリクエストを送信
  3. クラウド環境のIAMクレデンシャルなどの機密情報を取得可能!

成功すると、AWSやGCPの認証情報が漏洩し、クラウド環境を乗っ取ることができる!


3. Refererヘッダーを利用した内部ネットワークスキャン

Refererヘッダーが 任意のURLを指定できる仕様 になっている場合、内部ネットワークのスキャンに利用できます。

📌 攻撃例:内部ネットワークの管理パネル探索

Referer: http://192.168.1.1/admin

この値をセットしてリクエストを送ると、アナリティクスソフトウェアが内部ネットワークの管理ページにアクセスする可能性あり!

成功すると、内部システムの管理パネルが見つかり、追加の攻撃につなげられる!


4. SSRF攻撃の自動化

Burp Suiteの「Intruder」機能を利用すると、Refererヘッダーを 内部ネットワークのさまざまなIPレンジに対して自動的に変更 し、スキャンを実行できます。

🔹 手順

  1. Burp Suiteでリクエストをキャプチャ
  2. Intruderに送信し、Refererヘッダーの値を 192.168.0.1192.168.0.255 に変更
  3. リクエストを送信し、応答時間や異常なレスポンスを分析
  4. 内部リソースにアクセスできたIPを特定し、追加攻撃を実行!

サーバー側のアナリティクス機能がRefererヘッダーのURLにアクセスする仕様なら、内部ネットワークスキャンが可能!


5. まとめ

攻撃手法 攻撃内容 成功例
AWS/GCPメタデータ取得 クラウドの認証情報を盗む Referer: http://169.254.169.254/latest/meta-data/
内部ネットワークスキャン 内部システムの調査 Referer: http://192.168.1.1/admin
SSRFの自動化 Intruderを使って攻撃範囲を拡大 Referer: http://192.168.0.X/ をスキャン

🚀 RefererヘッダーはSSRF攻撃の隠れたエントリーポイントになり得る!
🔍 アナリティクスがRefererを処理する挙動を分析し、内部ネットワークやクラウド環境を攻撃しよう!

Best regards, (^^ゞ