MSN跨站漏洞分析

2008-10-20 13:04:26 来源:IT168.com 作者: 点击:
早在几天前,听到同事说“朋友msn发来一个网页,自己输入了密码,结果过了几天后,MSN密码错误,可能是被盗了。”



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

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

  用DOM解析来分析代码,会容易些。首先看最外层,一对标签。作者并不怎么用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"

  ddddd

test

  -----------------------------7d830d6a0738

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

  为了测试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:e­xpression(”中的表达式执行了。而表达式中的内容也被过滤一部分,不允许出现定义变量,不允许出现“<”等等,大牛无奈之下,定义了一堆div。用div的title属性和innerHTML来存储shellcode,而特殊的值例如“<”

9 7 3 1 2 4 8 :


相关文章:

相关软件:

    无相关新闻

本类最新行业评测技巧教程学院
本类热点本日本周本月
本类推荐本日本周本月

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203