HTTP ヘッダーインジェクションとは何ですか?
HTTP ヘッダー インジェクションは、Webapplicationsの脆弱性を悪用する攻撃方法です。 攻撃者は、Web サーバーに送信される HTTP 要求に復帰改行文字 (CRLF) などの悪意のある文字列を埋め込むことで、HTTP 応答を操作できます。 ユーザーが指定したパラメータをサニタイズせずに HTTP 応答ヘッダーに直接保存する Webapplicationsは、このタイプの攻撃に対して特に脆弱です。
たとえば、ブラウザがパラメータ付きの次のリクエストを送信するシナリオを考えてみましょう。
http://f5.com/index.html?status=1
Webapplicationがセッション管理に status=1 パラメータを使用する場合、次のような HTTP 応答が返される可能性があります。
HTTP/1.1 200 OK
...
Set-Cookie:ステータス=1
ここで、リクエストが次のように細工された入力によって変更されたとします。
http://f5.com/index.html?status=1<CRLF><CRLF><html><body><script>~</script></body></html>
Webapplicationからの HTTP 応答は次のように変更されます。
HTTP/1.1 200 OK
...
Set-Cookie:ステータス=1
<空行>
<html><body><script>~</script></body></html>
HTTP 応答では、2 つの CRLF 文字 (空白行) の後のすべてのコンテンツが応答本文として扱われ、ブラウザによってレンダリングされます。 レスポンス本文に悪意のある JavaScript が含まれている場合、ブラウザはそれを実行し、セキュリティ侵害につながる可能性があります。 さらに、攻撃者は次のようなヘッダー コンテンツを挿入するための入力を作成する可能性があります。
<CRLF>Cookieの設定:PHPSESSID=abc
これにより、ブラウザに特定のセッション ID が設定され、セッション固定攻撃が可能になります。