HTTP拆分攻击又名CRLF注入攻击。 HTTP响应头拆分漏洞”是一种web攻击方案,它重新产生了很多安全漏洞包括:web缓存感染、用户信息涂改、窃取敏感用户页面、跨站脚本漏洞。由于web应用程序没有对用户的提交进行严格过滤,导致非法用户可以提交一些恶意字符,更具体来说,是对用户输入的CR和LF字符没有进行严格的过滤。
在HTTP响应头拆分攻击中具体牵涉到三个对象:
即是发送一个或几个HTTP指令迫使漏洞服务器产生一个攻击者构想好的输出。可以让服务器误把几条HTTP请求,当作一次完整的HTTP请求来解释。攻击者完全控制第二条HTTP请求,在第二条请求中加入请求指令到目标系统。第一部分使服务器接受两个HTTP响应,第二部分即是在服务器上请求一些非法资源,而服务器将会自动匹配到第二次响应,输出攻击者想要请求的资源,从而达到攻击者的目的。 攻击者在向Web服务器正常输入的请求中加入恶意代码,若受到攻击的web服务器不检查CR(回车,也可表示为或\r)和LF(换行,也可表示为或\n)。这些字符不仅使攻击者控制应用程序打算发送的响应头和响应体,而且还使他们能够完全在其控制下创造更多的响应。
CR = = \r 这将迫使浏览器发送请求头,攻击者拦截服务器的响应,并代之以“304不修改”应答。 简单的304响应: 漏洞利用: 正常情况下服务器的响应信息: 预期得到的响应信息: 通过HTTP拆分,服务器将包含攻击者构造的响应的请求,看作是一次完整的请求。HTTP响应数据包中“ContentLength: 0”告诉浏览器第一个响应已经结束。其中第一个响应是302重定向的响应,第二个响应是我们自己构造的响应。当客户端收到第一个响应之后会向相应头指向的目标地址发起第二个请求,而这个时候客户端会认为第二个响应正是针对第二个请求的响应,从而达到了欺骗的目的。 |