WpItems::Detectable#passive_detection Complexity Reduced

This commit is contained in:
erwanlr
2013-07-24 14:35:15 +02:00
parent 669e1458da
commit ab1381e830

View File

@@ -71,21 +71,11 @@ class WpItems < Array
# #
# @return [ WpItems ] # @return [ WpItems ]
def passive_detection(wp_target, options = {}) def passive_detection(wp_target, options = {})
results = new results = new(wp_target)
item_class = self.item_class body = Browser.get(wp_target.url).body
type = self.to_s.gsub(/Wp/, '').downcase names = body.scan(passive_detection_pattern(wp_target))
response = Browser.get(wp_target.url)
item_options = self.item_options(wp_target)
regex1 = %r{(?:[^=:]+)\s?(?:=|:)\s?(?:"|')[^"']+\\?/} names.flatten.uniq.each { |name| results.add(name) }
regex2 = %r{\\?/}
regex3 = %r{\\?/([^/\\"']+)\\?(?:/|"|')}
names = response.body.scan(/#{regex1}#{Regexp.escape(wp_target.wp_content_dir)}#{regex2}#{Regexp.escape(type)}#{regex3}/i)
names.flatten.uniq.each do |name|
results << item_class.new(wp_target.uri, item_options.merge(name: name))
end
results.sort! results.sort!
results results
@@ -95,13 +85,14 @@ class WpItems < Array
# @param [ WpTarget ] wp_target # @param [ WpTarget ] wp_target
# #
# @return [ Hash ] # @return [ Regex ]
def item_options(wp_target) def passive_detection_pattern(wp_target)
{ type = self.to_s.gsub(/Wp/, '').downcase
wp_content_dir: wp_target.wp_content_dir, regex1 = %r{(?:[^=:]+)\s?(?:=|:)\s?(?:"|')[^"']+\\?/}
wp_plugins_dir: wp_target.wp_plugins_dir, regex2 = %r{\\?/}
vulns_file: self.vulns_file regex3 = %r{\\?/([^/\\"']+)\\?(?:/|"|')}
}
/#{regex1}#{Regexp.escape(wp_target.wp_content_dir)}#{regex2}#{Regexp.escape(type)}#{regex3}/i
end end
# The default request parameters # The default request parameters