当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-020440

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

相关厂商:腾讯

漏洞作者: gainover

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

修复时间:2013-05-06 09:14

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

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

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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这个函数。

1.jpg


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

2.jpg


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

3.jpg


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

4.jpg


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

5.jpg


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

6.jpg


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

7.jpg


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

8.jpg


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

9.jpg


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

public class ExtLoader extends Loader {
public var userData:Object
}


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

10.jpg


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

11.jpg


漏洞证明:

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

修复方案:

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

版权声明:转载请注明来源 gainover@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

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

厂商回复:

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

最新状态:

暂无