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

漏洞概要

缺陷编号:WooYun-2013-020440

漏洞标题:QQ空间某功能缺陷导致日志存储型XSS - 7

相关厂商:腾讯

漏洞作者:gainover

提交时间:2013-03-22 09:13

公开时间:2013-05-06 09:14

漏洞类型:XSS 跨站脚本攻击

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

Tags标签:

漏洞详情

披露状态:

2013-03-22: 细节已通知厂商并且等待厂商处理中
2013-03-22: 厂商已经确认,细节仅向厂商公开
2013-04-01: 细节向核心白帽子及相关领域专家公开
2013-04-11: 细节向普通白帽子公开
2013-04-21: 细节向实习白帽子公开
2013-05-06: 细节向公众公开

简要描述:

跑去看了上一个问题的JS文件,腾讯已经修复了,但是离那处代码不远处,有一个函数名引起了我的注意,于是。。。

详细说明:

1. 又跑去看了下content_gridsblog.js,昨天刚发的漏洞已经修补咯。但是这个文件中的第一个函数引起了我的注意。function flashGetData(){return PageScheduler.blogInfo.getGridData();}flashGetData,从这个文件名,以及我之前自己写FLASH的习惯,这个函数应该是开发人员从FLASH里调用JS中数据的函数接口。也就是说,getGridData()的返回值会被放入FLASH中调用。2. 那么一个问题就来了,这些数据进入FLASH后,FLASH中会不会存在问题呢?于是我们找到要调用这个数据的FLASH。/qzone/newblog/v5/flash/GridsBlog.swf反编译之。可以看到FLASH中确实调用了flashGetData这个函数。

接着获取到的_local4进入了__onSetUserData3. 定位 __onSetUserData

数据进入了 CommonVars.getInstance().setUserData4. 定位 setUserData(

可以看出数据都进入到了this.userData5. 接下来,我们要看userData在哪些地方被使用了呢?先大概搜索了下,发现使用userData的地方比较多,不是很好办!只能采用从上至下的方法,根据软件中类的结果, Main 这个类应该为入口,

我们从它开始看起。类构造函数Main() ---> init() --> __checkInit(),接着3个函数入口,this.initData();this.initView();this.initEvents();其中 initData() 函数体被 if (this._state == "edit"){...} 围绕,跳过之。而 initView() 函数中的 bgURL(背景地址)这个单词,比较有吸引力,如下图:

来自userdata的bgURL赋值给了_local56. 我们继续往下跟踪

_local5进入了一处new BackGroundNavi,那么我们来看看BackGroundNavi这个class

如上图,可以看到_local5最终进入了 BackGroundNavi的 this._viewURL7. 我们往下看看哪些地方调用了this._viewURL

this._viewURL 进入 this._bg.loadPic 函数。8. 定位 this._bg.loadPic,_bg为Background类,我们查找这个类,并定位到它的loadPic方法

最终地址参数进入了一个loader中。loader的类型为ExtLoader, 而ExtLoader代码为:

9. 最后,我们回溯回去,既然ExtLoader继承自Loader,而这个Loader又load了一个地址,而这个地址是来自userdata的bgURL,而userdata的数据来自JS中的PageScheduler.blogInfo.getGridData(),数据中的bgURL我们又是可控的,那么这里显然就是存在XSS问题了。10. 找到我们提交的数据中 bgURL的部分,修改为我们指定的外部FLASH文件,http://xsst.sinaapp.com/Xss.swf,提交数据,

使用大号查看测试号日志,成功执行XSS。

漏洞证明:

见详细说明,IE和chrome均可。

修复方案:

1. 在服务器端对bgURL参数做判断过滤。或者2. 在FLASH中,对bgURL做判断过滤。

漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2013-03-22 13:39

厂商回复:

非常感谢您的报告。这个问题我们已经确认,正在与业务部门进行沟通制定解决方案。如有任何新的进展我们将会及时同步。

最新状态:

暂无

评价

  1. 2010-01-01 00:00 梧桐雨 白帽子 | Rank:1509 漏洞数:154)

    沙发,火前留名

  2. 2010-01-01 00:00 As0n 白帽子 | Rank:2 漏洞数:1)

    神人啊,比SuperHei都牛逼

  3. 2010-01-01 00:00 孤独雪狼 白帽子 | Rank:240 漏洞数:38)

    前排留名

  4. 2010-01-01 00:00 wefgod 白帽子 | Rank:1438 漏洞数:124)

    这个···连载了?

  5. 2010-01-01 00:00 心伤的瘦子 白帽子 | Rank:147 漏洞数:21)

    二哥这个月完爆QQ空间团队。
    QQ空间团队:“恨死你这个乌云老二了,这个月的绩效考核又被你搞没了!!怒~~”

  6. 2010-01-01 00:00 px1624 白帽子 | Rank:963 漏洞数:126)

    @心伤的瘦子 赞同下~

  7. 2010-01-01 00:00 鬼魅羊羔 白帽子 | Rank:274 漏洞数:36)

    二哥,你这是要刨人家组祖坟啊?

  8. 2010-01-01 00:00 冻心 白帽子 | Rank:5 漏洞数:3)

    神人

  9. 2010-01-01 00:00 猥琐 白帽子 | Rank:4 漏洞数:1)

    已经埋伏于回家路上

  10. 2010-01-01 00:00 黑色的屌丝 白帽子 | Rank:23 漏洞数:2)

    腾讯又要加班了

  11. 2010-01-01 00:00 褪色的黑 白帽子 | Rank:40 漏洞数:7)

    人家程序员的饭碗要丢了。。

  12. 2010-01-01 00:00 小胖子 白帽子 | Rank:1429 漏洞数:107)

    哈哈哈哈哈~二哥碉堡了!!!!!!!!!!!!

  13. 2010-01-01 00:00 苏南同学 白帽子 | Rank:41 漏洞数:5)

    哎呀,哎哎呀,果断追星了我。gainover就是偶像啊~~~

  14. 2010-01-01 00:00 none 白帽子 | Rank:40 漏洞数:5)

    二哥过完年回来了

  15. 2010-01-01 00:00 Jannock 白帽子 | Rank:2116 漏洞数:212)

    偶像!求带呀。。

  16. 2010-01-01 00:00 Blackeagle 白帽子 | Rank:62 漏洞数:10)

    @Jannock 哈 一哥都现身了

  17. 2010-01-01 00:00 lucky 白帽子 | Rank:316 漏洞数:40)

    学习了!二哥给力呀!

  18. 2010-01-01 00:00 VivenChen 白帽子 | Rank:8 漏洞数:1)

    厉害

  19. 2010-01-01 00:00 明月影 白帽子 | Rank:0 漏洞数:1)

    js代码审计。