# encoding: UTF-8 class WpPlugins < WpItems module Detectable # @return [ String ] def vulns_file PLUGINS_VULNS_FILE end # @return [ String ] # def item_xpath # '//plugin' # end # @param [ WpTarget ] wp_target # @param [ Hash ] options # # @return [ WpPlugins ] def passive_detection(wp_target, options = {}) detected = super(wp_target, options) detected += from_header(wp_target) detected += from_content(wp_target) detected.uniq! { |i| i.name } detected end protected # X-Powered-By: W3 Total Cache/0.9.2.5 # WP-Super-Cache: Served supercache file from PHP # @param [ WpTarget ] wp_target # # @return [ WpPlugins ] def from_header(wp_target) headers = Browser.get(wp_target.url).headers wp_plugins = WpPlugins.new(wp_target) if headers powered_by = headers['X-Powered-By'].to_s wp_super_cache = headers['wp-super-cache'].to_s if matches = /W3 Total Cache\/([0-9.]+)/i.match(powered_by) wp_plugins.add('w3-total-cache', version: matches[1]) end wp_plugins.add('wp-super-cache') if wp_super_cache =~ /supercache/i end wp_plugins end # #