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」拡張機能を使えば、以下のように自動化が可能です:
- 対象リクエストを右クリックして「Extensions」>「Guess headers」を選択
- Burpが既知のオーバーライドヘッダーを自動で試行
- サーバーの反応に違いがあるかを確認
⚠️ 防止策
- これらのヘッダーを意図せず受け入れていないか確認
X-Forwarded-*
ヘッダーを使うなら明示的に設定し、ホワイトリスト検証を導入- Webサーバーやプロキシのデフォルト設定も見直す
✅ まとめ
ポイント | 解説 |
---|---|
Hostヘッダーだけでなく複数のヘッダーが影響する | X-Forwarded-Host などが使われる可能性がある |
Hostは正しいのに挙動が変わる理由 | バックエンドが別のヘッダーを優先している可能性 |
確認・テストにはBurp Suiteが便利 | Param Minerで自動テスト可能 |
Best regards, (^^ゞ