wpscan 3.3.1 → 3.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +74 -0
- data/README.md +157 -0
- data/app/controllers/core.rb +4 -4
- data/app/controllers/enumeration/cli_options.rb +23 -17
- data/app/controllers/enumeration/enum_methods.rb +4 -1
- data/app/controllers/main_theme.rb +1 -2
- data/app/controllers/wp_version.rb +2 -3
- data/app/finders/medias/attachment_brute_forcing.rb +1 -1
- data/app/models/wp_version.rb +5 -0
- data/app/views/cli/wp_version/version.erb +1 -1
- data/app/views/json/wp_version/version.erb +1 -0
- data/lib/wpscan/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8dda343622bf0697b7550b1254b6ca134d008dd6
|
4
|
+
data.tar.gz: 37e9aea11ee2b721556f7d79f46f5a9e0c51cbb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 441dc0b1704f815839579727c46f7c5b3f32dc4f4e80fe6b06f60397494f28ff29ce5d0efdd70b2d22cdad7c78a21a175d89c58f5910447aa11832906ac97654
|
7
|
+
data.tar.gz: c6513a30c849d6de42da986703caa8810c3d45dddfadb96e661d1ffdc661bf57b4425a7f9b035bcfd0edd566b14cd481c1ecc9555343033d68154eddd4aedc1e
|
data/LICENSE
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
WPScan Public Source License
|
2
|
+
|
3
|
+
The WPScan software (henceforth referred to simply as "WPScan") is dual-licensed - Copyright 2011-2018 WPScan Team.
|
4
|
+
|
5
|
+
Cases that include commercialization of WPScan require a commercial, non-free license. Otherwise, WPScan can be used without charge under the terms set out below.
|
6
|
+
|
7
|
+
1. Definitions
|
8
|
+
|
9
|
+
1.1 “License” means this document.
|
10
|
+
1.2 “Contributor” means each individual or legal entity that creates, contributes to the creation of, or owns WPScan.
|
11
|
+
1.3 “WPScan Team” means WPScan’s core developers, an updated list of whom can be found within the CREDITS file.
|
12
|
+
|
13
|
+
2. Commercialization
|
14
|
+
|
15
|
+
A commercial use is one intended for commercial advantage or monetary compensation.
|
16
|
+
|
17
|
+
Example cases of commercialization are:
|
18
|
+
|
19
|
+
- Using WPScan to provide commercial managed/Software-as-a-Service services.
|
20
|
+
- Distributing WPScan as a commercial product or as part of one.
|
21
|
+
- Using WPScan as a value added service/product.
|
22
|
+
|
23
|
+
Example cases which do not require a commercial license, and thus fall under the terms set out below, include (but are not limited to):
|
24
|
+
|
25
|
+
- Penetration testers (or penetration testing organizations) using WPScan as part of their assessment toolkit.
|
26
|
+
- Penetration Testing Linux Distributions including but not limited to Kali Linux, SamuraiWTF, BackBox Linux.
|
27
|
+
- Using WPScan to test your own systems.
|
28
|
+
- Any non-commercial use of WPScan.
|
29
|
+
|
30
|
+
If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - team@wpscan.org.
|
31
|
+
|
32
|
+
We may grant commercial licenses at no monetary cost at our own discretion if the commercial usage is deemed by the WPScan Team to significantly benefit WPScan.
|
33
|
+
|
34
|
+
Free-use Terms and Conditions;
|
35
|
+
|
36
|
+
3. Redistribution
|
37
|
+
|
38
|
+
Redistribution is permitted under the following conditions:
|
39
|
+
|
40
|
+
- Unmodified License is provided with WPScan.
|
41
|
+
- Unmodified Copyright notices are provided with WPScan.
|
42
|
+
- Does not conflict with the commercialization clause.
|
43
|
+
|
44
|
+
4. Copying
|
45
|
+
|
46
|
+
Copying is permitted so long as it does not conflict with the Redistribution clause.
|
47
|
+
|
48
|
+
5. Modification
|
49
|
+
|
50
|
+
Modification is permitted so long as it does not conflict with the Redistribution clause.
|
51
|
+
|
52
|
+
6. Contributions
|
53
|
+
|
54
|
+
Any Contributions assume the Contributor grants the WPScan Team the unlimited, non-exclusive right to reuse, modify and relicense the Contributor's content.
|
55
|
+
|
56
|
+
7. Support
|
57
|
+
|
58
|
+
WPScan is provided under an AS-IS basis and without any support, updates or maintenance. Support, updates and maintenance may be given according to the sole discretion of the WPScan Team.
|
59
|
+
|
60
|
+
8. Disclaimer of Warranty
|
61
|
+
|
62
|
+
WPScan is provided under this License on an “as is” basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the WPScan is free of defects, merchantable, fit for a particular purpose or non-infringing.
|
63
|
+
|
64
|
+
9. Limitation of Liability
|
65
|
+
|
66
|
+
To the extent permitted under Law, WPScan is provided under an AS-IS basis. The WPScan Team shall never, and without any limit, be liable for any damage, cost, expense or any other payment incurred as a result of WPScan's actions, failure, bugs and/or any other interaction between WPScan and end-equipment, computers, other software or any 3rd party, end-equipment, computer or services.
|
67
|
+
|
68
|
+
10. Disclaimer
|
69
|
+
|
70
|
+
Running WPScan against websites without prior mutual consent may be illegal in your country. The WPScan Team accept no liability and are not responsible for any misuse or damage caused by WPScan.
|
71
|
+
|
72
|
+
11. Trademark
|
73
|
+
|
74
|
+
The "wpscan" term is a registered trademark. This License does not grant the use of the "wpscan" trademark or the use of the WPScan logo.
|
data/README.md
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
![alt text](https://raw.githubusercontent.com/wpscanteam/wpscan/gh-pages/images/wpscan_logo.png "WPScan - WordPress Security Scanner")
|
2
|
+
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/wpscan.svg)](https://badge.fury.io/rb/wpscan)
|
4
|
+
[![Build Status](https://travis-ci.org/wpscanteam/wpscan.svg?branch=master)](https://travis-ci.org/wpscanteam/wpscan)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/wpscanteam/wpscan/badges/gpa.svg)](https://codeclimate.com/github/wpscanteam/wpscan)
|
6
|
+
[![Patreon Donate](https://img.shields.io/badge/patreon-donate-green.svg)](https://www.patreon.com/wpscan)
|
7
|
+
|
8
|
+
# INSTALL
|
9
|
+
|
10
|
+
## Prerequisites:
|
11
|
+
|
12
|
+
- Ruby >= 2.3 - Recommended: latest
|
13
|
+
- Curl >= 7.21 - Recommended: latest - FYI the 7.29 has a segfault
|
14
|
+
- RubyGems - Recommended: latest
|
15
|
+
|
16
|
+
### From RubyGems:
|
17
|
+
|
18
|
+
```
|
19
|
+
gem install wpscan
|
20
|
+
```
|
21
|
+
|
22
|
+
### From sources:
|
23
|
+
|
24
|
+
Prerequisites: Git
|
25
|
+
|
26
|
+
```
|
27
|
+
git clone https://github.com/wpscanteam/wpscan
|
28
|
+
|
29
|
+
cd wpscan/
|
30
|
+
|
31
|
+
bundle install && rake install
|
32
|
+
```
|
33
|
+
|
34
|
+
# Docker
|
35
|
+
|
36
|
+
Pull the repo with ```docker pull wpscanteam/wpscan```
|
37
|
+
|
38
|
+
# Usage
|
39
|
+
|
40
|
+
```wpscan --url blog.tld``` This will scan the blog using default options with a good compromise between speed and accuracy. For example, the plugins will be checked passively but their version with a mixed detection mode (passively + aggressively). Potential config backup files will also be checked, along with other interesting findings. If a more stealthy approach is required, then ```wpscan --stealthy --url blog.tld``` can be used.
|
41
|
+
As a result, when using the ```--enumerate``` option, don't forget to set the ```--plugins-detection``` accordingly, as its default is 'passive'.
|
42
|
+
|
43
|
+
For more options, open a terminal and type ```wpscan --help``` (if you built wpscan from the source, you should type the command outside of the git repo)
|
44
|
+
|
45
|
+
The DB is located at ~/.wpscan/db
|
46
|
+
|
47
|
+
WPScan can load all options (including the --url) from configuration files, the following locations are checked (order: first to last):
|
48
|
+
|
49
|
+
* ~/.wpscan/cli_options.json
|
50
|
+
* ~/.wpscan/cli_options.yml
|
51
|
+
* pwd/.wpscan/cli_options.json
|
52
|
+
* pwd/.wpscan/cli_options.yml
|
53
|
+
|
54
|
+
If those files exist, options from them will be loaded and overridden if found twice.
|
55
|
+
|
56
|
+
e.g:
|
57
|
+
|
58
|
+
~/.wpscan/cli_options.yml:
|
59
|
+
```
|
60
|
+
proxy: 'http://127.0.0.1:8080'
|
61
|
+
verbose: true
|
62
|
+
```
|
63
|
+
|
64
|
+
pwd/.wpscan/cli_options.yml:
|
65
|
+
```
|
66
|
+
proxy: 'socks5://127.0.0.1:9090'
|
67
|
+
url: 'http://target.tld'
|
68
|
+
```
|
69
|
+
|
70
|
+
Running ```wpscan``` in the current directory (pwd), is the same as ```wpscan -v --proxy socks5://127.0.0.1:9090 --url http://target.tld```
|
71
|
+
|
72
|
+
# PROJECT HOME
|
73
|
+
|
74
|
+
[https://wpscan.org](https://wpscan.org)
|
75
|
+
|
76
|
+
# VULNERABILITY DATABASE
|
77
|
+
|
78
|
+
[https://wpvulndb.com](https://wpvulndb.com)
|
79
|
+
|
80
|
+
# LICENSE
|
81
|
+
|
82
|
+
## WPScan Public Source License
|
83
|
+
|
84
|
+
The WPScan software (henceforth referred to simply as "WPScan") is dual-licensed - Copyright 2011-2018 WPScan Team.
|
85
|
+
|
86
|
+
Cases that include commercialization of WPScan require a commercial, non-free license. Otherwise, WPScan can be used without charge under the terms set out below.
|
87
|
+
|
88
|
+
### 1. Definitions
|
89
|
+
|
90
|
+
1.1 "License" means this document.
|
91
|
+
|
92
|
+
1.2 "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns WPScan.
|
93
|
+
|
94
|
+
1.3 "WPScan Team" means WPScan’s core developers, an updated list of whom can be found within the CREDITS file.
|
95
|
+
|
96
|
+
### 2. Commercialization
|
97
|
+
|
98
|
+
A commercial use is one intended for commercial advantage or monetary compensation.
|
99
|
+
|
100
|
+
Example cases of commercialization are:
|
101
|
+
|
102
|
+
- Using WPScan to provide commercial managed/Software-as-a-Service services.
|
103
|
+
- Distributing WPScan as a commercial product or as part of one.
|
104
|
+
- Using WPScan as a value added service/product.
|
105
|
+
|
106
|
+
Example cases which do not require a commercial license, and thus fall under the terms set out below, include (but are not limited to):
|
107
|
+
|
108
|
+
- Penetration testers (or penetration testing organizations) using WPScan as part of their assessment toolkit.
|
109
|
+
- Penetration Testing Linux Distributions including but not limited to Kali Linux, SamuraiWTF, BackBox Linux.
|
110
|
+
- Using WPScan to test your own systems.
|
111
|
+
- Any non-commercial use of WPScan.
|
112
|
+
|
113
|
+
If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - team@wpscan.org.
|
114
|
+
|
115
|
+
We may grant commercial licenses at no monetary cost at our own discretion if the commercial usage is deemed by the WPScan Team to significantly benefit WPScan.
|
116
|
+
|
117
|
+
Free-use Terms and Conditions;
|
118
|
+
|
119
|
+
### 3. Redistribution
|
120
|
+
|
121
|
+
Redistribution is permitted under the following conditions:
|
122
|
+
|
123
|
+
- Unmodified License is provided with WPScan.
|
124
|
+
- Unmodified Copyright notices are provided with WPScan.
|
125
|
+
- Does not conflict with the commercialization clause.
|
126
|
+
|
127
|
+
### 4. Copying
|
128
|
+
|
129
|
+
Copying is permitted so long as it does not conflict with the Redistribution clause.
|
130
|
+
|
131
|
+
### 5. Modification
|
132
|
+
|
133
|
+
Modification is permitted so long as it does not conflict with the Redistribution clause.
|
134
|
+
|
135
|
+
### 6. Contributions
|
136
|
+
|
137
|
+
Any Contributions assume the Contributor grants the WPScan Team the unlimited, non-exclusive right to reuse, modify and relicense the Contributor's content.
|
138
|
+
|
139
|
+
### 7. Support
|
140
|
+
|
141
|
+
WPScan is provided under an AS-IS basis and without any support, updates or maintenance. Support, updates and maintenance may be given according to the sole discretion of the WPScan Team.
|
142
|
+
|
143
|
+
### 8. Disclaimer of Warranty
|
144
|
+
|
145
|
+
WPScan is provided under this License on an “as is” basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the WPScan is free of defects, merchantable, fit for a particular purpose or non-infringing.
|
146
|
+
|
147
|
+
### 9. Limitation of Liability
|
148
|
+
|
149
|
+
To the extent permitted under Law, WPScan is provided under an AS-IS basis. The WPScan Team shall never, and without any limit, be liable for any damage, cost, expense or any other payment incurred as a result of WPScan's actions, failure, bugs and/or any other interaction between WPScan and end-equipment, computers, other software or any 3rd party, end-equipment, computer or services.
|
150
|
+
|
151
|
+
### 10. Disclaimer
|
152
|
+
|
153
|
+
Running WPScan against websites without prior mutual consent may be illegal in your country. The WPScan Team accept no liability and are not responsible for any misuse or damage caused by WPScan.
|
154
|
+
|
155
|
+
### 11. Trademark
|
156
|
+
|
157
|
+
The "wpscan" term is a registered trademark. This License does not grant the use of the "wpscan" trademark or the use of the WPScan logo.
|
data/app/controllers/core.rb
CHANGED
@@ -5,15 +5,15 @@ module WPScan
|
|
5
5
|
# @return [ Array<OptParseValidator::Opt> ]
|
6
6
|
def cli_options
|
7
7
|
[OptURL.new(['--url URL', 'The URL of the blog to scan'],
|
8
|
-
required_unless: %i[update help version], default_protocol: 'http')] +
|
8
|
+
required_unless: %i[update help hh version], default_protocol: 'http')] +
|
9
9
|
super.drop(1) + # delete the --url from CMSScanner
|
10
10
|
[
|
11
11
|
OptChoice.new(['--server SERVER', 'Force the supplied server module to be loaded'],
|
12
12
|
choices: %w[apache iis nginx],
|
13
|
-
normalize: %i[downcase to_sym]
|
13
|
+
normalize: %i[downcase to_sym],
|
14
|
+
advanced: true),
|
14
15
|
OptBoolean.new(['--force', 'Do not check if the target is running WordPress']),
|
15
|
-
OptBoolean.new(['--[no-]update', '
|
16
|
-
required_unless: %i[url help version])
|
16
|
+
OptBoolean.new(['--[no-]update', 'Whether or not to update the Database'])
|
17
17
|
]
|
18
18
|
end
|
19
19
|
|
@@ -13,7 +13,7 @@ module WPScan
|
|
13
13
|
def cli_enum_choices
|
14
14
|
[
|
15
15
|
OptMultiChoices.new(
|
16
|
-
['--enumerate [OPTS]', '
|
16
|
+
['-e', '--enumerate [OPTS]', 'Enumeration Process'],
|
17
17
|
choices: {
|
18
18
|
vp: OptBoolean.new(['--vulnerable-plugins']),
|
19
19
|
ap: OptBoolean.new(['--all-plugins']),
|
@@ -25,7 +25,10 @@ module WPScan
|
|
25
25
|
cb: OptBoolean.new(['--config-backups']),
|
26
26
|
dbe: OptBoolean.new(['--db-exports']),
|
27
27
|
u: OptIntegerRange.new(['--users', 'User IDs range. e.g: u1-5'], value_if_empty: '1-10'),
|
28
|
-
m: OptIntegerRange.new(['--medias',
|
28
|
+
m: OptIntegerRange.new(['--medias',
|
29
|
+
'Media IDs range. e.g m1-15',
|
30
|
+
'Note: Permalink setting must be set to "Plain" for those to be detected'],
|
31
|
+
value_if_empty: '1-100')
|
29
32
|
},
|
30
33
|
value_if_empty: 'vp,vt,tt,cb,dbe,u,m',
|
31
34
|
incompatible: [%i[vp ap p], %i[vt at t]],
|
@@ -45,7 +48,7 @@ module WPScan
|
|
45
48
|
# @return [ Array<OptParseValidator::OptBase> ]
|
46
49
|
def cli_plugins_opts
|
47
50
|
[
|
48
|
-
OptSmartList.new(['--plugins-list LIST', 'List of plugins to enumerate']),
|
51
|
+
OptSmartList.new(['--plugins-list LIST', 'List of plugins to enumerate'], advanced: true),
|
49
52
|
OptChoice.new(
|
50
53
|
['--plugins-detection MODE',
|
51
54
|
'Use the supplied mode to enumerate Plugins, instead of the global (--detection-mode) mode.'],
|
@@ -54,7 +57,8 @@ module WPScan
|
|
54
57
|
OptBoolean.new(
|
55
58
|
['--plugins-version-all',
|
56
59
|
'Check all the plugins version locations according to the choosen mode (--detection-mode, ' \
|
57
|
-
'--plugins-detection and --plugins-version-detection)']
|
60
|
+
'--plugins-detection and --plugins-version-detection)'],
|
61
|
+
advanced: true
|
58
62
|
),
|
59
63
|
OptChoice.new(
|
60
64
|
['--plugins-version-detection MODE',
|
@@ -68,22 +72,23 @@ module WPScan
|
|
68
72
|
# @return [ Array<OptParseValidator::OptBase> ]
|
69
73
|
def cli_themes_opts
|
70
74
|
[
|
71
|
-
OptSmartList.new(['--themes-list LIST', 'List of themes to enumerate']),
|
75
|
+
OptSmartList.new(['--themes-list LIST', 'List of themes to enumerate'], advanced: true),
|
72
76
|
OptChoice.new(
|
73
77
|
['--themes-detection MODE',
|
74
78
|
'Use the supplied mode to enumerate Themes, instead of the global (--detection-mode) mode.'],
|
75
|
-
choices: %w[mixed passive aggressive], normalize: :to_sym
|
79
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
76
80
|
),
|
77
81
|
OptBoolean.new(
|
78
82
|
['--themes-version-all',
|
79
83
|
'Check all the themes version locations according to the choosen mode (--detection-mode, ' \
|
80
|
-
'--themes-detection and --themes-version-detection)']
|
84
|
+
'--themes-detection and --themes-version-detection)'],
|
85
|
+
advanced: true
|
81
86
|
),
|
82
87
|
OptChoice.new(
|
83
88
|
['--themes-version-detection MODE',
|
84
89
|
'Use the supplied mode to check themes versions instead of the --detection-mode ' \
|
85
90
|
'or --themes-detection modes.'],
|
86
|
-
choices: %w[mixed passive aggressive], normalize: :to_sym
|
91
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
87
92
|
)
|
88
93
|
]
|
89
94
|
end
|
@@ -93,12 +98,12 @@ module WPScan
|
|
93
98
|
[
|
94
99
|
OptFilePath.new(
|
95
100
|
['--timthumbs-list FILE-PATH', 'List of timthumbs\' location to use'],
|
96
|
-
exists: true, default: File.join(DB_DIR, 'timthumbs-v3.txt')
|
101
|
+
exists: true, default: File.join(DB_DIR, 'timthumbs-v3.txt'), advanced: true
|
97
102
|
),
|
98
103
|
OptChoice.new(
|
99
104
|
['--timthumbs-detection MODE',
|
100
105
|
'Use the supplied mode to enumerate Timthumbs, instead of the global (--detection-mode) mode.'],
|
101
|
-
choices: %w[mixed passive aggressive], normalize: :to_sym
|
106
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
102
107
|
)
|
103
108
|
]
|
104
109
|
end
|
@@ -108,12 +113,12 @@ module WPScan
|
|
108
113
|
[
|
109
114
|
OptFilePath.new(
|
110
115
|
['--config-backups-list FILE-PATH', 'List of config backups\' filenames to use'],
|
111
|
-
exists: true, default: File.join(DB_DIR, 'config_backups.txt')
|
116
|
+
exists: true, default: File.join(DB_DIR, 'config_backups.txt'), advanced: true
|
112
117
|
),
|
113
118
|
OptChoice.new(
|
114
119
|
['--config-backups-detection MODE',
|
115
120
|
'Use the supplied mode to enumerate Config Backups, instead of the global (--detection-mode) mode.'],
|
116
|
-
choices: %w[mixed passive aggressive], normalize: :to_sym
|
121
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
117
122
|
)
|
118
123
|
]
|
119
124
|
end
|
@@ -123,12 +128,12 @@ module WPScan
|
|
123
128
|
[
|
124
129
|
OptFilePath.new(
|
125
130
|
['--db-exports-list FILE-PATH', 'List of DB exports\' paths to use'],
|
126
|
-
exists: true, default: File.join(DB_DIR, 'db_exports.txt')
|
131
|
+
exists: true, default: File.join(DB_DIR, 'db_exports.txt'), advanced: true
|
127
132
|
),
|
128
133
|
OptChoice.new(
|
129
134
|
['--db-exports-detection MODE',
|
130
135
|
'Use the supplied mode to enumerate DB Exports, instead of the global (--detection-mode) mode.'],
|
131
|
-
choices: %w[mixed passive aggressive], normalize: :to_sym
|
136
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
132
137
|
)
|
133
138
|
]
|
134
139
|
end
|
@@ -139,7 +144,7 @@ module WPScan
|
|
139
144
|
OptChoice.new(
|
140
145
|
['--medias-detection MODE',
|
141
146
|
'Use the supplied mode to enumerate Medias, instead of the global (--detection-mode) mode.'],
|
142
|
-
choices: %w[mixed passive aggressive], normalize: :to_sym
|
147
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
143
148
|
)
|
144
149
|
]
|
145
150
|
end
|
@@ -149,12 +154,13 @@ module WPScan
|
|
149
154
|
[
|
150
155
|
OptSmartList.new(
|
151
156
|
['--users-list LIST',
|
152
|
-
'List of users to check during the users enumeration from the Login Error Messages']
|
157
|
+
'List of users to check during the users enumeration from the Login Error Messages'],
|
158
|
+
advanced: true
|
153
159
|
),
|
154
160
|
OptChoice.new(
|
155
161
|
['--users-detection MODE',
|
156
162
|
'Use the supplied mode to enumerate Users, instead of the global (--detection-mode) mode.'],
|
157
|
-
choices: %w[mixed passive aggressive], normalize: :to_sym
|
163
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
158
164
|
)
|
159
165
|
]
|
160
166
|
end
|
@@ -146,7 +146,10 @@ module WPScan
|
|
146
146
|
def enum_medias
|
147
147
|
opts = default_opts('medias').merge(range: parsed_options[:enumerate][:medias])
|
148
148
|
|
149
|
-
|
149
|
+
if user_interaction?
|
150
|
+
output('@info', msg: 'Enumerating Medias (Permalink setting must be set to "Plain" for those to be detected)')
|
151
|
+
end
|
152
|
+
|
150
153
|
output('medias', medias: target.medias(opts))
|
151
154
|
end
|
152
155
|
|
@@ -7,8 +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[mixed passive aggressive],
|
11
|
-
normalize: :to_sym
|
10
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
12
11
|
)
|
13
12
|
]
|
14
13
|
end
|
@@ -4,13 +4,12 @@ module WPScan
|
|
4
4
|
class WpVersion < CMSScanner::Controller::Base
|
5
5
|
def cli_options
|
6
6
|
[
|
7
|
-
OptBoolean.new(['--wp-version-all', 'Check all the version locations']),
|
7
|
+
OptBoolean.new(['--wp-version-all', 'Check all the version locations'], advanced: true),
|
8
8
|
OptChoice.new(
|
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[mixed passive aggressive],
|
13
|
-
normalize: :to_sym
|
12
|
+
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
14
13
|
)
|
15
14
|
]
|
16
15
|
end
|
data/app/models/wp_version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<% if @version -%>
|
2
|
-
<%= info_icon %> WordPress version <%= @version.number %> identified.
|
2
|
+
<%= info_icon %> WordPress version <%= @version.number %> identified (Released on <%= @version.release_date %>).
|
3
3
|
<%= render('@finding', item: @version) -%>
|
4
4
|
<% else -%>
|
5
5
|
<%= notice_icon %> The WordPress version could not be detected.
|
data/lib/wpscan/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wpscan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WPScanTeam
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cms_scanner
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.40.
|
19
|
+
version: 0.0.40.2
|
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: 0.0.40.
|
26
|
+
version: 0.0.40.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -172,6 +172,8 @@ executables:
|
|
172
172
|
extensions: []
|
173
173
|
extra_rdoc_files: []
|
174
174
|
files:
|
175
|
+
- LICENSE
|
176
|
+
- README.md
|
175
177
|
- app/app.rb
|
176
178
|
- app/controllers.rb
|
177
179
|
- app/controllers/aliases.rb
|