Module: CMSScanner::Target::Platform::WordPress
- Includes:
- PHP
- Defined in:
- lib/cms_scanner/target/platform/wordpress.rb,
lib/cms_scanner/target/platform/wordpress/custom_directories.rb
Overview
wp-content & plugins directory implementation
Constant Summary
collapse
- WORDPRESS_PATTERN =
%r{/(?:(?:wp-content/(?:themes|plugins|plugins))|wp-includes)/}i
Constants included
from PHP
PHP::DEBUG_LOG_PATTERN, PHP::FPD_PATTERN
Instance Method Summary
collapse
Methods included from PHP
#debug_log?, #full_path_disclosure?, #full_path_disclosure_entries
Instance Method Details
#content_dir ⇒ String
Returns The wp-content directory.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/cms_scanner/target/platform/wordpress/custom_directories.rb', line 15
def content_dir
unless @content_dir
page = Nokogiri::HTML(Browser.get(url).body)
escaped_url = Regexp.escape(url).gsub(/https?/i, 'https?')
pattern = %r{#{escaped_url}(.+?)\/(?:themes|plugins|uploads)\/}i
page.css('link,script,style,img').each do |tag|
%w(href src).each do |attribute|
attr_value = tag.attribute(attribute).to_s
next if attr_value.nil? || attr_value.empty?
next unless in_scope?(attr_value) && attr_value.match(pattern)
return @content_dir = Regexp.last_match[1]
end
end
end
@content_dir
end
|
#content_dir=(dir) ⇒ Object
6
7
8
|
# File 'lib/cms_scanner/target/platform/wordpress/custom_directories.rb', line 6
def content_dir=(dir)
@content_dir = dir.chomp('/')
end
|
#content_uri ⇒ Addressable::URI
36
37
38
|
# File 'lib/cms_scanner/target/platform/wordpress/custom_directories.rb', line 36
def content_uri
uri.join("#{content_dir}/")
end
|
#content_url ⇒ String
41
42
43
|
# File 'lib/cms_scanner/target/platform/wordpress/custom_directories.rb', line 41
def content_url
content_uri.to_s
end
|
#plugins_dir ⇒ String
46
47
48
|
# File 'lib/cms_scanner/target/platform/wordpress/custom_directories.rb', line 46
def plugins_dir
@plugins_dir ||= "#{content_dir}/plugins"
end
|
#plugins_dir=(dir) ⇒ Object
10
11
12
|
# File 'lib/cms_scanner/target/platform/wordpress/custom_directories.rb', line 10
def plugins_dir=(dir)
@plugins_dir = dir.chomp('/')
end
|
#plugins_uri ⇒ Addressable::URI
51
52
53
|
# File 'lib/cms_scanner/target/platform/wordpress/custom_directories.rb', line 51
def plugins_uri
uri.join("#{plugins_dir}/")
end
|
#plugins_url ⇒ String
56
57
58
|
# File 'lib/cms_scanner/target/platform/wordpress/custom_directories.rb', line 56
def plugins_url
plugins_uri.to_s
end
|
#wordpress? ⇒ Boolean
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/cms_scanner/target/platform/wordpress.rb', line 14
def wordpress?
page = Nokogiri::HTML(Browser.get(url).body)
page.css('script, link').each do |tag|
tag_url = tag.attribute('href').to_s
next unless in_scope?(tag_url)
tag_uri = Addressable::URI.parse(tag_url)
return true if tag_uri.path =~ WORDPRESS_PATTERN
end
false
end
|
#wordpress_hosted? ⇒ Boolean
29
30
31
|
# File 'lib/cms_scanner/target/platform/wordpress.rb', line 29
def wordpress_hosted?
uri.host =~ /wordpress.com$/i ? true : false
end
|