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

漏洞概要 关注数(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标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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常用来进行跨域做一些事情,所以在腾讯的大部分业务中都有:

document.domain = "qq.com"


这样的代码。
但是有的时候业务需要可能并没有通过js写死在页面中,而是通过js在url中取值来进行设置,比如:
http://a.qq.com/?domain=qq.com
http://b.qq.com/#qq.com
这样在以前本没有任何问题,因为在qq.com域下是没有办法设置document.domain为baidu.com域或者com域的。
但是webkit内核却支持设置到最后一级也就是

document.domain = "com"


好了,开始看我们找到的实例:
http://imgcache.qq.com/qqshow_v3/htdocs/live/popup/361/popup.html?domain=qq.com
这个页面中有如下代码:

var g_sDomain = QSFL.excore.getURLParam("domain");
…………
document.domain = g_sDomain;


我们猜测上面的QSFL.excore.getURLParam函数就是取URL中的domain参数。
在http://imgcache.qq.com/ac/qqshow/qsfl/2_71/core.js这个js中我们找到了QSFL.excore.getURLParam函数,就是和我们猜测的一样。

QSFL.excore.getURLParam = function (sName, sUrl, rCharSet) {
(!sUrl) && (sUrl = window.location.href);
sUrl = sUrl.toString();
sUrl = sUrl.split("#")[0];
var nIndex = sUrl.indexOf("?");
var _value = (nIndex >= 0) ? QSFL.excore.getParam(sUrl.substr(nIndex + 1), sName, "&", "=") : "";
return _value;
};


这样我们就可以通过下面的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的值就可以看到效果。

qq.jpg


是不是有疑问在实战中如何利用?
我们在我们的任意站点下通过iframe包含这个有漏洞的页面,通过在我们的站点页面下也设置document.domain为com域,这样就突破了同源策略的限制,我们就可以在我们的站点页面向iframe页面注入js代码。
说了这么多实例代码我想就不再需要我给出了吧?

修复方案:

1、document.domain写死为qq.com
2、可以通过location.host来取值

版权声明:转载请注明来源 只抽红梅@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2013-01-17 09:53

厂商回复:

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

最新状态:

暂无


漏洞评价:

评论

  1. 2013-01-16 18:33 | 风萧萧 认证白帽子 ( 核心白帽子 | Rank:1020 漏洞数:76 | 人这一辈子总要动真格的爱上什么人)

    现在还有红梅么?

  2. 2013-01-16 18:54 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1576 漏洞数:184 | 关注技术与网络安全)

    跨大域最近很火啊,学习之。

  3. 2013-01-16 20:00 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

  4. 2013-01-16 20:54 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    大域、、、

  5. 2013-01-17 07:17 | Zhexi ( 路人 | Rank:0 漏洞数:1 | 新欢,旧爱。各自安好、互不打扰。)

    @只抽红梅 跨域.....求洞主指教

  6. 2013-01-19 09:29 | 一刀终情 ( 普通白帽子 | Rank:156 漏洞数:28 | ‮‮PKAV技术宅社区-安全爱好者)

    红梅,常州?

  7. 2013-01-19 10:10 | Xhm1n9 ( 实习白帽子 | Rank:57 漏洞数:13 | bug)

    韶关红梅烟

  8. 2013-02-06 10:59 | fox ( 普通白帽子 | Rank:159 漏洞数:16 | fox)

    @只抽红梅 请问那个地址没权限访问是神马情况, 需要什么权限呢http://zone.wooyun.org/content/2361

  9. 2013-02-06 11:01 | 小胖胖要减肥 认证白帽子 ( 普通白帽子 | Rank:686 漏洞数:101 )

    @fox 加入那个领域 找长短短

  10. 2013-02-06 12:31 | fox ( 普通白帽子 | Rank:159 漏洞数:16 | fox)

    @小胖胖要减肥 好, 多谢, 我记得前几天还看过那个帖子的, 今天倒没权限了