Skip to content

Commit e4cdac1

Browse files
committed
Land rapid7#4559, @firefart's fix for wordpress version detection (from wpscan)
2 parents fb5170e + 75726f1 commit e4cdac1

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

lib/msf/http/wordpress/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def check_version_from_readme(type, name, fixed_version, vuln_introduced_version
9898
# try to extract version from readme
9999
# Example line:
100100
# Stable tag: 2.6.6
101-
version = res.body.to_s[/(?:stable tag|version): (?!trunk)([0-9a-z.-]+)/i, 1]
101+
version = res.body.to_s[/(?:stable tag|version):\s*(?!trunk)([0-9a-z.-]+)/i, 1]
102102

103103
# readme present, but no version number
104104
return Msf::Exploit::CheckCode::Detected if version.nil?

spec/lib/msf/http/wordpress/version_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,15 @@
9191
it { expect(subject.send(:check_version_from_readme, :plugin, 'name', wp_fixed_version)).to be(Msf::Exploit::CheckCode::Detected) }
9292
end
9393

94+
context 'when version from readme has arbitrary leading whitespace' do
95+
let(:wp_code) { 200 }
96+
let(:wp_fixed_version) { '1.0.1' }
97+
let(:wp_body) { 'stable tag: 1.0.0' }
98+
it { expect(subject.send(:check_version_from_readme, :plugin, 'name', wp_fixed_version)).to be(Msf::Exploit::CheckCode::Appears) }
99+
let(:wp_body) { 'stable tag:1.0.0' }
100+
it { expect(subject.send(:check_version_from_readme, :plugin, 'name', wp_fixed_version)).to be(Msf::Exploit::CheckCode::Appears) }
101+
end
102+
94103
context 'when installed version is vulnerable' do
95104
let(:wp_code) { 200 }
96105
let(:wp_fixed_version) { '1.0.1' }

0 commit comments

Comments
 (0)