什么是 HTTP 标头注入?
HTTP 标头注入是一种利用 Web应用漏洞的攻击方法。 通过将恶意字符串(包括回车符和换行符 (CRLF))嵌入到发送到 Web 服务器的 HTTP 请求中,攻击者可以操纵 HTTP 响应。 将用户提供的参数直接存储到 HTTP 响应标头中而不进行清理的 Web应用特别容易受到此类攻击。
例如,考虑浏览器发送带有参数的以下请求的情况:
http://f5.com/index.html?status=1
如果 Web应用希望使用 status=1 参数进行会话管理,它可能会返回如下 HTTP 响应:
HTTP/1.1 200 正常
...
设置 Cookie:状态=1
现在,假设请求被修改为以下精心设计的输入:
http://f5.com/index.html?status=1<CRLF><CRLF><html><body><script>~</script></body></html>
Web应用的 HTTP 响应将被更改如下:
HTTP/1.1 200 正常
...
设置 Cookie:状态=1
<空行>
<html><body><script>~</script></body></html>
在 HTTP 响应中,两个 CRLF 字符(空行)之后的任何内容都被视为响应主体并由浏览器呈现。 如果响应主体包含恶意 JavaScript,浏览器将执行它,从而导致潜在的安全漏洞。 此外,攻击者可能会精心设计输入来注入如下标头内容:
<CRLF>设置 Cookie:PHPSESSID=abc
这将在浏览器中设置特定的会话 ID 并启用会话固定攻击。