F5 术语

HTTP 标头注入

什么是 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 并启用会话固定攻击。

如何防止HTTP标头注入:

  • 消毒: 验证并清理 HTTP 请求标头中收到的参数以消除恶意字符串。
  • Web应用防火墙 (WAF): 由于持续清理所有 Web应用非常困难,因此部署 WAF 是一种有效的解决方案。 WAF 监控应用层流量并阻止被视为攻击的请求,从而降低 HTTP 标头注入风险。