Q-Zone跨站入侵漏洞的详细分析与利用

来源:网络收集 作者:admin 阅读: 字体:[ ] [打印] [关闭]
自定义标签 wzsp 未创建

内容提要:技术点:CSS跨站漏洞 用户输入过滤方式 修改IE提交数据 跨站盗取COOKIE 前不久,腾讯新推出的网络空间Q-ZONE暴出了存在跨站漏洞,很难想象,一项新推出的业务居然如果脆弱,不由不让人佩服腾讯的开发能力,下面便我们 ……

技术点:CSS跨站漏洞 用户输入过滤方式 修改IE提交数据 跨站盗取COOKIE

前不久,腾讯新推出的网络空间“Q-ZONE”暴出了存在跨站漏洞,很难想象,一项新推出的业务居然如果脆弱,不由不让人佩服腾讯的开发能力,下面便我们来了解一下“Q-ZONE”的这一跨站漏洞吧。

Q-Zone跨站漏洞的分析

1、Q-Zone对用户输入的过滤

进入Q-Zone后,依次点击“设置→空间设置→QQ空间名称”,在这里将可以修改空间的显示名称。如果我们写入一段可执行的脚本代码,只要过滤不严格的话,同样会被保存在首页中,通过调用执行代码,达到攻击浏览者的目的。下面我们先测试一下这个输入框中能否写入跨站脚本:

在“输入空间名称”输入框中输入上面的代码“”时,发现在输入框中限制了输入字符的长度,总共只能输入24个字符。而且当我们输入许可长度的代码,点击提交后会弹出“请不要在输入中包含"<>等字符”的对话框。看来Q-Zone对用户的输入进行了过滤。

2、查看Q-Zone的输入过滤方式

在Q-Zone页面中点击“查看→源文件”,在代码段开始处,可以看见如下代码段:

if (!checkFormValue(form1)) return false;

len = StrLenOfAscii(form1.spacename.value)/2;

if (len> 12) {

有一点点ASP编程基础的用户,相信都可以看懂这段代码吧?在代码中通过“StrLenOfAscii()”函数,获得了用户输入数据ASCⅡ码的长度,除2后赋值给len变量。后面的代码检测len变量长度大于12的话,就提示输入名称太长。最重要的是前面的一句:“if (!checkFormValue(form1)) return false”,其中“checkFormValue()”函数很明显可以推断是用来检测输入数据中是否包含特殊字符的。当检测到数据中包含被过滤的字符时,就弹出了前面所说的对话框。

通过分析,我们可以肯定Q-Zone是在客户端对用户输入数据进行过滤的。

Q-Zone跨站漏洞的利用

即然Q-Zone是在客户端对用户输入数据进行过滤的,那么就给我们留下了可利用的机会。我们可以绕过客户端的限制,直接修改输入数据进行提交。但是Q-Zone对用户提交数据还进行了另外一个限制,就是不允许外站提交,在这里我们保存的HTML文件也无法正常提交数据。因此,我们必须另外想一个办法,修改提交数据。

1、截获提交数据

我们先运行一个叫作WSockExpert的软件,运行WSockExpert后点击工具栏上的“打开”按钮,显示当前的进程列表。如果是用QQ的面板打开Q-Zone的,那么在进程列表中选择“QQ.exe→**的家”;如果是用IE打开Q-Zone的,可以在IE进程中找到相应的进程,确定后点击“Open”按钮开始监视与网站服务器交换的数据。

返回到Q-Zone网页中,在“空间名称”处输入任意可提交的字符如“1234567890”,然后点击“提交”,回到WSockExpert中,点中间列表框中的第3行“send”附近的数据栏,可以看到提交的数据内容:

“Content-Length: 20

Cookie: pvid=1575119174; portalentryurl=http://vnet.qq.com/hn/; zzpaneluin=41346583; zzpanelkey=753923CF61AB165D613966B82F8E7F6B2D9E5A681CE7507E9A677086A89BC6DD; clientver=1305; skey=; uin=g0

spacename=1234567890”

“Cookie”是Cookie内容,包含了用户验证的东西;而“spacename=1234567890”就是我们提交的空间名称数据了;前面的“Content-Length: 20”是提交的这段数据的长度。在数据中,还可以看到“Referer: http://q-zone.qq.com/cgi-bin/user/cgi_show_spacename&

123下一页
[标签: Q-Zone跨站入侵漏洞的详细分析与利用] [打印] [关闭]
站长评论(1) 查看所有评论
相关新闻

热门新闻

推荐新闻