Add external IP discovery module
This module performs an HTTP request to ifconfig.me/ip. The body of the response contains the publicly routable IP from which the request originated. This can be useful in discovering routes on pivoted hosts and initial recon as a simple aux module.bug/bundler_fix
parent
24c0da0adb
commit
225b15f7f3
|
@ -0,0 +1,59 @@
|
|||
##
|
||||
# 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::Auxiliary
|
||||
|
||||
# Exploit mixins should be called first
|
||||
include Msf::Exploit::Remote::HttpClient
|
||||
include Msf::Auxiliary::Report
|
||||
include Msf::Auxiliary::Scanner
|
||||
|
||||
def initialize
|
||||
super(
|
||||
'Name' => 'External IP',
|
||||
'Version' => '$Revision: $',
|
||||
'Description' => 'This module checks for the public source IP address of the current route to the RHOST',
|
||||
'Author' => ['RageLtMan'],
|
||||
'License' => MSF_LICENSE,
|
||||
'References' =>
|
||||
[
|
||||
[ 'URL', 'http://ifconfig.me/ip' ],
|
||||
]
|
||||
)
|
||||
|
||||
register_options(
|
||||
[
|
||||
OptEnum.new('RHOSTS', [true, 'The ifconfig.me server to use','49.212.202.172',['49.212.202.172','133.242.129.236']]),
|
||||
OptString.new('VHOST', [true, "The VHOST to use", 'ifconfig.me' ]),
|
||||
OptBool.new('REPORT_HOST', [false, 'Add the found IP to the database', false])
|
||||
], self.class)
|
||||
end
|
||||
|
||||
def run_host(ip)
|
||||
|
||||
|
||||
begin
|
||||
agent = datastore['UserAgent']
|
||||
connect
|
||||
res = send_request_raw({'uri' => '/ip', 'method' => 'GET' })
|
||||
our_addr = res.body.strip
|
||||
if Rex::Socket.is_ipv4?(our_addr) or Rex::Socket.is_ipv6?(our_addr)
|
||||
print_good("Source ip to #{ip} is #{our_addr}")
|
||||
report_host(our_addr) if datastore['REPORT_HOST']
|
||||
end
|
||||
|
||||
end
|
||||
rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout
|
||||
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Errno::ECONNABORTED, Errno::ECONNREFUSED, Errno::EHOSTUNREACH =>e
|
||||
puts e.message
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue