wpscan 3.7.5 → 3.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29a5b1b220faac482fcc9dfc75acc1b5fa317b784781e661edaf62e8a4461b04
4
- data.tar.gz: 6f6734691c70deafdccfbf955233ffaaa205ff6b74fb98d8f03445706f30931d
3
+ metadata.gz: 19a2c1feb1442174b5f721eda7586cfee74fb28e1adbc232e9c9ccff1f4857d8
4
+ data.tar.gz: 86b8ec27710e3274849621cf389aa78f8aec160463356bed8fdf916753b68c7d
5
5
  SHA512:
6
- metadata.gz: 45ad4347d4492e62b1c7c12e095abbe07fafd2c68f45991372afdbe25a95a32d7c7bb03e3f80758ebbcc3dbc8408ed2698d05ecc607c8221978b6e8408a8d818
7
- data.tar.gz: 0af442e8628c812c473d07a3342fe2195e2e786ebece14f05d788b98b464b2d54f7614847705645e85a6984f284850768968d51d7056e64bd4de7d8232bf0b0c
6
+ metadata.gz: 79fc67c24d7ff4ddcd37d89711e85cd7bdfa5fe85e1c097f880f210ccc509d0844d06cff73f742ad81233dc0136116bb97d916fe81e018efd00d8f6bc1d93be5
7
+ data.tar.gz: 03f8380c1c7ff59f9f034bdda8914ceb5ab335d636f52a9302cffdd32f13ec0b3f62a5f3a91ae41bd4c893e3c8580df09a3bcda7265c7917b4a79c1cf4901e09
@@ -19,8 +19,12 @@ module WPScan
19
19
  def aggressive(opts = {})
20
20
  found = []
21
21
 
22
- enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |_res, slug|
23
- found << Model::Plugin.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
22
+ enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, slug|
23
+ finding_opts = opts.merge(found_by: found_by,
24
+ confidence: 80,
25
+ interesting_entries: ["#{res.effective_url}, status: #{res.code}"])
26
+
27
+ found << Model::Plugin.new(slug, target, finding_opts)
24
28
 
25
29
  raise Error::PluginsThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
26
30
  end
@@ -19,8 +19,12 @@ module WPScan
19
19
  def aggressive(opts = {})
20
20
  found = []
21
21
 
22
- enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |_res, slug|
23
- found << Model::Theme.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
22
+ enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, slug|
23
+ finding_opts = opts.merge(found_by: found_by,
24
+ confidence: 80,
25
+ interesting_entries: ["#{res.effective_url}, status: #{res.code}"])
26
+
27
+ found << Model::Theme.new(slug, target, finding_opts)
24
28
 
25
29
  raise Error::ThemesThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
26
30
  end
@@ -23,7 +23,7 @@ module WPScan
23
23
  # @option opts [ Hash ] :version_detection The options to use when looking for the version
24
24
  # @option opts [ String ] :url The URL of the item
25
25
  def initialize(slug, blog, opts = {})
26
- @slug = URI.decode(slug)
26
+ @slug = Addressable::URI.unencode(slug)
27
27
  @blog = blog
28
28
  @uri = Addressable::URI.parse(opts[:url]) if opts[:url]
29
29
 
@@ -83,11 +83,6 @@ module WPScan
83
83
  end
84
84
  end
85
85
 
86
- # URI.encode is preferered over Addressable::URI.encode as it will encode
87
- # leading # character:
88
- # URI.encode('#t#') => %23t%23
89
- # Addressable::URI.encode('#t#') => #t%23
90
- #
91
86
  # @param [ String ] path Optional path to merge with the uri
92
87
  #
93
88
  # @return [ String ]
@@ -95,7 +90,7 @@ module WPScan
95
90
  return unless @uri
96
91
  return @uri.to_s unless path
97
92
 
98
- @uri.join(URI.encode(path)).to_s
93
+ @uri.join(Addressable::URI.encode(path)).to_s
99
94
  end
100
95
 
101
96
  # @return [ Boolean ]
@@ -166,7 +161,7 @@ module WPScan
166
161
  # @return [ Typhoeus::Response ]
167
162
  def head_and_get(path, codes = [200], params = {})
168
163
  final_path = +@path_from_blog
169
- final_path << URI.encode(path) unless path.nil?
164
+ final_path << path unless path.nil?
170
165
 
171
166
  blog.head_and_get(final_path, codes, params)
172
167
  end
@@ -9,6 +9,6 @@ _______________________________________________________________
9
9
  WordPress Security Scanner by the WPScan Team
10
10
  Version <%= WPScan::VERSION %>
11
11
  <%= ' ' * ((63 - WPScan::DB::Sponsor.text.length)/2) + WPScan::DB::Sponsor.text %>
12
- @_WPScan_, @ethicalhack3r, @erwan_lr, @_FireFart_
12
+ @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
13
13
  _______________________________________________________________
14
14
 
@@ -9,5 +9,5 @@
9
9
  <% end -%>
10
10
  <% else -%>
11
11
  <%= warning_icon %> No WPVulnDB API Token given, as a result vulnerability data has not been output.
12
- <%= warning_icon %> You can get a free API token with 50 daily requests by registering at https://wpvulndb.com/users/sign_up.
12
+ <%= warning_icon %> You can get a free API token with 50 daily requests by registering at https://wpvulndb.com/users/sign_up
13
13
  <% end -%>
@@ -5,7 +5,7 @@
5
5
  "@_WPScan_",
6
6
  "@ethicalhack3r",
7
7
  "@erwan_lr",
8
- "@_FireFart_"
8
+ "@firefart"
9
9
  ],
10
10
  "sponsor": <%= WPScan::DB::Sponsor.text.to_json %>
11
11
  },
@@ -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://wpvulndb.com/users/sign_up."
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://wpvulndb.com/users/sign_up"
12
12
  <% end -%>
13
13
  },
@@ -37,6 +37,8 @@ module WPScan
37
37
  end
38
38
  end
39
39
 
40
+ # This one has been disabled from the DF.yml as it was causing FPs when a plugin had numerous
41
+ # files matching a known WP version.
40
42
  class WpItemQueryParameter < QueryParameter
41
43
  def xpath
42
44
  @xpath ||=
@@ -71,7 +71,7 @@ module WPScan
71
71
  #
72
72
  # @return [ String ]
73
73
  def plugin_url(slug)
74
- plugins_uri.join("#{URI.encode(slug)}/").to_s
74
+ plugins_uri.join("#{Addressable::URI.encode(slug)}/").to_s
75
75
  end
76
76
 
77
77
  # @return [ String ]
@@ -93,7 +93,7 @@ module WPScan
93
93
  #
94
94
  # @return [ String ]
95
95
  def theme_url(slug)
96
- themes_uri.join("#{URI.encode(slug)}/").to_s
96
+ themes_uri.join("#{Addressable::URI.encode(slug)}/").to_s
97
97
  end
98
98
 
99
99
  # @return [ String, False ] String of the sub_dir found, false otherwise
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Version
4
4
  module WPScan
5
- VERSION = '3.7.5'
5
+ VERSION = '3.7.6'
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.7.5
4
+ version: 3.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - WPScanTeam
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-11 00:00:00.000000000 Z
11
+ date: 2020-01-02 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.7.1
19
+ version: 0.8.1
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.7.1
26
+ version: 0.8.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.76.0
117
+ version: 0.78.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: 0.76.0
124
+ version: 0.78.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop-performance
127
127
  requirement: !ruby/object:Gem::Requirement