46 lines
1.1 KiB
Ruby
46 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module WPScan
|
|
module Finders
|
|
module ThemeVersion
|
|
# Theme Version Finder from the style.css file
|
|
class Style < CMSScanner::Finders::Finder
|
|
# @param [ Hash ] opts
|
|
#
|
|
# @return [ Version ]
|
|
def passive(_opts = {})
|
|
return unless cached_style?
|
|
|
|
style_version
|
|
end
|
|
|
|
# @param [ Hash ] opts
|
|
#
|
|
# @return [ Version ]
|
|
def aggressive(_opts = {})
|
|
return if cached_style?
|
|
|
|
style_version
|
|
end
|
|
|
|
# @return [ Boolean ]
|
|
def cached_style?
|
|
Typhoeus::Config.cache.get(browser.forge_request(target.style_url)) ? true : false
|
|
end
|
|
|
|
# @return [ Version ]
|
|
def style_version
|
|
return unless Browser.get(target.style_url).body =~ /Version:[\t ]*(?!trunk)([0-9a-z.-]+)/i
|
|
|
|
Model::Version.new(
|
|
Regexp.last_match[1],
|
|
found_by: found_by,
|
|
confidence: 80,
|
|
interesting_entries: ["#{target.style_url}, Match: '#{Regexp.last_match}'"]
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|