wpscan 3.0.3 → 3.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/core.rb +2 -2
- data/app/controllers/enumeration.rb +2 -2
- data/app/controllers/enumeration/cli_options.rb +7 -7
- data/app/controllers/enumeration/enum_methods.rb +1 -1
- data/app/controllers/main_theme.rb +1 -1
- data/app/controllers/wp_version.rb +1 -1
- data/app/finders/interesting_findings.rb +2 -2
- data/app/finders/interesting_findings/readme.rb +1 -1
- data/app/finders/plugin_version/layer_slider/translation_file.rb +1 -1
- data/app/finders/timthumbs/known_locations.rb +2 -2
- data/app/finders/users/author_posts.rb +1 -1
- data/app/finders/wp_version/atom_generator.rb +1 -1
- data/app/finders/wp_version/rss_generator.rb +1 -1
- data/app/models/timthumb.rb +3 -3
- data/app/models/wp_item.rb +3 -3
- data/app/models/wp_version.rb +0 -1
- data/lib/wpscan/db/updater.rb +2 -2
- data/lib/wpscan/db/wp_items.rb +1 -1
- data/lib/wpscan/target/platform/wordpress.rb +1 -1
- data/lib/wpscan/version.rb +1 -1
- metadata +30 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aec6c21b96dc11fe0d1de37121edb9d4cce6580e
|
4
|
+
data.tar.gz: 9dfc21c798b02915e4e06815d6bc0808b0567f5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7dea9f1e9a2afc8240533a355690381b33f360aa658b3fd1135b94b25ccca86bfd60585dee81110147592737c060e13f4935112d5194b19b6af06d64e8870b20
|
7
|
+
data.tar.gz: f79944aec35413d122216f01100e1d13e1ed3f575935bd4a4dac2331b2dc94a1fcb9dbbb4f230674ed815a5d358753c22e1cb4f5cb59eef3fe366c9ee8ba88df
|
data/app/controllers/core.rb
CHANGED
@@ -8,8 +8,8 @@ module WPScan
|
|
8
8
|
super.drop(1) + # delete the --url from CMSScanner
|
9
9
|
[
|
10
10
|
OptChoice.new(['--server SERVER', 'Force the supplied server module to be loaded'],
|
11
|
-
choices: %w
|
12
|
-
normalize: [
|
11
|
+
choices: %w[apache iis nginx],
|
12
|
+
normalize: %i[downcase to_sym]),
|
13
13
|
OptBoolean.new(['--force', 'Do not check if the target is running WordPress']),
|
14
14
|
OptBoolean.new(['--[no-]update', 'Wether or not to update the Database'], required_unless: :url)
|
15
15
|
]
|
@@ -8,7 +8,7 @@ module WPScan
|
|
8
8
|
def before_scan
|
9
9
|
# Create the Dynamic Finders
|
10
10
|
DB::DynamicPluginFinders.db_data.each do |name, config|
|
11
|
-
%w
|
11
|
+
%w[Comments].each do |klass|
|
12
12
|
next unless config[klass] && config[klass]['version']
|
13
13
|
|
14
14
|
constant_name = name.tr('-', '_').camelize
|
@@ -42,7 +42,7 @@ module WPScan
|
|
42
42
|
enum_plugins if enum_plugins?(enum)
|
43
43
|
enum_themes if enum_themes?(enum)
|
44
44
|
|
45
|
-
[
|
45
|
+
%i[timthumbs config_backups medias].each do |key|
|
46
46
|
send("enum_#{key}".to_sym) if enum.key?(key)
|
47
47
|
end
|
48
48
|
|
@@ -26,7 +26,7 @@ module WPScan
|
|
26
26
|
m: OptIntegerRange.new(['--medias', 'Media ids range. e.g m1-15'], value_if_empty: '1-100')
|
27
27
|
},
|
28
28
|
value_if_empty: 'vp,vt,tt,cb,u,m',
|
29
|
-
incompatible: [[
|
29
|
+
incompatible: [%i[vp ap p], %i[vt at t]]
|
30
30
|
),
|
31
31
|
OptRegexp.new(
|
32
32
|
[
|
@@ -46,7 +46,7 @@ module WPScan
|
|
46
46
|
OptChoice.new(
|
47
47
|
['--plugins-detection MODE',
|
48
48
|
'Use the supplied mode to enumerate Plugins, instead of the global (--detection-mode) mode.'],
|
49
|
-
choices: %w
|
49
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym
|
50
50
|
),
|
51
51
|
OptBoolean.new(['--plugins-version-all', 'Check all the plugins version locations'])
|
52
52
|
]
|
@@ -59,7 +59,7 @@ module WPScan
|
|
59
59
|
OptChoice.new(
|
60
60
|
['--themes-detection MODE',
|
61
61
|
'Use the supplied mode to enumerate Themes, instead of the global (--detection-mode) mode.'],
|
62
|
-
choices: %w
|
62
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym
|
63
63
|
),
|
64
64
|
OptBoolean.new(['--themes-version-all', 'Check all the themes version locations'])
|
65
65
|
]
|
@@ -75,7 +75,7 @@ module WPScan
|
|
75
75
|
OptChoice.new(
|
76
76
|
['--timthumbs-detection MODE',
|
77
77
|
'Use the supplied mode to enumerate Timthumbs, instead of the global (--detection-mode) mode.'],
|
78
|
-
choices: %w
|
78
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym
|
79
79
|
)
|
80
80
|
]
|
81
81
|
end
|
@@ -90,7 +90,7 @@ module WPScan
|
|
90
90
|
OptChoice.new(
|
91
91
|
['--config-backups-detection MODE',
|
92
92
|
'Use the supplied mode to enumerate Configs, instead of the global (--detection-mode) mode.'],
|
93
|
-
choices: %w
|
93
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym
|
94
94
|
)
|
95
95
|
]
|
96
96
|
end
|
@@ -101,7 +101,7 @@ module WPScan
|
|
101
101
|
OptChoice.new(
|
102
102
|
['--medias-detection MODE',
|
103
103
|
'Use the supplied mode to enumerate Medias, instead of the global (--detection-mode) mode.'],
|
104
|
-
choices: %w
|
104
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym
|
105
105
|
)
|
106
106
|
]
|
107
107
|
end
|
@@ -117,7 +117,7 @@ module WPScan
|
|
117
117
|
OptChoice.new(
|
118
118
|
['--users-detection MODE',
|
119
119
|
'Use the supplied mode to enumerate Users, instead of the global (--detection-mode) mode.'],
|
120
|
-
choices: %w
|
120
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym
|
121
121
|
)
|
122
122
|
]
|
123
123
|
end
|
@@ -6,7 +6,7 @@ module WPScan
|
|
6
6
|
#
|
7
7
|
# @return [ String ] The related enumration message depending on the parsed_options and type supplied
|
8
8
|
def enum_message(type)
|
9
|
-
return unless
|
9
|
+
return unless %w[plugins themes].include?(type)
|
10
10
|
|
11
11
|
details = if parsed_options[:enumerate][:"vulnerable_#{type}"]
|
12
12
|
'Vulnerable'
|
@@ -7,7 +7,7 @@ module WPScan
|
|
7
7
|
OptChoice.new(
|
8
8
|
['--main-theme-detection MODE',
|
9
9
|
'Use the supplied mode for the Main theme detection, instead of the global (--detection-mode) mode.'],
|
10
|
-
choices: %w
|
10
|
+
choices: %w[mixed passive aggressive],
|
11
11
|
normalize: :to_sym
|
12
12
|
)
|
13
13
|
]
|
@@ -9,7 +9,7 @@ module WPScan
|
|
9
9
|
['--wp-version-detection MODE',
|
10
10
|
'Use the supplied mode for the WordPress version detection, ' \
|
11
11
|
'instead of the global (--detection-mode) mode.'],
|
12
|
-
choices: %w
|
12
|
+
choices: %w[mixed passive aggressive],
|
13
13
|
normalize: :to_sym
|
14
14
|
)
|
15
15
|
]
|
@@ -19,11 +19,11 @@ module WPScan
|
|
19
19
|
def initialize(target)
|
20
20
|
super(target)
|
21
21
|
|
22
|
-
%w
|
22
|
+
%w[
|
23
23
|
Readme DebugLog FullPathDisclosure BackupDB DuplicatorInstallerLog
|
24
24
|
Multisite MuPlugins Registration UploadDirectoryListing TmmDbMigrate
|
25
25
|
UploadSQLDump
|
26
|
-
|
26
|
+
].each do |f|
|
27
27
|
finders << InterestingFindings.const_get(f).new(target)
|
28
28
|
end
|
29
29
|
end
|
@@ -29,7 +29,7 @@ module WPScan
|
|
29
29
|
def potential_urls
|
30
30
|
# Recent versions seem to use the 'locales' directory instead of the 'languages' one.
|
31
31
|
# Maybe also check other locales ?
|
32
|
-
%w
|
32
|
+
%w[locales languages].reduce([]) do |a, e|
|
33
33
|
a << target.url("#{e}/LayerSlider-en_US.po")
|
34
34
|
end
|
35
35
|
end
|
@@ -43,8 +43,8 @@ module WPScan
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def main_theme_timthumbs_paths
|
46
|
-
%w
|
47
|
-
scripts/timthumb.php tools/timthumb.php functions/timthumb.php
|
46
|
+
%w[timthumb.php lib/timthumb.php inc/timthumb.php includes/timthumb.php
|
47
|
+
scripts/timthumb.php tools/timthumb.php functions/timthumb.php]
|
48
48
|
end
|
49
49
|
|
50
50
|
def create_progress_bar(opts = {})
|
@@ -43,7 +43,7 @@ module WPScan
|
|
43
43
|
def potential_usernames(res)
|
44
44
|
usernames = []
|
45
45
|
|
46
|
-
target.in_scope_urls(res, '//a', %w
|
46
|
+
target.in_scope_urls(res, '//a', %w[href]) do |url, node|
|
47
47
|
uri = Addressable::URI.parse(url)
|
48
48
|
|
49
49
|
if uri.path =~ %r{/author/([^/\b]+)/?\z}i
|
data/app/models/timthumb.rb
CHANGED
@@ -30,8 +30,8 @@ module WPScan
|
|
30
30
|
def vulnerabilities
|
31
31
|
vulns = []
|
32
32
|
|
33
|
-
vulns << rce_webshot_vuln if
|
34
|
-
vulns << rce_132_vuln if
|
33
|
+
vulns << rce_webshot_vuln if version == false || version > '1.35' && version < '2.8.14' && webshot_enabled?
|
34
|
+
vulns << rce_132_vuln if version == false || version < '1.33'
|
35
35
|
|
36
36
|
vulns
|
37
37
|
end
|
@@ -68,7 +68,7 @@ module WPScan
|
|
68
68
|
|
69
69
|
# @return [ Array<String> ] The default allowed domains (between the 2.0 and 2.8.13)
|
70
70
|
def default_allowed_domains
|
71
|
-
%w
|
71
|
+
%w[flickr.com picasa.com img.youtube.com upload.wikimedia.org]
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
data/app/models/wp_item.rb
CHANGED
@@ -6,8 +6,8 @@ module WPScan
|
|
6
6
|
include CMSScanner::Target::Platform::PHP
|
7
7
|
include CMSScanner::Target::Server::Generic
|
8
8
|
|
9
|
-
READMES = %w
|
10
|
-
CHANGELOGS = %w
|
9
|
+
READMES = %w[readme.txt README.txt Readme.txt ReadMe.txt README.TXT readme.TXT].freeze
|
10
|
+
CHANGELOGS = %w[changelog.txt Changelog.txt ChangeLog.txt CHANGELOG.txt].freeze
|
11
11
|
|
12
12
|
attr_reader :uri, :name, :detection_opts, :target, :db_data
|
13
13
|
|
@@ -50,7 +50,7 @@ module WPScan
|
|
50
50
|
def vulnerable_to?(vuln)
|
51
51
|
return true unless version && vuln && vuln.fixed_in && !vuln.fixed_in.empty?
|
52
52
|
|
53
|
-
version < vuln.fixed_in
|
53
|
+
version < vuln.fixed_in
|
54
54
|
end
|
55
55
|
|
56
56
|
# @return [ String ]
|
data/app/models/wp_version.rb
CHANGED
data/lib/wpscan/db/updater.rb
CHANGED
@@ -4,11 +4,11 @@ module WPScan
|
|
4
4
|
# :nocov:
|
5
5
|
class Updater
|
6
6
|
# /!\ Might want to also update the Enumeration#cli_options when some filenames are changed here
|
7
|
-
FILES = %w
|
7
|
+
FILES = %w[
|
8
8
|
plugins.json themes.json wordpresses.json
|
9
9
|
timthumbs-v3.txt user-agents.txt config_backups.txt
|
10
10
|
dynamic_finders.yml wordpress.db LICENSE
|
11
|
-
|
11
|
+
].freeze
|
12
12
|
|
13
13
|
attr_reader :repo_directory
|
14
14
|
|
data/lib/wpscan/db/wp_items.rb
CHANGED
@@ -14,7 +14,7 @@ module WPScan
|
|
14
14
|
|
15
15
|
# @return [ Array<String> ] The slug of all vulnerable items
|
16
16
|
def self.vulnerable_slugs
|
17
|
-
db.
|
17
|
+
db.reject { |_key, item| item['vulnerabilities'].empty? }.keys
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/lib/wpscan/version.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wpscan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WPScanTeam
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: cms_scanner
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.0.37.10
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.0.37.10
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: yajl-ruby
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '1.3'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: activesupport
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 5.
|
47
|
+
version: '5.1'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 5.
|
54
|
+
version: '5.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: dm-core
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 3.
|
131
|
+
version: 3.6.0
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 3.
|
138
|
+
version: 3.6.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rspec-its
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
173
|
+
version: 0.50.0
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.
|
180
|
+
version: 0.50.0
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: webmock
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,14 +198,28 @@ dependencies:
|
|
198
198
|
requirements:
|
199
199
|
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version: 0.
|
201
|
+
version: 0.14.0
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 0.14.0
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: coveralls
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 0.8.0
|
202
216
|
type: :development
|
203
217
|
prerelease: false
|
204
218
|
version_requirements: !ruby/object:Gem::Requirement
|
205
219
|
requirements:
|
206
220
|
- - "~>"
|
207
221
|
- !ruby/object:Gem::Version
|
208
|
-
version: 0.
|
222
|
+
version: 0.8.0
|
209
223
|
description: WPScan is a black box WordPress vulnerability scanner.
|
210
224
|
email:
|
211
225
|
- team@wpscan.org
|