HELLO v3!!!
This commit is contained in:
66
lib/wpscan/finders/dynamic_finder/finder.rb
Normal file
66
lib/wpscan/finders/dynamic_finder/finder.rb
Normal file
@@ -0,0 +1,66 @@
|
||||
module WPScan
|
||||
module Finders
|
||||
module DynamicFinder
|
||||
# To be used as a base when creating a dynamic finder
|
||||
class Finder < CMSScanner::Finders::Finder
|
||||
# @param [ Array ] args
|
||||
def self.child_class_constant(*args)
|
||||
args.each do |arg|
|
||||
if arg.is_a?(Hash)
|
||||
child_class_constants.merge!(arg)
|
||||
else
|
||||
child_class_constants[arg] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Needed to have inheritance of the @child_class_constants
|
||||
# If inheritance is not needed, then the #child_class_constant can be used in the classe definition, ie
|
||||
# child_class_constant :FILES, PATTERN: /aaa/i
|
||||
# @return [ Hash ]
|
||||
def self.child_class_constants
|
||||
@child_class_constants ||= { PATH: nil }
|
||||
end
|
||||
|
||||
# @param [ Constant ] mod
|
||||
# @param [ Constant ] klass
|
||||
# @param [ Hash ] config
|
||||
def self.create_child_class(mod, klass, config)
|
||||
# Can't use the #child_class_constants directly in the Class.new(self) do; end below
|
||||
class_constants = child_class_constants
|
||||
|
||||
mod.const_set(
|
||||
klass, Class.new(self) do
|
||||
class_constants.each do |key, value|
|
||||
const_set(key, config[key.downcase.to_s] || value)
|
||||
end
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
# This method has to be overriden in child classes
|
||||
#
|
||||
# @param [ Typhoeus::Response ] response
|
||||
# @param [ Hash ] opts
|
||||
# @return [ Mixed ]
|
||||
def find(_response, _opts = {})
|
||||
raise NoMethodError
|
||||
end
|
||||
|
||||
# @param [ Hash ] opts
|
||||
def passive(opts = {})
|
||||
return if self.class::PATH
|
||||
|
||||
find(target.homepage_res, opts)
|
||||
end
|
||||
|
||||
# @param [ Hash ] opts
|
||||
def aggressive(opts = {})
|
||||
return unless self.class::PATH
|
||||
|
||||
find(Browser.get(target.url(self.class::PATH)), opts)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user