Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wpscanteam
GitHub Repository: wpscanteam/wpscan
Path: blob/master/app/finders/wp_version.rb
485 views
1
# frozen_string_literal: true
2
3
require_relative 'wp_version/rss_generator'
4
require_relative 'wp_version/atom_generator'
5
require_relative 'wp_version/rdf_generator'
6
require_relative 'wp_version/readme'
7
require_relative 'wp_version/unique_fingerprinting'
8
9
module WPScan
10
module Finders
11
# Specific Finders container to filter the version detected
12
# and remove the one with low confidence to avoid false
13
# positive when there is not enough information to accurately
14
# determine it.
15
class WpVersionFinders < UniqueFinders
16
def filter_findings
17
best_finding = super
18
19
best_finding && best_finding.confidence >= 40 ? best_finding : false
20
end
21
end
22
23
module WpVersion
24
# Wp Version Finder
25
class Base
26
include CMSScanner::Finders::UniqueFinder
27
28
# @param [ WPScan::Target ] target
29
def initialize(target)
30
(%w[RSSGenerator AtomGenerator RDFGenerator] +
31
DB::DynamicFinders::Wordpress.versions_finders_configs.keys +
32
%w[Readme UniqueFingerprinting]
33
).each do |finder_name|
34
finders << WpVersion.const_get(finder_name.to_sym).new(target)
35
end
36
end
37
38
def finders
39
@finders ||= Finders::WpVersionFinders.new
40
end
41
end
42
end
43
end
44
end
45
46