上次发表了《小漏洞,大危害之QQ空间暴出跨站漏洞》(原文地址:http://publish.it168.com/2007/0706/20070706017401.shtml)之后,腾讯很快补上了这个漏洞。不知道是看到了这个文章后补的,还是自己发现而补上的。总之这种中转验证不严导致的跨站漏洞看起来幼稚,但这种可笑的漏洞也是门户站点,安全的软肋,名家有云:细节是决定成败的关键。细节不容忽视。安全问题几乎都出于细节,有谁会敞开自家大门任由他人迈入呢。
上次发现这个漏洞后,腾讯很快就补上了本以为会从根本上解决问题。其实也不过是敷衍了事,今天再次发现了这个漏洞依然存在。
我们按上次的输入http://xxxxxx.qzone.qq.com/?url=http://baidu.com发现跳转到的还是QQ空间的首页(图1)。

图1
而把URL=后面随便输入一串字符进入会出现另一中情况(图2)。

图2
这说明在页面上依然用着中转验证的方式进行页面切换的。分析一下,可能是过滤掉了一些字符。猜测:可能过滤掉了HTTP://,但是在URL=后面直接输入BAIDU.COM,依然是图2的样子,从图2可以分析到,这个跨站漏洞就是在我们眼前的。如果在URL=后面直接输入一串任意字符后,直接跳到QQ空间主页,这个就可能没“戏”了。既然这样剩下的就是猜测问题了,究竟过滤掉了什么,我们不可能去阅读它的PHP,ASP,CGI里面的代码究竟过滤掉什么,因为腾讯的代码是根本不可能对外公布了的。另外本人对于代码分析也不是内行。但还是看了看页面的代码,如下(图3)

图3
只可能图3中选中的JS文件里也许有名堂,但是代码太乱了,看得眼花。希望高人看看,也许有大名堂。从另一个角度仔细想想,很可能只过滤了“http:// ”这里,但是直接在URL=后面直接输入个www.baidu.com根本还是404-NOT FOUND,不妨换成FTP://xxx.com,结果进入页面的时候卡住了一会,呵呵,FTP没有过滤掉,如图4

图4
问题的确出在http://上,这回多打几个”:”,如图5

图5
依然跳回了主页,与“:”无关,然后多打了几个“/”,依然跳回主页,那直接把http去掉好了,出现下面的页面,^_^,一切都结束了!如图6

图6
希望腾讯再修补漏洞的时候不要再过滤了“//”就完毕了,因为“/\”也可以的,“\/”也是可以的。这个漏洞从原理上从发现上不算什么大漏洞。至于危害上篇稿子已经介绍了。
这个漏洞对于,某些人来说不会公布的,这个漏洞加上社会工程学基本想盗谁的QQ盗谁的,大牛也会有上当的吧。这样的漏洞写成QQ尾巴,又是一场QQ蠕虫式的网络攻击,对于一个搞病毒营销的人来说,又是不可多得的病毒欺骗式营销漏洞。这些都是不法行为。作为一个网民,更希望自己的电脑不被感染。QQ在中国,几乎能上网的机器都装有,当然溢出攻击,ARP欺骗,共享漏洞入侵等等,这些漏洞的发现到利用都不是那么容易。而QQ一旦爆发漏洞那将是个人电脑的危机。所以象腾讯这样的网站,做好安全不仅为自己避免损失,更是对广大网民的负责。对于漏洞修补建议,个人没什么建议,腾讯的专家们想必我的技术与其无法比。你们会有更好的方案。而不要草草了事就好。