漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-017390
漏洞标题:腾讯某站下一处跨大域dom xss
相关厂商:腾讯
漏洞作者: 只抽红梅
提交时间:2013-01-16 18:09
修复时间:2013-03-02 18:09
公开时间:2013-03-02 18:09
漏洞类型:xss跨站脚本攻击
危害等级:低
自评Rank:5
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-01-16: 细节已通知厂商并且等待厂商处理中
2013-01-17: 厂商已经确认,细节仅向厂商公开
2013-01-27: 细节向核心白帽子及相关领域专家公开
2013-02-06: 细节向普通白帽子公开
2013-02-16: 细节向实习白帽子公开
2013-03-02: 细节向公众公开
简要描述:
昨天在zone里面看到“猪猪侠”发的一个帖子以及讨论
http://zone.wooyun.org/content/2361
正好又有sogili大牛的科普《猥琐流之webkit神跨域》
http://zone.wooyun.org/content/2365
其实我所知道更早的应该是前端牛JerryQu的博文《Webkit下最无敌的跨大域方案》
http://www.imququ.com/post/document_domain_bug_in_webkit.html
所以就去google下看能不能找到一处这样的问题。通过 "site:qq.com inurl:domain"参数可以找到一些,见详细说明。
详细说明:
由于上面的文章说的很清楚,我这里就简单描述下:
由于同源策略的限制,document.domain常用来进行跨域做一些事情,所以在腾讯的大部分业务中都有:
这样的代码。
但是有的时候业务需要可能并没有通过js写死在页面中,而是通过js在url中取值来进行设置,比如:
http://a.qq.com/?domain=qq.com
http://b.qq.com/#qq.com
这样在以前本没有任何问题,因为在qq.com域下是没有办法设置document.domain为baidu.com域或者com域的。
但是webkit内核却支持设置到最后一级也就是
好了,开始看我们找到的实例:
http://imgcache.qq.com/qqshow_v3/htdocs/live/popup/361/popup.html?domain=qq.com
这个页面中有如下代码:
我们猜测上面的QSFL.excore.getURLParam函数就是取URL中的domain参数。
在http://imgcache.qq.com/ac/qqshow/qsfl/2_71/core.js这个js中我们找到了QSFL.excore.getURLParam函数,就是和我们猜测的一样。
这样我们就可以通过下面的url来设置document.domain为com
http://imgcache.qq.com/qqshow_v3/htdocs/live/popup/361/popup.html?domain=com
只在webkit内核的浏览器下有效哦,chrome和safari都是webkit的浏览器。
漏洞证明:
http://imgcache.qq.com/qqshow_v3/htdocs/live/popup/361/popup.html?domain=com
直接通过chrome访问这个页面,然后看下document.domain的值就可以看到效果。
是不是有疑问在实战中如何利用?
我们在我们的任意站点下通过iframe包含这个有漏洞的页面,通过在我们的站点页面下也设置document.domain为com域,这样就突破了同源策略的限制,我们就可以在我们的站点页面向iframe页面注入js代码。
说了这么多实例代码我想就不再需要我给出了吧?
修复方案:
1、document.domain写死为qq.com
2、可以通过location.host来取值
版权声明:转载请注明来源 只抽红梅@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:5
确认时间:2013-01-17 09:53
厂商回复:
非常感谢您的报告。这个问题我们已经确认,正在与业务部门进行沟通制定解决方案。如有任何新的进展我们将会及时同步。
最新状态:
暂无