漏洞
HTTP 响应拆分
别称: HTTP CRLF 注入, HTTP 头注入
定义
用户输入中未受信任的 CR/LF 字符迫使服务器发出额外的、由攻击者控制的 HTTP 响应的注入漏洞。
HTTP 响应拆分(CRLF 注入)出现于应用把用户输入回显到响应头(典型如 Location、Set-Cookie 或自定义头)而未过滤回车与换行字节时。攻击者注入 %0d%0a 终止原始头块,并插入头部、状态行甚至完整的第二个响应。后果包括缓存投毒、跨站脚本、会话固定以及向中间设施泄露凭据。CWE-113 与 CVE-2004-0500 等经典披露展示了其影响。缓解措施:拒绝或转义头值中的 CR/LF,使用禁止在头部 API 中注入换行的框架,优先使用对输入进行 URL 编码的重定向辅助函数。
示例
- 用包含 %0d%0a 的用户参数设置 Location 头,从而注入 Set-Cookie。
- 通过拆分响应使缓存为 /home 存储攻击者控制的响应体。