Shikata Ga Nai

Private? There is no such things.

HTTP Hostヘッダーを上書きする別の方法:オーバーライドヘッダーの活用

Hello there, ('ω')ノ

🧠 なぜHost以外のヘッダーが使えるの?

クラウド環境やCDNなど、リバースプロキシやロードバランサーを経由してWebサイトにアクセスするケースが一般的です。こうした構成では、フロントエンド(外部向け)とバックエンド(内部処理)が異なるドメイン名を使うことがあります。

そのため、本来のリクエスト情報(例:元のホスト名)をバックエンドに伝えるために使われるのが、次のようなホストオーバーライドヘッダーです。


🧪 よく使われるオーバーライドヘッダー

ヘッダー名 概要
X-Forwarded-Host 最も一般的。元のホスト名を伝えるためのヘッダー
X-Host 一部のプロキシで使用
X-Forwarded-Server 元のサーバー名を示す
X-HTTP-Host-Override 明示的にHostを上書き
Forwarded 標準化された構文をもつ複合ヘッダー

🧪 攻撃例:X-Forwarded-Hostを使う

GET /example HTTP/1.1
Host: vulnerable-website.com
X-Forwarded-Host: attacker.com

このように送ると、Hostヘッダー自体は正しくても、バックエンド側の処理ではX-Forwarded-Hostを参照してしまうことがあります。これにより以下のような悪用が可能になります:

  • パスワードリセットリンクの改ざん
  • 絶対URL生成の乗っ取り
  • SSRFやWebキャッシュ汚染

🛠️ Burp Suiteでのテスト方法

Burpの「Param Miner」拡張機能を使えば、以下のように自動化が可能です:

  1. 対象リクエストを右クリックして「Extensions」>「Guess headers」を選択
  2. Burpが既知のオーバーライドヘッダーを自動で試行
  3. サーバーの反応に違いがあるかを確認

⚠️ 防止策

  • これらのヘッダーを意図せず受け入れていないか確認
  • X-Forwarded-*ヘッダーを使うなら明示的に設定し、ホワイトリスト検証を導入
  • Webサーバーやプロキシのデフォルト設定も見直す

✅ まとめ

ポイント 解説
Hostヘッダーだけでなく複数のヘッダーが影響する X-Forwarded-Hostなどが使われる可能性がある
Hostは正しいのに挙動が変わる理由 バックエンドが別のヘッダーを優先している可能性
確認・テストにはBurp Suiteが便利 Param Minerで自動テスト可能

Best regards, (^^ゞ