漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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进入了__onSetUserData
3. 定位 __onSetUserData
数据进入了 CommonVars.getInstance().setUserData
4. 定位 setUserData(
可以看出数据都进入到了this.userData
5. 接下来,我们要看userData在哪些地方被使用了呢?
先大概搜索了下,发现使用userData的地方比较多,不是很好办!
只能采用从上至下的方法,根据软件中类的结果, Main 这个类应该为入口,
我们从它开始看起。
类构造函数Main() ---> init() --> __checkInit(),接着3个函数入口,
this.initData();
this.initView();
this.initEvents();
其中 initData() 函数体被 if (this._state == "edit"){...} 围绕,跳过之。
而 initView() 函数中的 bgURL(背景地址)这个单词,比较有吸引力,如下图:
来自userdata的bgURL赋值给了_local5
6. 我们继续往下跟踪
_local5进入了一处new BackGroundNavi,那么我们来看看BackGroundNavi这个class
如上图,可以看到_local5最终进入了 BackGroundNavi的 this._viewURL
7. 我们往下看看哪些地方调用了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做判断过滤。
版权声明:转载请注明来源 gainover@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2013-03-22 13:39
厂商回复:
非常感谢您的报告。这个问题我们已经确认,正在与业务部门进行沟通制定解决方案。如有任何新的进展我们将会及时同步。
最新状态:
暂无