TFTP Brute Forcer
2024-9-1 06:59:21 Author: packetstormsecurity.com(查看原文) 阅读量:2 收藏

##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Auxiliary
include Msf::Auxiliary::Scanner
include Msf::Auxiliary::Report

def initialize
super(
'Name' => 'TFTP Brute Forcer',
'Description' => 'This module uses a dictionary to brute force valid TFTP image names from a TFTP server.',
'Author' => 'antoine',
'License' => BSD_LICENSE
)

register_options(
[
Opt::RPORT(69),
Opt::CHOST,
OptPath.new('DICTIONARY', [ true, 'The list of filenames',
File.join(Msf::Config.data_directory, "wordlists", "tftp.txt") ])
])
end

def run_host(ip)
begin

# Create an unbound UDP socket if no CHOST is specified, otherwise
# create a UDP socket bound to CHOST (in order to avail of pivoting)
udp_sock = Rex::Socket::Udp.create(
{
'LocalHost' => datastore['CHOST'] || nil,
'Context' =>
{
'Msf' => framework,
'MsfExploit' => self,
}
}
)
add_socket(udp_sock)

fd = File.open(datastore['DICTIONARY'], 'rb')
fd.read(fd.stat.size).split("\n").each do |filename|
filename.strip!
pkt = "\x00\x01" + filename + "\x00" + "netascii" + "\x00"
udp_sock.sendto(pkt, ip, datastore['RPORT'])
resp = udp_sock.get(3)
if resp and resp.length >= 2 and resp[0, 2] == "\x00\x03"
print_good("Found #{filename} on #{ip}")
#Add Report
report_note(
:host => ip,
:proto => 'udp',
:sname => 'tftp',
:port => datastore['RPORT'],
:type => "Found #{filename}",
:data => "Found #{filename}"
)
end
end
fd.close
rescue
ensure
udp_sock.close
end
end
end


文章来源: https://packetstormsecurity.com/files/180942/tftpbrute.rb.txt
如有侵权请联系:admin#unsafe.sh