Class: WPScan::Finders::WpVersion::Readme

Inherits:
CMSScanner::Finders::Finder
  • Object
show all
Defined in:
app/finders/wp_version/readme.rb

Overview

Readme Version Finder

Instance Method Summary collapse

Instance Method Details

#aggressive(_opts = {}) ⇒ WpVersion

Returns:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/finders/wp_version/readme.rb', line 9

def aggressive(_opts = {})
  readme_url = target.url('readme.html') # Maybe move this into the Target ?

  node = Browser.get(readme_url).html.css('h1#logo').last

  return unless node&.text.to_s.strip =~ /\AVersion (.*)\z/i

  number = Regexp.last_match(1)

  return unless Model::WpVersion.valid?(number)

  Model::WpVersion.new(
    number,
    found_by: 'Readme (Aggressive Detection)',
    # Since WP 4.7, the Readme only contains the major version (ie 4.7, 4.8 etc)
    confidence: number >= '4.7' ? 10 : 90,
    interesting_entries: ["#{readme_url}, Match: '#{node.text.to_s.strip}'"]
  )
end