漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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的话,还会显示百度认证图标-,-
偶尔崩溃的情况
漏洞证明:
修复方案:
修复上面几个问题
版权声明:转载请注明来源 blast@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2014-01-27 08:18
厂商回复:
此问题在预览版中已修复,感谢提交。
最新状态:
暂无