wpscan 3.1.0 → 3.2.0

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
  SHA1:
3
- metadata.gz: 247fd91f253010fbefa767737b15d9abce9abdc5
4
- data.tar.gz: bf4527c1501a3b641a4a242043baf8d302e0e5e8
3
+ metadata.gz: 2cd042a221b0b46139937c959bd6428d4bedd1a2
4
+ data.tar.gz: dd5575dbaf1929427b82e8fa85496941eb3da313
5
5
  SHA512:
6
- metadata.gz: 6f7ae471f65c4abab39653e95153a10c5893f7995f64b403bb9e4bac6748e93394daa4db9e4e2175293165dee60813a168af7f8043cbd249232a1b6abec00cfd
7
- data.tar.gz: 86c27e7770b2674f286fcf55d49fe6b0cb2540d0a24a790e80c268b9901ab00cfd0d0e793ae294aebda586f414212a5077a1f58b489b272413c672833118dcab
6
+ metadata.gz: ebe332bbc3f165474bfef341caf390d9ade882270ebaf68a901a4a8379decdc482cba640461aa8ff545b9ee05f9d2b84c6cec29a6f11129b2a50363eaf416f95
7
+ data.tar.gz: 225ef4a7706c4a44bd70a5c5da2b420a8d0f73d1bae8b52f613d1eb054fb469a86c60860189324a1e1f2505e129038b2bb521315485dd366830a86d8536556bd
data/README.md CHANGED
@@ -113,7 +113,9 @@ Pull the repo with ```docker pull wpscanteam/wpscan-v3```
113
113
 
114
114
  # Usage
115
115
 
116
- Open a terminal and type ```wpscan --help``` (if you built wpscan from the source, you should type the command outside of the git repo)
116
+ ```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.
117
+
118
+ 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)
117
119
 
118
120
  The DB is located at ~/.wpscan/db
119
121
 
@@ -4,7 +4,8 @@ module WPScan
4
4
  class Aliases < CMSScanner::Controller::Base
5
5
  def cli_options
6
6
  [
7
- OptAlias.new(['--stealthy'], alias_for: '--random-user-agent --detection-mode passive')
7
+ OptAlias.new(['--stealthy'],
8
+ alias_for: '--random-user-agent --detection-mode passive --plugins-version-detection passive')
8
9
  ]
9
10
  end
10
11
  end
@@ -26,7 +26,8 @@ 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: [%i[vp ap p], %i[vt at t]]
29
+ incompatible: [%i[vp ap p], %i[vt at t]],
30
+ default: { all_plugins: true, config_backups: true }
30
31
  ),
31
32
  OptRegexp.new(
32
33
  [
@@ -46,7 +47,7 @@ module WPScan
46
47
  OptChoice.new(
47
48
  ['--plugins-detection MODE',
48
49
  'Use the supplied mode to enumerate Plugins, instead of the global (--detection-mode) mode.'],
49
- choices: %w[mixed passive aggressive], normalize: :to_sym
50
+ choices: %w[mixed passive aggressive], normalize: :to_sym, default: :passive
50
51
  ),
51
52
  OptBoolean.new(
52
53
  ['--plugins-version-all',
@@ -57,7 +58,7 @@ module WPScan
57
58
  ['--plugins-version-detection MODE',
58
59
  'Use the supplied mode to check plugins versions instead of the --detection-mode ' \
59
60
  'or --plugins-detection modes.'],
60
- choices: %w[mixed passive aggressive], normalize: :to_sym
61
+ choices: %w[mixed passive aggressive], normalize: :to_sym, default: :mixed
61
62
  )
62
63
  ]
63
64
  end
@@ -164,7 +164,7 @@ module WPScan
164
164
  # If the --enumerate is used, the default value is handled by the Option
165
165
  # However, when using --passwords alone, the default has to be set by the code below
166
166
  def enum_users_range
167
- parsed_options[:enumerate] ? parsed_options[:enumerate][:users] : cli_enum_choices[0].choices[:u].validate(nil)
167
+ parsed_options[:enumerate][:users] || cli_enum_choices[0].choices[:u].validate(nil)
168
168
  end
169
169
  end
170
170
  end
@@ -20,7 +20,9 @@ module WPScan
20
20
 
21
21
  parsers.each do |parser|
22
22
  begin
23
- return parser.respond_to?(:safe_load) ? parser.safe_load(body) : parser.load(body)
23
+ parsed = parser.respond_to?(:safe_load) ? parser.safe_load(body) : parser.load(body)
24
+
25
+ return parsed if parsed.is_a?(Hash)
24
26
  rescue StandardError
25
27
  next
26
28
  end
@@ -39,7 +39,7 @@ module WPScan
39
39
  def version_number_from_match_data(match_data)
40
40
  if self.class::VERSION_KEY
41
41
  begin
42
- json = JSON.parse("{#{match_data[:json].strip.tr("'", '"')}}")
42
+ json = JSON.parse("{#{match_data[:json].strip.chomp(',').tr("'", '"')}}")
43
43
  rescue JSON::ParserError
44
44
  return
45
45
  end
@@ -1,4 +1,4 @@
1
1
  # Version
2
2
  module WPScan
3
- VERSION = '3.1.0'.freeze
3
+ VERSION = '3.2.0'.freeze
4
4
  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.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - WPScanTeam
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-16 00:00:00.000000000 Z
11
+ date: 2018-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cms_scanner
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '5.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: opt_parse_validator
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.15.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.15.2
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: yajl-ruby
43
57
  requirement: !ruby/object:Gem::Requirement