Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wpscanteam
GitHub Repository: wpscanteam/wpscan
Path: blob/master/app/finders/wp_version/readme.rb
485 views
1
# frozen_string_literal: true
2
3
module WPScan
4
module Finders
5
module WpVersion
6
# Readme Version Finder
7
class Readme < CMSScanner::Finders::Finder
8
# @return [ WpVersion ]
9
def aggressive(_opts = {})
10
readme_url = target.url('readme.html') # Maybe move this into the Target ?
11
12
node = Browser.get(readme_url).html.css('h1#logo').last
13
14
return unless node&.text.to_s.strip =~ /\AVersion (.*)\z/i
15
16
number = Regexp.last_match(1)
17
18
return unless Model::WpVersion.valid?(number)
19
20
Model::WpVersion.new(
21
number,
22
found_by: 'Readme (Aggressive Detection)',
23
# Since WP 4.7, the Readme only contains the major version (ie 4.7, 4.8 etc)
24
confidence: number >= '4.7' ? 10 : 90,
25
interesting_entries: ["#{readme_url}, Match: '#{node.text.to_s.strip}'"]
26
)
27
end
28
end
29
end
30
end
31
end
32
33