1.浏览器和WEB应用程序数据传输的基本知识:
所有的HTTP交易遵循相同的一般格式。每个客户端请求和服务器响应分为三个部分:请求或响应线、头部、实体。客户端启动一个交易如下:
客户端连接服务器并发送文件请求;GET /index.html?param=value HTTP/1.0
客户端发送可选头信息来通知服务器客户端的配置及他将收到的文件格式
客户端可能发送附加数据,这些数据主要用于CGI(公共网关接口)程序
HTTP处理客户端请求与客户端发送请求相反
2、HTTP Spliting attacks
原理:攻击者将恶意代码字符(%0d回车、%0a换行)与正常输入一起传送给WEB服务器,而被害应用不能检测出恶意代码字符(%
0a,%0d),这些字符不仅使攻击者获得被害应用想发送的响应的剩余头部和实体的控制权,而且使攻击者能够完全在自己的控制下创造
多余的响应。
HTTP Spliting attacks 的破坏效果在与Cache Poisoning(缓存中毒)一起实施时最大。缓存中毒攻击目标是是被害者以为通过HTTP
Spliting attacks劫持的网页是被授权的服务器的复制版本,从而使缓存中毒。攻击用以下方式完成:通过HTTP Spliting attacks 增加
Last-Modified并将其设置为将来的一个时间。这会强制浏览器在未来的请求发送一个不正确的 If-Modified-Since 请求头。这样服务器将
始终报告(中毒)网页还没有改变,并且被害者的浏览器将始终显示被攻击过的页面。
3
造成http响应头截断漏洞的主要原因是对用户提交的非法字符没有进行严格的过滤,尤 其是CR,LF字符的输入。攻击者通过发送一经过精心构造的request,迫使服务器认为其返回的数据是两个响应,而不是常规的一个响应。当可以通过精心制作的request完全 控制第二个响应时,可以通过这样来实现攻击:发送两个请求A,B。A请求包含构造数据,该请求致使服务器返回两个响应R1,R2,其中R2是可以通过在A中的精心构造而 完全控制的。服务器将R1作为response返回给A,而第R2则被服务器作为B的response而返回给了B﹙即使R2并不是服务器自己生成的)。
Request A------------->Web Server(R1,R2)
Request B------------->Web Server (本该是R3)
Web Server(R1)------------>A
Web Server(R2)——————>B