wpscan 3.8.10 → 3.8.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 80bb171dc3d30fab68355160acacb8359681a85fb7f43ca11dc17968cb8b354f
4
- data.tar.gz: ae033388eb73cbe1bc736edf32b54170cf12f0fb085ee76799fa207ca885a5d7
3
+ metadata.gz: 299c8c4ad7fc7a8e9329a891e57a6d13a2872ca0a977f49fe2070e71033e48a1
4
+ data.tar.gz: dcf67f4cc1770e7f97a201cc0216c7aa7fcf0d3d239834f597a822bdb30e373b
5
5
  SHA512:
6
- metadata.gz: d0023c87de0d517a6eaf08ea8faf7a1a4681cad7a217bb8ee0201aa52f2ef209f64954cde27ea7d9ea2926e24800e377c43d2a4885ed15b3439468292006fb44
7
- data.tar.gz: c01434b18a3682a190cf101e3a94622742dded2b5320c03bbb15eb515056531845feea68cc119351f428a73dbd966e6c1cffeb201844daca9734289f925e7e36
6
+ metadata.gz: 57c0d2f83d1e6a9a33a79aae80bc0a6ee96ce938eb562db811ca55920607fbba71859f6f3aba8de97a9b900b853edb9bcd02672a14a4948301f0a083b835a13e
7
+ data.tar.gz: 433b89aab18df530527092bb3bb499fdf8bfcbf3043a9369744ea85aa59bb8709bc0d624ed20451103138b0e2bd86c78f8c18476378899172f450be1c2968b6d
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <a href="https://wpscan.org/">
2
+ <a href="https://wpscan.com/">
3
3
  <img src="https://raw.githubusercontent.com/wpscanteam/wpscan/gh-pages/images/wpscan_logo.png" alt="WPScan logo">
4
4
  </a>
5
5
  </p>
@@ -176,7 +176,7 @@ Example cases which do not require a commercial license, and thus fall under the
176
176
  - Using WPScan to test your own systems.
177
177
  - Any non-commercial use of WPScan.
178
178
 
179
- If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - team@wpscan.org.
179
+ If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - contact@wpscan.com.
180
180
 
181
181
  Free-use Terms and Conditions;
182
182
 
@@ -8,7 +8,10 @@ module WPScan
8
8
 
9
9
  def cli_options
10
10
  [
11
- OptString.new(['--api-token TOKEN', 'The WPVulnDB API Token to display vulnerability data'])
11
+ OptString.new(
12
+ ['--api-token TOKEN',
13
+ 'The WPScan API Token to display vulnerability data, available at https://wpscan.com/profile']
14
+ )
12
15
  ]
13
16
  end
14
17
 
@@ -19,7 +22,7 @@ module WPScan
19
22
 
20
23
  api_status = DB::VulnApi.status
21
24
 
22
- raise Error::InvalidApiToken if api_status['error']
25
+ raise Error::InvalidApiToken if api_status['status'] == 'forbidden'
23
26
  raise Error::ApiLimitReached if api_status['requests_remaining'] == 0
24
27
  raise api_status['http_error'] if api_status['http_error']
25
28
  end
@@ -1,13 +1,13 @@
1
1
  <% unless @status.empty? -%>
2
2
  <% if @status['http_error'] -%>
3
- <%= critical_icon %> WPVulnDB API, <%= @status['http_error'].to_s %>
3
+ <%= critical_icon %> WPScan DB API, <%= @status['http_error'].to_s %>
4
4
  <% else -%>
5
- <%= info_icon %> WPVulnDB API OK
5
+ <%= info_icon %> WPScan DB API OK
6
6
  | Plan: <%= @status['plan'] %>
7
7
  | Requests Done (during the scan): <%= @api_requests %>
8
8
  | Requests Remaining: <%= @status['requests_remaining'] %>
9
9
  <% end -%>
10
10
  <% else -%>
11
- <%= warning_icon %> No WPVulnDB API Token given, as a result vulnerability data has not been output.
11
+ <%= warning_icon %> No WPScan API Token given, as a result vulnerability data has not been output.
12
12
  <%= warning_icon %> You can get a free API token with 50 daily requests by registering at https://wpscan.com/register
13
13
  <% end -%>
@@ -8,6 +8,6 @@
8
8
  "requests_remaining": <%= @status['requests_remaining'].to_json %>
9
9
  <% end -%>
10
10
  <% else -%>
11
- "error": "No WPVulnDB API Token given, as a result vulnerability data has not been output.\nYou can get a free API token with 50 daily requests by registering at https://wpscan.com/register"
11
+ "error": "No WPScan API Token given, as a result vulnerability data has not been output.\nYou can get a free API token with 50 daily requests by registering at https://wpscan.com/register"
12
12
  <% end -%>
13
13
  },
@@ -7,7 +7,7 @@ module WPScan
7
7
 
8
8
  # @return [ String ]
9
9
  def default_user_agent
10
- @default_user_agent ||= "WPScan v#{VERSION} (https://wpscan.org/)"
10
+ @default_user_agent ||= "WPScan v#{VERSION} (https://wpscan.com/wordpress-security-scanner)"
11
11
  end
12
12
  end
13
13
  end
@@ -4,7 +4,7 @@ module WPScan
4
4
  module DB
5
5
  # WPVulnDB API
6
6
  class VulnApi
7
- NON_ERROR_CODES = [200, 401].freeze
7
+ NON_ERROR_CODES = [200, 403].freeze
8
8
 
9
9
  class << self
10
10
  attr_accessor :token
