metasploit-framework/modules/auxiliary/scanner/nessus/nessus_xmlrpc_ping.rb

77 lines
1.9 KiB
Ruby
Raw Normal View History

##
2012-11-15 21:43:47 +00:00
# nessus_xmlrpc_ping.rb
##
##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
require 'msf/core'
class Metasploit3 < Msf::Auxiliary
2013-08-30 21:28:54 +00:00
include Msf::Exploit::Remote::HttpClient
include Msf::Auxiliary::Report
include Msf::Auxiliary::Scanner
2013-08-30 21:28:54 +00:00
def initialize
super(
'Name' => 'Nessus XMLRPC Interface Ping Utility',
'Description' => %q{
This module simply attempts to find and check
for Nessus XMLRPC interface.'
},
'Author' => [ 'Vlatko Kosturjak <kost[at]linux.hr>' ],
'License' => MSF_LICENSE
)
2013-08-30 21:28:54 +00:00
register_options(
[
Opt::RPORT(8834),
OptInt.new('THREADS', [true, "The number of concurrent threads", 25]),
OptString.new('URI', [true, "URI for Nessus XMLRPC. Default is /", "/"])
], self.class)
2013-08-30 21:28:54 +00:00
register_advanced_options(
[
OptBool.new('SSL', [ true, "Negotiate SSL for outgoing connections", true])
], self.class)
end
2013-08-30 21:28:54 +00:00
def run_host(ip)
begin
res = send_request_cgi({
'uri' => datastore['URI'],
'method' => 'GET'
}, 25)
http_fingerprint({ :response => res })
rescue ::Rex::ConnectionError => e
vprint_error("#{datastore['URI']} - #{e.to_s}")
return
end
2013-08-30 21:28:54 +00:00
if not res
vprint_error("#{datastore['URI']} - No response")
return
end
if not (res.code == 200 or res.code ==302)
vprint_error("HTTP Response was not 200/302")
return
end
if res.headers['Server'] =~ /NessusWWW/
print_good("SUCCESS. '#{ip}' : '#{datastore['RPORT']}'")
report_service(
:host => ip,
:port => datastore['RPORT'],
:name => "nessus-xmlrpc",
:info => 'Nessus XMLRPC',
2014-07-28 17:49:24 +00:00
:state => 'open'
2013-08-30 21:28:54 +00:00
)
else
vprint_error("Wrong HTTP Server header: #{res.headers['Server'] || ''}")
end
2013-08-30 21:28:54 +00:00
end
end