记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

QQ空间某功能缺陷导致日志存储型XSS

2013-05-01 15:45
QQ空间日志某处功能缺陷,导致存储型XSS。
 
每次想去瞄一下QQ空间的时候,总能随手发现存储型XSS。
 
关键代码定位+调试 小教学贴。

1. QQ空间日志里面有一个魔方日志的功能。我们随便写一篇模仿日志。
 
2. 抓包,并且看发表日志后的内容。
 
这里值得我们注意的是,HTML中输出的日志内容是一个 img标签,如下图
 
 
 
而我们看到的日志中,则存在FLASH。
 
 
3. 从上面可以推出,这里必然会经过某些dom操作,从而将IMG标签转变为OBJECT标签。
 
我们先得到FLASH名称.
 
 
接着定位与这个魔方日志有关的功能代码。
 
 
-----------------------------分割线------------------
 
5. 好吧,其实以上都是废话,重点是下面的,
 
FLASH将我们带到了这个JS文件, 我们将 http://ctc.qzs.qq.com/qzone/app/blog/v6/script/content_gridsblog.js 美化一下,再看看代码。
 
发现FLASH的部分并没有我们可控的部分。但是可以定位代码下面这样一段代码。
 
GridsScheduler._showGridBlogShortcut();
 
-->
在 _showGridBlogShortcut 函数中,有
 
eval('var oGridInfo = ' + PageScheduler.blogInfo.getGridData());
 
6. PageScheduler.blogInfo.getGridData() 这个被eval的是什么数据呢?由于是iframe页面里的变量,直接控制台里没办法输出PageScheduler.blogInfo.getGridData, 我们可以采用“将网络JS映射至本地文件的方法”。
 
 
将映射到本地的JS文件里修改为
 
 
....
alert(PageScheduler.blogInfo.getGridData());
eval('var oGridInfo = ' + PageScheduler.blogInfo.getGridData());
....
 
7. 接着我们刷新页面,重新打开日志。(* 由于_showGridBlogShortcut 函数中存在判断,必须以外人身份查看日志,才能触发。)
 
看到弹出的 PageScheduler.blogInfo.getGridData() 数据如下。
 
 
 
8. 而这个数据,我们是否可控呢?答案是,我们很有可能可控,因为这个数据,我们提交日志的时候,就存在,如下图:
 
 
9. 既然如此,我们将 gridJson这个字段,修改一下,加一段自己的JS代码。
 
 
10. 以自己号码查看测试号码的日志,成功执行代码
 
 
 



 
 
ie,chrome下均可。
 

 
修复方案:


不影响功能的前提下,对eval的数据有所判断或者过滤。
 


知识来源: www.2cto.com/Article/201305/207377.html

阅读:423476 | 评论:0 | 标签:xss

想收藏或者和大家分享这篇好文章→复制链接地址

“QQ空间某功能缺陷导致日志存储型XSS”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

黑帝公告 📢

十年经营持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

客黑业创的万千入年:由自富财

❤用费0款退球星,年1期效有员会

🧠富财控掌,知认升提,长成起一💡

标签云 ☁