百度空间 | 百度首页 
 
查看文章
 
The Week of Baidu Bugs - Day 07: 终章,谢幕
2008-07-17 11:51
注:版权所有,转载请注明出处。

连续发了这么多天漏洞,到后来有点倦怠了,跨站跨到手软,码字码到吐血

然而我觉得这一切是有意义的,对我自己来说是个总结归纳的过程,对大家来说是个饭后不错的谈资,对百度来说有人免费帮他们做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 XSS0day(发文那里),不过我这次没找出来,也许哪天机缘到了,自然就发现了。

挖漏洞这事情和修真差不多,一看机缘,二看心智,最后才是看资质根骨。所以修真修的好的人,估计挖漏洞也会很厉害,比如SST的dm巨牛,修真就比较厉害。

这些漏洞归类起来,都是比较常见的漏洞,可惜这次没能发现什么注射。程序员现在对注射的防范比较好,因为意识上去了,而且从理论上来说,注射是可以杜绝掉的。

我不知道百度是否会存在注射,即便是有,可能也会很隐蔽,需要绕几个流程才能到的那种,或者是要有付费帐户一类。但根据我发现的漏洞,窥一斑而知全豹,我怀着恶意的心灵揣测,应该是存在注射的,我们需要时间和耐心去把它挖出来,可惜这两者我都欠奉,所以就把机会留给后来者吧!

还有一些设计上的漏洞,由于对baidu的业务架构还不是太熟悉,所以暂时也还没有找到。

但是仅从代码层面上来说,这次WoBB活动,还是比较圆满的。这些漏洞和威胁都是真实存在的,但是却往往被忽视。也许哪一天,百度就爆发XSS WORM了。

关于漏洞利用还有一些风险问题,我以后会慢慢写文章来阐述。

如果百度有专门的技术方面的安全部门,可以与我联系下。






类别:象牙塔 | 添加到搜藏 | 浏览() | 评论 (9)
 
最近读者:
 
网友评论:
1
2008-07-17 15:23 | 回复
沙发 关注了几天了 对跨站脚本一类很有兴趣 读了这几篇连载 收获颇丰 谢谢博主
 
2
2008-07-17 15:30 | 回复
鼓掌~
 
3
2008-07-17 15:52 | 回复
写XSS WORM还没那么简单,简单的模仿重复提交是很挫的。 至少要对整个程序的应用层逻辑很熟悉,考虑传播的方式以及整个流程, 最高的境界是使用被攻击程序自己的开发框架衍生出来的WORM。 我想国内较成功的XSS WORM只有两个,一个是神秘人写的校内网XSS WORM,另外一个是JX的百度XSS WORM. 当然最后一点关键,就是XSS WORM必须有一个非常好用的持久型XSS漏洞,涉及破XSS Filter的很多WS技巧,不过现在百度的XSS Filter还是能被BYPASS的:)
 
5
2008-07-17 16:17 | 回复
校内网的WORM,是去年的事了。 那时候研究XSS的人还很少~在大家抓到我们样本分析的时候之前半年的事了。 而且代码风格也稍微有点乱。
 
6
2008-07-17 18:04 | 回复
汗 我又晚了...... http://planet.ph4nt0m.org/ 的更新好慢呀
 
7
2008-07-17 18:22 | 回复
去年利用一个国内SNS站点的自带api写了一个worm,就几十行代码,那叫一个短小精巧。^_^
 
8
2008-07-17 20:47 | 回复
5555 我的沙发....
 
9
2008-07-17 21:38 | 回复
我的worm确实是在这两人的基础上才搞出来的,这在我以前的文章有提过。依环境而生的worm才是好worm。呵呵。
 
10
2008-07-18 10:14 | 回复
应该说,是在好几只worm基础上:)。其实最受益匪浅的还是那个神秘人的校内worm。还有whitehat的一些白皮书,还要多谢sla.ckers论坛。哦,还有pdp牛人。貌似还挺多的。。
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu