Chinaunix首页 | 论坛 | 博客
  • 博客访问: 195117
  • 博文数量: 36
  • 博客积分: 2225
  • 博客等级: 大尉
  • 技术积分: 385
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-22 21:06
文章分类
文章存档

2012年(5)

2011年(5)

2010年(17)

2009年(9)

我的朋友

分类: 网络与安全

2012-07-19 11:08:23

由于自己在学习HTTP Splitting期间遇到的一些困惑,经过仔细研究得出结论发出来一遍能够帮助和我走在同一条“路上”的人。

WebGoat HTTP Splitting 实验攻击过程是 4步

1、攻击者也就是客户端注入恶意代码(如下)-----》发送到服务器

foobar%0aContent-Length:%200%0a%0aHTTP/1.1%20200%20OK%0aContent-Type:%20text/html%0aContent-Length:%2049%0a%0atwang

2、服务器返回302重定向报文--------》客户端

3、客户端想302中返回的location发送请求--------》服务器

4、服务器发送回应给客户端----》客户端


而注入的恶意代码真正攻击效果即输出下图应该是在4步,但是实际恶意代码是在第3步的服务器端生效还是在第4步的客户端生效,换句话说,是因为服务器受到恶意代码影响返回了以下代码给客户端
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length:17

twang


还是由于服务器返回了 除了http/1.1 200 ok以上代码还返回了一个content-length:0的响应包,客户端只识别了第二个响应了呢,为了求证这个我模拟攻击的过程中在服务器抓包,最终抓到如下的包


到此心中就坚定了自己的想法,其实Splitting不是由于客户端只是别第二个reponse中的http/1.1 200 OK,而是因为服务器被恶意代码欺骗,以至于当服务器收到包含恶意代码的请求即location中的URL及URL参数时引起的,导致服务器只返回指定HTTP/1.1 200及定制body页面给客户端。

其它文章中写道的由于客户端认为接收到两个HTTP response完全是错误的理解。

错误理解想法如下:

其实WebGoat HTTP Splitting在很多的文章中都写到是:
通过注入HTTP request使得Server返回两个HTTP response(最起码是使得接收到Server返回响应的目标自己认为是接收到了两个HTTP response),而不是一个。通过精心构造这第二个HTTP响应,攻击者可以达到任意目的!该攻击是因为server没有检查非法的数据输入就进行了请求的重定向(code 3x x , "setcookie" 或者 "Location")。

以上错误理解的举例只是希望后来者或者将要学习webgoat的同仁们不要被误导,同时也作为本人的个人笔记,并无恶意。

阅读(5164) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~