The Week of Baidu Bugs – Day 07: 终章,谢幕
来源:大风起兮云飞扬
注:版权所有,转载请注明出处。
连续发了这么多天漏洞,到后来有点倦怠了,跨站跨到手软,码字码到吐血。
然而我觉得这一切是有意义的,对我自己来说是个总结归纳的过程,对大家来说是个饭后不错的谈资,对百度来说有人免费帮他们做QA测试,所以我看这种活动以后还是要经常开展,比如the Month of Baidu Bugs之类,不过码字好累,最好有人与我勾结勾结,一起狼狈为奸一下。
这次发布了许多漏洞,跨站方面找了15个比较典型的问题,如果真要发,连续发一个月也不是什么难事,不过实在是没精力了。
Baidu空间在发文章处的XSS Filter做的还是非常好的,非常难以绕过。我测试这么多天下来,始终没能正面突破。
简单总结规则如下:
富文本XSS Filter过滤规则:
1. 如果超出首页显示摘要的长度,则会htmlencode
2. 过滤<script> <style> <form>等危险标签
3. 检查 /* */的匹配, 第一个/*找到对应的 */后,比较两边字符是否为 javascript 或expression等敏感词,并迭代检查过滤
4. 匹配尖括号 <> ,如果是 <<<…>>>这种,则只有最里面的尖括号有效,其外面的全部htmlencode
5. 过滤事件比如onclick等
6. 对标签的属性进行为安全性检查,比如src、href、dynsrc等支持伪协议的一些
7. javascript、expression等会被替换为一个空格, \ 也会替换为一个空格
8. 服务器端识别宽字符,如果是 %c1加一个特殊字符(比如*或者/),则整个宽字符会被替换为一个空格,如果是 %c1 加一个字母,则会显示出来。
这种分析是基于语法的,就是会去分析标签、事件,连style标签都分析清楚了,难能可贵。
baidu只针对四个事件没有做过滤
onbeforeupdate,ondataavailable,onrowsdelete,onrowsinserted
其中后三个只能用于 <xml>,<object>,<applet>这三个标签,而百度空间本身就过滤了这些标签,所以也等于是过滤了这些事件。
而对于 onbeforeupdate, 是与IE 的 data binding 有关的,我一直没有找到在类似 <img>标签中利用的例子。
实际上,要从富文本处跨站还是有办法的,就是利用插入flash的方法。
百度的视频插入对源地址做了限制,只能从个别指定网站上插入视频
但是经过测试,发现百度仅仅是简单的对主域名做了判断
就是说插入这种flash是合法的
<EMBED SRC=”http://www.tudou.com/fvck.swf” AllowScriptAccess=”always” type=”application/x-shockwave-flash”></EMBED>
完全没有对后面的二级目录做判断,这也是从以后的可扩展性上来考虑的,估计也没有人来维护这个列表,所以不好做判断。
这就导致了我们只需在他支持的网站中,上传一个swf文件,就能成功在baidu实施跨站了。
但难点是目前这些视频网站都是人工审核的,所以需要找一个上传漏洞,或者找到上传后的地址。
昨天晚上抽了点时间简单看了两家视频网站,发现问题还是不少的,相信再深入进去,很容易就能猜解出上传目录。
所以插入视频、flash处,可以算是百度 XSS Filter的一个弱点
从漏洞分布上来看,核心模块的安全还是做的不错的,但是其他子系统基本上可以用“惨不忍睹”来形容,估计这部分代码是由外包的人员参与的,也没经过专门的安全测试。
根据小道消息说,百度没有专门的安全部门,产品也没有经过专门安全测试。我不知道这是不是真的,闲当八卦。
江湖传说,百度还是有Stored XSS的0day(发文那里),不过我这次没找出来,也许哪天机缘到了,自然就发现了。
挖漏洞这事情和修真差不多,一看机缘,二看心智,最后才是看资质根骨。所以修真修的好的人,估计挖漏洞也会很厉害,比如SST的dm巨牛,修真就比较厉害。
这些漏洞归类起来,都是比较常见的漏洞,可惜这次没能发现什么注射。程序员现在对注射的防范比较好,因为意识上去了,而且从理论上来说,注射是可以杜绝掉的。
我不知道百度是否会存在注射,即便是有,可能也会很隐蔽,需要绕几个流程才能到的那种,或者是要有付费帐户一类。但根据我发现的漏洞,窥一斑而知全豹,我怀着恶意的心灵揣测,应该是存在注射的,我们需要时间和耐心去把它挖出来,可惜这两者我都欠奉,所以就把机会留给后来者吧!
还有一些设计上的漏洞,由于对baidu的业务架构还不是太熟悉,所以暂时也还没有找到。
但是仅从代码层面上来说,这次WoBB活动,还是比较圆满的。这些漏洞和威胁都是真实存在的,但是却往往被忽视。也许哪一天,百度就爆发XSS WORM了。
关于漏洞利用还有一些风险问题,我以后会慢慢写文章来阐述。
如果百度有专门的技术方面的安全部门,可以与我联系下。