IE6sp1 showModalDialog方法远程文件下载执行漏洞分析
作者:czy http://czy82.mblogger.cn/
最近泰半年IE一连出了好几个漏洞,其中最严重也是如今网页木马利用最多
的一个当属IE Object Data的漏洞了.可这已经是客岁8月份就公布的.只需打了
Q822925就能补上了,所以我一直在找一个能敷衍Q822925的新洞洞并好好分析一下.
终于机会来了,几天前我去绿盟(nsfocus.com)看贴子,注意到IE又出了个新洞
洞,文章标题是Microsoft Internet Explorer Modal Dialog区域绕过漏洞,绿盟对这个
洞洞的形貌大意是:Microsoft Internet Explorer存在漏洞允许跨区域拜访,长途攻击
者可以利用这个漏洞在当地电脑区域中执行恶意脚本。攻击者可以构建通报一个动态创建的
IFrame给Modal Dialog对象,并且这个对象调用通过Windows Script Encoder (screnc.exe)
编码,诱利用户翻开时,可造成以客户权限在当地区上下文执行恶意脚本,包罗下载安装恶意程序。
这个漏洞也可招致拜访内部域属性,允许其他范例的攻击如获得攻击者选择的敏感或私有信息。
看来这简直是一个大洞洞哦,还好没有多少人注意到这个洞洞,而文章中又给出了一篇老
外写的分析名字叫:对Ilookup木马的分析(An analysis of the Ilookup Trojan)(http://62.131.86.111/analysis.htm)
代码都在这儿了还不分析做什么呢?本来以为分析会比力简单的因为代码都是现成的,但详细
分析后才发现不少题目.所以下面的分析基于我自已的代码.
测试体系:win2000 pro sp4+ie6 sp1+Q822925
下面我就根据漏洞的利用思绪一步步介绍:
第一步:
在网页中产生一个IFRAME并且内容为当地文件看到这句大概各人会想到:
把如下代码存在iframe.htm中在当地欣赏显示如下:(图iframe1.bmp)
这阐明当地html文件可以通过IFRAME仿问当地的别的文件因为他们都属于"当地电脑区域".
把这个iframe.htm存放在办事器上试试:(图iframe2.bmp)
这阐明网页文件通过IFRAME不能仿问当地的文件因为他们一个属于"当地电脑区域"一个是"internet区域",而IE的安全设置为
不能对不同区域的文件进行仿问.
怎样办呢这儿有一个最新的跨域仿问洞洞:老外的代码如下:
下面是redir.php的代码
<% Thread.sleep(1500);
response.setStatus(302);
response.setHeader("Location", "URL:ms-its:C:\\WINNT\\Help\\iexplore.chm::/iegetsrt.htm");
%>
看看老外是怎样发现这个洞洞的:
2002年9月有个老外发现了一个洞洞通过
response.setHeader("Location", "ms-its:C:\\WINNT\\Help\\iexplore.chm::/iegetsrt.htm");
如许的代码就可以在网页中仿问当地资源了,但是IE6SP1补上了这个洞洞.不过在ms-its:后面加上个URL标识就又可以仿问了.
我把代码改成ASP的如下:
----------------re.asp------------
<%
TimeIt(4)
Response.Status = "302"
Response.AddHeader "Location","URL:ms-its:C:\WINNT\Help\iexplore.chm::/iegetsrt.htm"
Function TimeIt(N)
StartTime = Timer
do while endtime-starttime
loop
End Function
%>
-------------------end-------------
其中Response.Status是设置办事器要相应的状态行的值。Response.status="状态形貌字符串",
字符串可以为一个三位整数或一串阐明笔墨构成,但必需防在之前。这儿只能是302
Response.AddHeader是设置HTTP的头字段.
重新写一个叫iframe2.htm的文件内容如下:
执行后如图iframe3.bmp怎样样如今我们就跳过了IE6SP1的安全限制.乐成的在internet区域的文件中参加了一个
"我的电脑区域"的文件.
第二步:
众所周之我的电脑区域中的网页代码的安全限定要小得多,如今我们要做的就是怎样把我们的代码"注入"到我的电脑区域中
并且执行它们.这儿老外利用了第二个洞洞就是标题中的showModalDialog方法长途文件下载执行漏洞.
先来看看下面的代码:(代码较为复杂请细细阅读)
-------------------------show.htm-------------
-------------------------end------------------
---------------------mdold.htm-----------------
---------------------end-----------------------
注意包罗当地电脑区域文件的IFRAME叫myiframe.
起首网页利用document.write 成生这个IFrame,然后调用setTimeout隔0.1秒在myiframe中执行execScript方法.
这儿要注意的是如果我们把show.htm和modold.htm放在当地执即将出现两处提示说回绝仿问.不过我们把setTimeout
的值改大点就行了.但是如许在网站上又将出现"回绝仿问"的提示.所以后面我所有的测试均在网站上测试当地不再考虑了.
另外还要阐明的是:re.asp刚开始执行的时候必需有一个延时,否则仍旧会提示"回绝仿问"!!!
----------------begin--------
TimeIt(4) '调用自定义函数延时4秒
Function TimeIt(N)
StartTime = Timer '得到函数开始执行时的时间
do while endtime-starttime
loop
End Function
-----------------end---------
适才说到在myiframe中调用execScript第一次调用时参数是InjectedDuringRedirection.toString()即是是在iegetsrt.htm中生成
如下代码:
function InjectedDuringRedirection(){
var bbb="i am czy";
aaa= {h : bbb};
showModalDialog('modold.htm',aaa,"dialogTop:500\;dialogLeft:200\;dialogHeight:1\;dialogWidth:1\;")
}
第二次调用参数为InjectedDuringRedirection()就即是调用了适才生成的代码.
(toString的详细介绍请参见MSDN)
把下面的代码放在网站中测试.我们会看到一个模态网页框弹了出来.图mod1.bmp
这儿好象能阐明我们的代码在当地文件iegetsrt.htm中注入乐成.不过注意模态网页的状态栏显示的区域仍旧是internet失望了吧.
看来IE的洞洞还不是那么好找的.究竟是怎样回事呢?我是如许料想的?
老师成了myiframe它的src是由re.asp生成的而且存心延时了4秒.然后在src中的当地文件还没有加载的时候代码被注入到了其中.
这时IE将做安全查抄因为src还没有被加载所以myiframe的属性还是internet区域,当然我们的代码一定就能被注入.这也就能解释
为什么把setTimeout设为5秒后为什么会提示"回绝仿问"了.
所以到如今为止我们在modold.htm中的代码的执行权限还是在"internet区域"中,我们还没有打破ie的执行限制.换句话说就是
我们试图在modold.htm中加载一些恶意代码是没有用的.但为什么老外末了解决了这个题目呢?逐步看吧,it's a very acumen code.
先来看看showModalDialog方法的的第二个参数.MSDN中阐明如下:
利用这个参数可以传输任何款式的值给对话框,对话框通过window.dialogArguments可以得到传过去的值
老外传了一个window过去.这个window也就是myiframe
showModalDialog('md.htm',window,"resizab.......................).location=".............."
新的模态对话框代码如下:
-------------------md.htm--------------------
---------------------end---------------------
再来看看模态对话框的一个专有属性window.returnValue MSDN中阐明如下:
当模态对话框关闭的时候通过设置returnValue如许翻开这个模态对话框的主窗口得
就能得到返回的值.下面我举个简单的例子:
---------------------fa.htm----------------
-----------------------end------------------------
-----------------------abc.htm-------------------
-----------------------end-----------------------
执行fa.htm后翻开abc.htm,关闭abc.htm后在fa.htm中将打出"i am return"
如今就好理解些了.再来看老外的代码吧:
window.returnValue = window.dialogArguments;
把showmodaldialog的返回值也设为window,同时在设置location为一个新的值.
大概说
showModalDialog('md.htm',window,"resizab.......................).location=".............."
也可以改成:
showModalDialog('md.htm',window,"resizab.......................)
然后md.htm中的returnvalue改为下面的代码:
window.returnValue = window.dialogArguments.location="................";
另有一个题目就是对话框什么时候关闭呢?老外代码如下:
function CheckStatus(){
try{tempVar=window.dialogArguments.location.href;}catch(e){window.close();}
setTimeout("CheckStatus()",100);
}
CheckStatus();
每隔0.1秒查抄一下myiframe的location.href的值,当当地文件加载乐成后myiframe的域将改变这时将发生一个
安全非常,这时就会执行到catch里的代码window.close
好了当模态对话框架关闭后myiframe的安全属性也就是"我的电脑区域"!由于我们的返回值是改变这个myiframe
的location属性那么这儿就可以注入我们的代码啦.
为什么?实在改变myiframe的location属性也就即是在IE的地点栏输出代码一样好比说我们可以在IE的地点栏
输出javascript:'i am czy'
聪明的你大概想到了如今myiframe的安全属性是"我的电脑区域"那么在内里执行代码应该也就能打破IE的安全限制了
真的能行吗?我试了不行哈.为什么不行呢?我想大概是因为IE对在location内里执行的代码做了专门的限制,但是我们可以
先通过location内里的脚本语句再注入一个iframe到myiframe中心去,然后再注入恶意代码.
为什么通过location可以注入代码到myiframe中去呢?因为locatoin是myiframe中的一个属性嘛.
location中的语句怎样写呢?代码如下:
location="javascript:'
--------------------------------end----------------------
完整代码如下:
-----------------------------------------instal.htm--------------------
#--------------------# #
# IE6sp1 new bug # #
# 2004.06.10 #
# by czy # #
#--------------------# #
----------------------------------end-----------------------------
第四步:遇到的一些题目:
1)怎样找一个当地一定存在的帮助文件:
C:\WINDOWS\Help\iexplore.chm::/iegetsrt.htm
这是XP中,2000中为
C:\WINNT\Help\iexplore.chm::/iegetsrt.htm
2)木马可以放在什么中央呢?
如果不用顿时执行的话也可以试试启动目次啊.
3)洞洞对98有用吗?98中没有adodb.stram对象所以没有用.
4)加密?
是啊如今杀毒的东东越来越多,可以利用wse对脚本加一下密.
5)要执行程序只能调用mms吗?
通过location.href的办法来执行程序真是一个奇妙的办法啊,不过老外
最早是通过覆盖wmplayer.exe然后location.href设为mms://来调用的
这儿有一个题目是如果体系中装了别的的插放软件或是media player装的
版本不一样的话大概失败,所以我想到了覆盖programe files下的msimn.exe然后
location.href设为news,当然另有一些别的的变通办法.
测试地点:www.chinansl.com/czy/instal.htm
(只对2k有效)
- 文章作者: 福州军威计算机技术有限公司
军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。
TAG:
评论加载中...
|