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

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

缺陷编号:wooyun-2013-033430

漏洞标题:QQ浏览器 XSS 漏洞

相关厂商:腾讯

漏洞作者: 心伤的胖子

提交时间:2013-08-03 22:35

修复时间:2013-09-17 22:35

公开时间:2013-09-17 22:35

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

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-08-03: 细节已通知厂商并且等待厂商处理中
2013-08-05: 厂商已经确认,细节仅向厂商公开
2013-08-15: 细节向核心白帽子及相关领域专家公开
2013-08-25: 细节向普通白帽子公开
2013-09-04: 细节向实习白帽子公开
2013-09-17: 细节向公众公开

简要描述:

QQ浏览器中本地某文件过滤不严导致 XSS 漏洞。

详细说明:

测试版本:7.4.11785.400 Beta
访问一个任意不存在的页面,QQ浏览器会使用自己的 404 页面进行替换。如下图:

qq1.png


右键查看页面属性为:
qqbrowser://html/error.html#404&指定的网页不存在&http://xxx.qq.com/xxx
接着查看源代码,找到了自定义 404 页面的代码,如下:

<script type="text/javascript" src="http://www.qq.com/404/search_children.js" charset="utf-8"></script>
<script type="text/javascript">
var tempUrl = document.location.href;
var i = tempUrl.indexOf("#");
i = tempUrl.indexOf("&", i + 1);
i = tempUrl.indexOf("&", i + 1);
url = tempUrl.substring(i + 1);
var a = document.getElementsByTagName("a");
for(i=0; i<a.length; ++i){
if(a[i].className=='back_home'){
a[i].className = "";
a[i].innerText = "刷新本页";
a[i].setAttribute('href', url);
onload = true;
break;
}
}
</script>


从上面代码可以看到,我们要访问的不存在的链接最后会成为一个 a 标签的 href 属性,如果我们构造如下的代码是不是可以产生一个本地的 XSS 呢?
qqbrowser://html/error.html#404&指定的网页不存在&javascript:alert(1)
扔到浏览器中访问,然后点击上图中的“刷新本页”,是不是弹了。如下图:

qq2.png


其实源代码中还有一处:

function handleRefresh(e) {
if (url && !url.match(/^http/i)) {
return;
}
document.location.href = url;
}


只是这地方却对 URL 进行了判断,有点不明白同一个页面为什么只有一处过滤了?
这个 XSS 应该属于 qqbrowser 域,不过貌似做不了什么事情。

漏洞证明:

如下图:

qq2.png

修复方案:

对 URL 进行处理。

版权声明:转载请注明来源 心伤的胖子@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2013-08-05 10:14

厂商回复:

感谢反馈,该漏洞已经有人提前报告过,目前正在排期修复中。

最新状态:

暂无


漏洞评价:

评论

  1. 2013-08-03 22:44 | 橙夏 ( 实习白帽子 | Rank:35 漏洞数:4 | 喵呜喵呜喵呜呜呜 喵呜呜喵呜呜呜呜 喵呜呜...)

    前排关注

  2. 2013-08-03 23:00 | 360安全卫士 ( 路人 | Rank:10 漏洞数:1 | 360安全卫士就是好)

    强势围观

  3. 2013-08-03 23:03 | 一只猿 ( 普通白帽子 | Rank:463 漏洞数:89 | 硬件与无线通信研究方向)

    @360安全卫士 来了啊,呵呵,一起看热闹

  4. 2013-08-03 23:04 | niliu 认证白帽子 ( 核心白帽子 | Rank:1542 漏洞数:206 | 逆流而上)

    mark

  5. 2013-08-03 23:10 | 360安全卫士 ( 路人 | Rank:10 漏洞数:1 | 360安全卫士就是好)

    @一只猿 是呀,就喜欢看腾讯的热闹,呵呵

  6. 2013-08-03 23:11 | evavus ( 实习白帽子 | Rank:80 漏洞数:11 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...)

    Mark

  7. 2013-08-03 23:55 | 封印师 ( 路人 | Rank:4 漏洞数:3 | 我是小彩笔来的。...(。•ˇ‸ˇ•。) ...)

    腾讯滴哎!齐齐来围观!

  8. 2013-08-04 00:11 | p.z 认证白帽子 ( 普通白帽子 | Rank:411 漏洞数:40 )

    胖子 你是要赚钱还债吗

  9. 2013-08-04 00:42 | 心伤的胖子 ( 普通白帽子 | Rank:308 漏洞数:29 | 因为心伤,所以胖子。)

    @p.z 是呀,一堆人追着我要。

  10. 2013-08-04 00:44 | 菊花卫士 ( 路人 | Rank:10 漏洞数:1 | 网站卫士是360旗下为网站提供有偿主动保护...)

    @360安全卫士 大哥 这么早到啊

  11. 2013-08-04 01:03 | 一只猿 ( 普通白帽子 | Rank:463 漏洞数:89 | 硬件与无线通信研究方向)

    @360网站卫士 @360安全卫士 你们这是要闹哪出?

  12. 2013-08-04 06:59 | 我是小号 ( 普通白帽子 | Rank:334 漏洞数:51 | Martin)

    @心伤的胖子 据说在TSRC报告过了~

  13. 2013-08-04 08:48 | 360安全卫士 ( 路人 | Rank:10 漏洞数:1 | 360安全卫士就是好)

    @360网站卫士 好基友呀!

  14. 2013-08-04 09:02 | 心伤的胖子 ( 普通白帽子 | Rank:308 漏洞数:29 | 因为心伤,所以胖子。)

    @我是小号 小号你好

  15. 2013-08-04 09:42 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @鬼魅羊羔 羊羔你好 羊羔再见。

  16. 2013-08-04 09:58 | VIP ( 普通白帽子 | Rank:759 漏洞数:100 )

    @鬼魅羊羔 羊羔你好 羊羔再见。

  17. 2013-08-04 10:56 | Sogili ( 普通白帽子 | Rank:129 漏洞数:27 )

    神似我那个360的啊

  18. 2013-08-05 10:15 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    有人报告你也要说出来 2

  19. 2013-08-05 10:40 | 心伤的胖子 ( 普通白帽子 | Rank:308 漏洞数:29 | 因为心伤,所以胖子。)

    麻烦腾讯仔细确认下和之前报告的是不是一样,表面一样可是实质是不一样的哦。

  20. 2013-08-05 13:19 | 冷静 ( 路人 | Rank:3 漏洞数:2 )

    有人报告你也要说出来 2

  21. 2013-08-05 13:20 | VIP ( 普通白帽子 | Rank:759 漏洞数:100 )

    有人报告你也要说出来 2