wpscan 3.7.3 → 3.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +0 -2
- data/app/finders/main_theme.rb +7 -3
- data/app/finders/main_theme/css_style_in_404_page.rb +14 -0
- data/app/finders/main_theme/{css_style.rb → css_style_in_homepage.rb} +3 -3
- data/app/finders/main_theme/urls_in_404_page.rb +15 -0
- data/app/finders/main_theme/urls_in_homepage.rb +6 -1
- data/app/finders/main_theme/woo_framework_meta_generator.rb +1 -1
- data/app/finders/plugins.rb +2 -0
- data/app/finders/plugins/urls_in_404_page.rb +16 -0
- data/app/finders/plugins/urls_in_homepage.rb +7 -3
- data/app/finders/themes.rb +3 -1
- data/app/finders/themes/urls_in_404_page.rb +15 -0
- data/app/finders/themes/urls_in_homepage.rb +6 -1
- data/app/finders/wp_items.rb +1 -1
- data/app/finders/wp_items/{urls_in_homepage.rb → urls_in_page.rb} +3 -3
- data/app/models/wp_item.rb +1 -1
- data/app/views/cli/core/banner.erb +9 -9
- data/app/views/cli/finding.erb +1 -1
- data/lib/wpscan/finders/dynamic_finder/finder.rb +10 -2
- data/lib/wpscan/finders/dynamic_finder/wp_items/finder.rb +8 -3
- data/lib/wpscan/target/platform/wordpress.rb +23 -15
- data/lib/wpscan/target/platform/wordpress/custom_directories.rb +13 -9
- data/lib/wpscan/version.rb +1 -1
- metadata +12 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38d2b75ba4f218b5209c148d94b9f97d27bc09f006e0869b59d7d27f11e72a0e
|
4
|
+
data.tar.gz: 0d26b15d56d4275559d424153bd196ad8a591fb54831596b93d933ab06130fad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f86b4a313c7a643834d63d44f8eb851f1f338771abe1588e5c0b1bb6c77ba282829d53ed0211f7cd4434d54c579a06d5712ac466561d1573a6659bca9c74ff49
|
7
|
+
data.tar.gz: 1b41933c21f0fcb66a734549322b263e72d7130b2ab1c7546afe81235d06ca21668d8f2de3666831dd8dc911c635ae0c62f7af81d83604e7e983b5a24661f43f
|
data/LICENSE
CHANGED
@@ -29,8 +29,6 @@ Example cases which do not require a commercial license, and thus fall under the
|
|
29
29
|
|
30
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
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
32
|
Free-use Terms and Conditions;
|
35
33
|
|
36
34
|
3. Redistribution
|
data/app/finders/main_theme.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative 'main_theme/
|
3
|
+
require_relative 'main_theme/css_style_in_homepage'
|
4
|
+
require_relative 'main_theme/css_style_in_404_page'
|
4
5
|
require_relative 'main_theme/woo_framework_meta_generator'
|
5
6
|
require_relative 'main_theme/urls_in_homepage'
|
7
|
+
require_relative 'main_theme/urls_in_404_page'
|
6
8
|
|
7
9
|
module WPScan
|
8
10
|
module Finders
|
@@ -14,9 +16,11 @@ module WPScan
|
|
14
16
|
# @param [ WPScan::Target ] target
|
15
17
|
def initialize(target)
|
16
18
|
finders <<
|
17
|
-
MainTheme::
|
19
|
+
MainTheme::CssStyleInHomepage.new(target) <<
|
20
|
+
MainTheme::CssStyleIn404Page.new(target) <<
|
18
21
|
MainTheme::WooFrameworkMetaGenerator.new(target) <<
|
19
|
-
MainTheme::UrlsInHomepage.new(target)
|
22
|
+
MainTheme::UrlsInHomepage.new(target) <<
|
23
|
+
MainTheme::UrlsIn404Page.new(target)
|
20
24
|
end
|
21
25
|
end
|
22
26
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WPScan
|
4
|
+
module Finders
|
5
|
+
module MainTheme
|
6
|
+
# From the CSS style in the 404 page
|
7
|
+
class CssStyleIn404Page < CssStyleInHomepage
|
8
|
+
def passive(opts = {})
|
9
|
+
passive_from_css_href(target.error_404_res, opts) || passive_from_style_code(target.error_404_res, opts)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -3,9 +3,9 @@
|
|
3
3
|
module WPScan
|
4
4
|
module Finders
|
5
5
|
module MainTheme
|
6
|
-
# From the
|
7
|
-
class
|
8
|
-
include Finders::WpItems::
|
6
|
+
# From the CSS style in the homepage
|
7
|
+
class CssStyleInHomepage < CMSScanner::Finders::Finder
|
8
|
+
include Finders::WpItems::UrlsInPage # To have the item_code_pattern method available here
|
9
9
|
|
10
10
|
def create_theme(slug, style_url, opts)
|
11
11
|
Model::Theme.new(
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WPScan
|
4
|
+
module Finders
|
5
|
+
module MainTheme
|
6
|
+
# URLs In 404 Page Finder
|
7
|
+
class UrlsIn404Page < UrlsInHomepage
|
8
|
+
# @return [ Typhoeus::Response ]
|
9
|
+
def page_res
|
10
|
+
@page_res ||= target.error_404_res
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -5,7 +5,7 @@ module WPScan
|
|
5
5
|
module MainTheme
|
6
6
|
# URLs In Homepage Finder
|
7
7
|
class UrlsInHomepage < CMSScanner::Finders::Finder
|
8
|
-
include WpItems::
|
8
|
+
include WpItems::UrlsInPage
|
9
9
|
|
10
10
|
# @param [ Hash ] opts
|
11
11
|
#
|
@@ -21,6 +21,11 @@ module WPScan
|
|
21
21
|
|
22
22
|
found
|
23
23
|
end
|
24
|
+
|
25
|
+
# @return [ Typhoeus::Response ]
|
26
|
+
def page_res
|
27
|
+
@page_res ||= target.homepage_res
|
28
|
+
end
|
24
29
|
end
|
25
30
|
end
|
26
31
|
end
|
@@ -10,7 +10,7 @@ module WPScan
|
|
10
10
|
PATTERN = /#{THEME_PATTERN}\s+#{FRAMEWORK_PATTERN}/i.freeze
|
11
11
|
|
12
12
|
def passive(opts = {})
|
13
|
-
return unless target.homepage_res.body =~ PATTERN
|
13
|
+
return unless target.homepage_res.body =~ PATTERN || target.error_404_res.body =~ PATTERN
|
14
14
|
|
15
15
|
Model::Theme.new(
|
16
16
|
Regexp.last_match[1],
|
data/app/finders/plugins.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'plugins/urls_in_homepage'
|
4
|
+
require_relative 'plugins/urls_in_404_page'
|
4
5
|
require_relative 'plugins/known_locations'
|
5
6
|
# From the DynamicFinders
|
6
7
|
require_relative 'plugins/comment'
|
@@ -22,6 +23,7 @@ module WPScan
|
|
22
23
|
def initialize(target)
|
23
24
|
finders <<
|
24
25
|
Plugins::UrlsInHomepage.new(target) <<
|
26
|
+
Plugins::UrlsIn404Page.new(target) <<
|
25
27
|
Plugins::HeaderPattern.new(target) <<
|
26
28
|
Plugins::Comment.new(target) <<
|
27
29
|
Plugins::Xpath.new(target) <<
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WPScan
|
4
|
+
module Finders
|
5
|
+
module Plugins
|
6
|
+
# URLs In 404 Page Finder
|
7
|
+
# Typically, the items detected from URLs like /wp-content/plugins/<slug>/
|
8
|
+
class UrlsIn404Page < UrlsInHomepage
|
9
|
+
# @return [ Typhoeus::Response ]
|
10
|
+
def page_res
|
11
|
+
@page_res ||= target.error_404_res
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -4,10 +4,9 @@ module WPScan
|
|
4
4
|
module Finders
|
5
5
|
module Plugins
|
6
6
|
# URLs In Homepage Finder
|
7
|
-
# Typically, the items detected from URLs like
|
8
|
-
# /wp-content/plugins/<slug>/
|
7
|
+
# Typically, the items detected from URLs like /wp-content/plugins/<slug>/
|
9
8
|
class UrlsInHomepage < CMSScanner::Finders::Finder
|
10
|
-
include WpItems::
|
9
|
+
include WpItems::UrlsInPage
|
11
10
|
|
12
11
|
# @param [ Hash ] opts
|
13
12
|
#
|
@@ -21,6 +20,11 @@ module WPScan
|
|
21
20
|
|
22
21
|
found
|
23
22
|
end
|
23
|
+
|
24
|
+
# @return [ Typhoeus::Response ]
|
25
|
+
def page_res
|
26
|
+
@page_res ||= target.homepage_res
|
27
|
+
end
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
data/app/finders/themes.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'themes/urls_in_homepage'
|
4
|
+
require_relative 'themes/urls_in_404_page'
|
4
5
|
require_relative 'themes/known_locations'
|
5
6
|
|
6
7
|
module WPScan
|
7
8
|
module Finders
|
8
9
|
module Themes
|
9
|
-
#
|
10
|
+
# Themes Finder
|
10
11
|
class Base
|
11
12
|
include CMSScanner::Finders::SameTypeFinder
|
12
13
|
|
@@ -14,6 +15,7 @@ module WPScan
|
|
14
15
|
def initialize(target)
|
15
16
|
finders <<
|
16
17
|
Themes::UrlsInHomepage.new(target) <<
|
18
|
+
Themes::UrlsIn404Page.new(target) <<
|
17
19
|
Themes::KnownLocations.new(target)
|
18
20
|
end
|
19
21
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WPScan
|
4
|
+
module Finders
|
5
|
+
module Themes
|
6
|
+
# URLs In 04 Page Finder
|
7
|
+
class UrlsIn404Page < UrlsInHomepage
|
8
|
+
# @return [ Typhoeus::Response ]
|
9
|
+
def page_res
|
10
|
+
@page_res ||= target.error_404_res
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -5,7 +5,7 @@ module WPScan
|
|
5
5
|
module Themes
|
6
6
|
# URLs In Homepage Finder
|
7
7
|
class UrlsInHomepage < CMSScanner::Finders::Finder
|
8
|
-
include WpItems::
|
8
|
+
include WpItems::UrlsInPage
|
9
9
|
|
10
10
|
# @param [ Hash ] opts
|
11
11
|
#
|
@@ -19,6 +19,11 @@ module WPScan
|
|
19
19
|
|
20
20
|
found
|
21
21
|
end
|
22
|
+
|
23
|
+
# @return [ Typhoeus::Response ]
|
24
|
+
def page_res
|
25
|
+
@page_res ||= target.homepage_res
|
26
|
+
end
|
22
27
|
end
|
23
28
|
end
|
24
29
|
end
|
data/app/finders/wp_items.rb
CHANGED
@@ -4,7 +4,7 @@ module WPScan
|
|
4
4
|
module Finders
|
5
5
|
module WpItems
|
6
6
|
# URLs In Homepage Module to use in plugins & themes finders
|
7
|
-
module
|
7
|
+
module UrlsInPage
|
8
8
|
# @param [ String ] type plugins / themes
|
9
9
|
# @param [ Boolean ] uniq Wether or not to apply the #uniq on the results
|
10
10
|
#
|
@@ -12,7 +12,7 @@ module WPScan
|
|
12
12
|
def items_from_links(type, uniq = true)
|
13
13
|
found = []
|
14
14
|
|
15
|
-
target.in_scope_uris(
|
15
|
+
target.in_scope_uris(page_res) do |uri|
|
16
16
|
next unless uri.to_s =~ item_attribute_pattern(type)
|
17
17
|
|
18
18
|
slug = Regexp.last_match[1]&.strip
|
@@ -30,7 +30,7 @@ module WPScan
|
|
30
30
|
def items_from_codes(type, uniq = true)
|
31
31
|
found = []
|
32
32
|
|
33
|
-
|
33
|
+
page_res.html.xpath('//script[not(@src)]|//style[not(@src)]').each do |tag|
|
34
34
|
code = tag.text.to_s
|
35
35
|
next if code.empty?
|
36
36
|
|
data/app/models/wp_item.rb
CHANGED
@@ -14,7 +14,7 @@ module WPScan
|
|
14
14
|
|
15
15
|
attr_reader :uri, :slug, :detection_opts, :version_detection_opts, :blog, :path_from_blog, :db_data
|
16
16
|
|
17
|
-
delegate :homepage_res, :xpath_pattern_from_page, :in_scope_uris, :head_or_get_params, to: :blog
|
17
|
+
delegate :homepage_res, :error_404_res, :xpath_pattern_from_page, :in_scope_uris, :head_or_get_params, to: :blog
|
18
18
|
|
19
19
|
# @param [ String ] slug The plugin/theme slug
|
20
20
|
# @param [ Target ] blog The targeted blog
|
@@ -1,14 +1,14 @@
|
|
1
1
|
_______________________________________________________________
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
__ _______ _____
|
3
|
+
\ \ / / __ \ / ____|
|
4
|
+
\ \ /\ / /| |__) | (___ ___ __ _ _ __ ®
|
5
|
+
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
|
6
|
+
\ /\ / | | ____) | (__| (_| | | | |
|
7
|
+
\/ \/ |_| |_____/ \___|\__,_|_| |_|
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
WordPress Security Scanner by the WPScan Team
|
10
|
+
Version <%= WPScan::VERSION %>
|
11
11
|
<%= ' ' * ((63 - WPScan::DB::Sponsor.text.length)/2) + WPScan::DB::Sponsor.text %>
|
12
|
-
|
12
|
+
@_WPScan_, @ethicalhack3r, @erwan_lr, @_FireFart_
|
13
13
|
_______________________________________________________________
|
14
14
|
|
data/app/views/cli/finding.erb
CHANGED
@@ -44,19 +44,27 @@ module WPScan
|
|
44
44
|
#
|
45
45
|
# @param [ Typhoeus::Response ] response
|
46
46
|
# @param [ Hash ] opts
|
47
|
-
# @return [ Mixed ]
|
47
|
+
# @return [ Mixed: nil, Object, Array ]
|
48
48
|
def find(_response, _opts = {})
|
49
49
|
raise NoMethodError
|
50
50
|
end
|
51
51
|
|
52
52
|
# @param [ Hash ] opts
|
53
|
+
# @return [ Mixed ] See #find
|
53
54
|
def passive(opts = {})
|
54
55
|
return if self.class::PATH
|
55
56
|
|
56
|
-
find(target.homepage_res, opts)
|
57
|
+
homepage_result = find(target.homepage_res, opts)
|
58
|
+
|
59
|
+
if homepage_result
|
60
|
+
return homepage_result unless homepage_result.is_a?(Array) && homepage_result.empty?
|
61
|
+
end
|
62
|
+
|
63
|
+
find(target.error_404_res, opts)
|
57
64
|
end
|
58
65
|
|
59
66
|
# @param [ Hash ] opts
|
67
|
+
# @return [ Mixed ] See #find
|
60
68
|
def aggressive(opts = {})
|
61
69
|
return unless self.class::PATH
|
62
70
|
|
@@ -31,9 +31,14 @@ module WPScan
|
|
31
31
|
|
32
32
|
passive_configs.each do |slug, configs|
|
33
33
|
configs.each do |klass, config|
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
[target.homepage_res, target.error_404_res].each do |page_res|
|
35
|
+
item = process_response(opts, page_res, slug, klass, config)
|
36
|
+
|
37
|
+
if item.is_a?(Model::WpItem)
|
38
|
+
found << item
|
39
|
+
break # No need to check the other page if detected in the current
|
40
|
+
end
|
41
|
+
end
|
37
42
|
end
|
38
43
|
end
|
39
44
|
|
@@ -24,21 +24,10 @@ module WPScan
|
|
24
24
|
|
25
25
|
# @param [ Symbol ] detection_mode
|
26
26
|
#
|
27
|
-
# @return [ Boolean ]
|
28
|
-
# rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity
|
27
|
+
# @return [ Boolean ] Whether or not the target is running WordPress
|
29
28
|
def wordpress?(detection_mode)
|
30
|
-
|
31
|
-
return true if
|
32
|
-
end
|
33
|
-
|
34
|
-
return true if homepage_res.html.css('meta[name="generator"]').any? do |node|
|
35
|
-
/wordpress/i.match?(node['content'])
|
36
|
-
end
|
37
|
-
|
38
|
-
return true unless comments_from_page(/wordpress/i, homepage_res).empty?
|
39
|
-
|
40
|
-
return true if homepage_res.html.xpath('//script[not(@src)]').any? do |node|
|
41
|
-
WP_ADMIN_AJAX_PATTERN.match?(node.text)
|
29
|
+
[homepage_res, error_404_res].each do |page_res|
|
30
|
+
return true if wordpress_from_meta_comments_or_scripts?(page_res)
|
42
31
|
end
|
43
32
|
|
44
33
|
if %i[mixed aggressive].include?(detection_mode)
|
@@ -51,7 +40,26 @@ module WPScan
|
|
51
40
|
|
52
41
|
false
|
53
42
|
end
|
54
|
-
|
43
|
+
|
44
|
+
# @param [ Typhoeus::Response ] response
|
45
|
+
# @return [ Boolean ]
|
46
|
+
def wordpress_from_meta_comments_or_scripts?(response)
|
47
|
+
in_scope_uris(response) do |uri|
|
48
|
+
return true if WORDPRESS_PATTERN.match?(uri.path) || WP_JSON_OEMBED_PATTERN.match?(uri.path)
|
49
|
+
end
|
50
|
+
|
51
|
+
return true if response.html.css('meta[name="generator"]').any? do |node|
|
52
|
+
/wordpress/i.match?(node['content'])
|
53
|
+
end
|
54
|
+
|
55
|
+
return true unless comments_from_page(/wordpress/i, response).empty?
|
56
|
+
|
57
|
+
return true if response.html.xpath('//script[not(@src)]').any? do |node|
|
58
|
+
WP_ADMIN_AJAX_PATTERN.match?(node.text)
|
59
|
+
end
|
60
|
+
|
61
|
+
false
|
62
|
+
end
|
55
63
|
|
56
64
|
COOKIE_PATTERNS = {
|
57
65
|
'vjs' => /createCookie\('vjs','(?<c_value>\d+)',\d+\);/i
|
@@ -19,13 +19,15 @@ module WPScan
|
|
19
19
|
# scope_url_pattern is from CMSScanner::Target
|
20
20
|
pattern = %r{#{scope_url_pattern}([\w\s\-/]+?)\\?/(?:themes|plugins|uploads|cache)\\?/}i
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
[homepage_res, error_404_res].each do |page_res|
|
23
|
+
in_scope_uris(page_res, '//link/@href|//script/@src|//img/@src') do |uri|
|
24
|
+
return @content_dir = Regexp.last_match[1] if uri.to_s.match(pattern)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Checks for the pattern in raw JS code, as well as @content attributes of meta tags
|
28
|
+
xpath_pattern_from_page('//script[not(@src)]|//meta/@content', pattern, page_res) do |match|
|
29
|
+
return @content_dir = match[1]
|
30
|
+
end
|
29
31
|
end
|
30
32
|
|
31
33
|
return @content_dir = 'wp-content' if default_content_dir_exists?
|
@@ -104,8 +106,10 @@ module WPScan
|
|
104
106
|
# url_pattern is from CMSScanner::Target
|
105
107
|
pattern = %r{#{url_pattern}(.+?)/(?:xmlrpc\.php|wp\-includes/)}i
|
106
108
|
|
107
|
-
|
108
|
-
|
109
|
+
[homepage_res, error_404_res].each do |page_res|
|
110
|
+
in_scope_uris(page_res) do |uri|
|
111
|
+
return @sub_dir = Regexp.last_match[1] if uri.to_s.match(pattern)
|
112
|
+
end
|
109
113
|
end
|
110
114
|
|
111
115
|
@sub_dir = false
|
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.7.
|
4
|
+
version: 3.7.4
|
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
|
+
date: 2019-11-05 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.
|
19
|
+
version: 0.7.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.
|
26
|
+
version: 0.7.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.
|
117
|
+
version: 0.76.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.
|
124
|
+
version: 0.76.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rubocop-performance
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,7 +220,9 @@ files:
|
|
220
220
|
- app/finders/interesting_findings/upload_sql_dump.rb
|
221
221
|
- app/finders/interesting_findings/wp_cron.rb
|
222
222
|
- app/finders/main_theme.rb
|
223
|
-
- app/finders/main_theme/
|
223
|
+
- app/finders/main_theme/css_style_in_404_page.rb
|
224
|
+
- app/finders/main_theme/css_style_in_homepage.rb
|
225
|
+
- app/finders/main_theme/urls_in_404_page.rb
|
224
226
|
- app/finders/main_theme/urls_in_homepage.rb
|
225
227
|
- app/finders/main_theme/woo_framework_meta_generator.rb
|
226
228
|
- app/finders/medias.rb
|
@@ -239,6 +241,7 @@ files:
|
|
239
241
|
- app/finders/plugins/javascript_var.rb
|
240
242
|
- app/finders/plugins/known_locations.rb
|
241
243
|
- app/finders/plugins/query_parameter.rb
|
244
|
+
- app/finders/plugins/urls_in_404_page.rb
|
242
245
|
- app/finders/plugins/urls_in_homepage.rb
|
243
246
|
- app/finders/plugins/xpath.rb
|
244
247
|
- app/finders/theme_version.rb
|
@@ -246,6 +249,7 @@ files:
|
|
246
249
|
- app/finders/theme_version/woo_framework_meta_generator.rb
|
247
250
|
- app/finders/themes.rb
|
248
251
|
- app/finders/themes/known_locations.rb
|
252
|
+
- app/finders/themes/urls_in_404_page.rb
|
249
253
|
- app/finders/themes/urls_in_homepage.rb
|
250
254
|
- app/finders/timthumb_version.rb
|
251
255
|
- app/finders/timthumb_version/bad_request.rb
|
@@ -260,7 +264,7 @@ files:
|
|
260
264
|
- app/finders/users/wp_json_api.rb
|
261
265
|
- app/finders/users/yoast_seo_author_sitemap.rb
|
262
266
|
- app/finders/wp_items.rb
|
263
|
-
- app/finders/wp_items/
|
267
|
+
- app/finders/wp_items/urls_in_page.rb
|
264
268
|
- app/finders/wp_version.rb
|
265
269
|
- app/finders/wp_version/atom_generator.rb
|
266
270
|
- app/finders/wp_version/rdf_generator.rb
|