漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-020674
漏洞标题:QQ空间某功能缺陷导致日志存储型XSS - 10
相关厂商:腾讯
漏洞作者: gainover
提交时间:2013-03-26 08:51
修复时间:2013-05-10 08:52
公开时间:2013-05-10 08:52
漏洞类型:xss跨站脚本攻击
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-03-26: 细节已通知厂商并且等待厂商处理中
2013-03-26: 厂商已经确认,细节仅向厂商公开
2013-04-05: 细节向核心白帽子及相关领域专家公开
2013-04-15: 细节向普通白帽子公开
2013-04-25: 细节向实习白帽子公开
2013-05-10: 细节向公众公开
简要描述:
话说微博上看过一故事,某人辛辛苦苦装修了房子,最后发现装修的是别人的房子。 修复漏洞有时候也是这样,出力出在了不该出的位置,辛辛苦苦修复的很好,最后其实修的不是正位置啊~
详细说明:
1. 接着系列8,我们继续阅读/qzone/newblog/v5/flash/GridsBlog.swf的代码。
接着上一次的BackGroundNavi下方不远处,我们可以可以看到 new Grids这段,userData(即我们的json数据)进入了Grids类,如下图:
2. 我们跟踪Grids类。搜索 Class Grids
数据进入了_dataObject后,跳入 initView
3. 在进入initView后,不远处,我们可以看到下面这样一段代码。
this._dataObject.cssSprite... 这个在我们提交的JSON数据里,并没有看到过 cssSprite 这个属性名。看来是某特定功能会用到的属性,读代码的好处这里就可以看出来了,如果是黑盒,是不可能测试到cssSprite这种属性的。
并且,这个cssSprite直接就进入了 load函数。
赤裸裸的漏洞么~~
4. 因此,我们可以修改魔方日志所提交的数据。加上一个cssSprite属性。
可以看到成功执行XSS。
5. 开发人员已经针对系列 8中 bgURL做了完整的修复措施。
我猜,如果我这个漏洞在此处结束,开发人员可能会采用上面的代码,将cssSprite也过滤一次。
就bgURL而言,这个修复是没问题的。但是这样有一点“治标不治本”的感觉,实际上在这个GridsBlog.swf中,load外部资源之前似乎都没有做过滤,所以个人觉得,应该做出修改的是FLASH文件,而不是在JS中一一过滤(吃力不讨好啊),否则就会继续出现本文中的问题。
6. 比如说吧: 其实下面这样也是可以的,将数据里的gXX.content.image 设置为外部FLASH一样可以导致XSS。
见弹窗
后面也不想再刷一次这个GridsBlog.swf,建议你们的开发人员将FLASH里会load外部资源的位置,都先check下,再load。
漏洞证明:
见详细说明
修复方案:
修复FLASH,不要在JS里修拉~
版权声明:转载请注明来源 gainover@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2013-03-26 11:36
厂商回复:
感谢,已在处理中!
最新状态:
暂无