HTTP 响应头文件中包含未经验证的数据会引发 cache-poisoning(缓存中毒)、cross-site
scripting、cross-user defacement(用户信息涂改)、page hijacking(网页劫持)、cookie
manipulation(cookie操作) 或 open redirect(重定向)。
HTTP协议头注射
以下情况中会出现 HTTP协议头注射漏洞: 1. 数据通过一个不可信赖的数据源进入 Web 应用程序,最常见的是 HTTP 请求。
2. 数据包含在一个 HTTP 响应头文件里,未经验证就发送给了 Web 用户。
其中最常见的一种 Header Manipulation 攻击是 HTTP Response Splitting。 为了成功地实施
Http Response Splitting(http响应拆分攻击) 盗取,应用程序必须允许将那些包含 CR(回车,由 或 r
指定)和 LF(换行,由 或 n 指定)的字符输入到头文件中。
攻击者利用这些字符不仅可以控制应用程序要发送的响应剩余头文件和正文,还可以创建完全受其控制的其他响应。
HTTP协议头注射漏洞实例
$location =
$_GET['some_location'];
header(“location:
$location”);
?>
假设在请求中提交了一个由标准的字母和数字字符组成的字符串,如 “index.html”,那么包含此 cookie 的 HTTP
响应可能表现为以下形式:
HTTP/1.1 200 OK
…
location: index.htm