@@ -26,7 +26,7 @@ module WPScan
26
26
  # Typhoeus.get is used rather than Browser.get to avoid merging irrelevant params from the CLI
27
27
  res = Typhoeus.get(uri.join(path), default_request_params.merge(params))
28
28
 
29
- return {} if res.code == 404 # This is for API inconsistencies when dots in path
29
+ return {} if res.code == 404 || res.code == 429
30
30
  return JSON.parse(res.body) if NON_ERROR_CODES.include?(res.code)
31
31
 
32
32
  raise Error::HTTP, res
@@ -34,6 +34,8 @@ module WPScan
34
34
  retries ||= 0
35
35
 
36
36
  if (retries += 1) <= 3
37
+ @default_request_params[:headers]['X-Retry'] = retries
38
+
37
39
  sleep(1)
38
40
  retry
39
41
  end
@@ -68,7 +70,7 @@ module WPScan
68
70
  # @return [ Hash ]
69
71
  # @note Those params can not be overriden by CLI options
70
72
  def self.default_request_params
71
- Browser.instance.default_connect_request_params.merge(
73
+ @default_request_params ||= Browser.instance.default_connect_request_params.merge(
72
74
  headers: {
73
75
  'User-Agent' => Browser.instance.default_user_agent,
74
76
  'Authorization' => "Token token=#{token}"
@@ -11,9 +11,10 @@ module WPScan
11
11
  module WordPress
12
12
  include CMSScanner::Target::Platform::PHP
13
13
 
14
- WORDPRESS_PATTERN = %r{/(?:(?:wp-content/(?:themes|(?:mu-)?plugins|uploads))|wp-includes)/}i.freeze
15
- WP_JSON_OEMBED_PATTERN = %r{/wp-json/oembed/}i.freeze
16
- WP_ADMIN_AJAX_PATTERN = %r{\\?/wp-admin\\?/admin-ajax\.php}i.freeze
14
+ WORDPRESS_PATTERN = %r{/(?:(?:wp-content/(?:themes|(?:mu-)?plugins|uploads))|wp-includes)/}i.freeze
15
+ WORDPRESS_HOSTED_PATTERN = %r{https?://s\d\.wp\.com#{WORDPRESS_PATTERN}}i.freeze
16
+ WP_JSON_OEMBED_PATTERN = %r{/wp-json/oembed/}i.freeze
17
+ WP_ADMIN_AJAX_PATTERN = %r{\\?/wp-admin\\?/admin-ajax\.php}i.freeze
17
18
 
18
19
  # These methods are used in the associated interesting_findings finders
19
20
  # to keep the boolean state of the finding rather than re-check the whole thing again
@@ -103,11 +104,8 @@ module WPScan
103
104
  return true if /\.wordpress\.com$/i.match?(uri.host)
104
105
 
105
106
  unless content_dir
106
- pattern = %r{https?://s\d\.wp\.com#{WORDPRESS_PATTERN}}i.freeze
107
- xpath = '(//@href|//@src)[contains(., "wp.com")]'
108
-
109
- uris_from_page(homepage_res, xpath) do |uri|
110
- return true if uri.to_s.match?(pattern)
107
+ uris_from_page(homepage_res, '(//@href|//@src)[contains(., "wp.com")]') do |uri|
108
+ return true if uri.to_s.match?(WORDPRESS_HOSTED_PATTERN)
111
109
  end
112
110
  end
113
111
 
@@ -7,7 +7,8 @@ module Typhoeus
7
7
  #
8
8
  # @return [ Boolean ]
9
9
  def from_vuln_api?
10
- effective_url.start_with?(WPScan::DB::VulnApi.uri.to_s) && !effective_url.include?('/status')
10
+ effective_url.start_with?(WPScan::DB::VulnApi.uri.to_s) &&
11
+ !effective_url.start_with?(WPScan::DB::VulnApi.uri.join('status').to_s)
11
12
  end
12
13
  end
13
14
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Version
4
4
  module WPScan
5
- VERSION = '3.8.10'
5
+ VERSION = '3.8.11'
6
6
  end
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.8.10
4
+ version: 3.8.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - WPScanTeam
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-28 00:00:00.000000000 Z
11
+ date: 2020-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cms_scanner
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.9.13
47
+ version: 1.0.0
48
48
  type: :development
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: 0.9.13
54
+ version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.9.0
75
+ version: 3.10.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 3.9.0
82
+ version: 3.10.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec-its
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,42 +100,42 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.0.0
103
+ version: 1.6.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.0.0
110
+ version: 1.6.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rubocop-performance
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.8.0
117
+ version: 1.9.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.8.0
124
+ version: 1.9.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: simplecov
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.19.0
131
+ version: 0.20.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: 0.19.0
138
+ version: 0.20.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: simplecov-lcov
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -170,17 +170,17 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 3.9.0
173
+ version: 3.10.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: 3.9.0
180
+ version: 3.10.0
181
181
  description: WPScan is a black box WordPress vulnerability scanner.
182
182
  email:
183
- - team@wpscan.org
183
+ - contact@wpscan.com
184
184
  executables:
185
185
  - wpscan
186
186
  extensions: []
@@ -377,7 +377,7 @@ files:
377
377
  - lib/wpscan/version.rb
378
378
  - lib/wpscan/vulnerability.rb
379
379
  - lib/wpscan/vulnerable.rb
380
- homepage: https://wpscan.org/
380
+ homepage: https://wpscan.com/wordpress-security-scanner
381
381
  licenses:
382
382
  - Dual
383
383
  metadata: {}