Reduces time to detect non WP sites

This commit is contained in:
erwanlr
2020-02-13 19:15:30 +00:00
parent 72d699b39a
commit c100372b31
2 changed files with 25 additions and 2 deletions

View File

@@ -32,8 +32,12 @@ module WPScan
if %i[mixed aggressive].include?(detection_mode)
%w[wp-admin/install.php wp-login.php].each do |path|
return true if in_scope_uris(Browser.get_and_follow_location(url(path))).any? do |uri|
WORDPRESS_PATTERN.match?(uri.path)
res = Browser.get_and_follow_location(url(path))
next unless res.code == 200
in_scope_uris(res, '//link/@href|//script/@src') do |uri|
return true if WORDPRESS_PATTERN.match?(uri.path)
end
end
end

View File

@@ -82,6 +82,25 @@ shared_examples WPScan::Target::Platform::WordPress do
expect(subject.wordpress?(:mixed)).to be true
end
end
context 'when a lot of irrelevant links' do
let(:body) do
Array.new(250) do |i|
"<a href='#{subject.url}#{i}.html>Link</a><img src='#subject.{url}img-#{i}.png'/>"
end.join("\n")
end
it 'should not take a while to process check' do
stub_request(:get, target.url('wp-admin/install.php')).to_return(body: body)
stub_request(:get, target.url('wp-login.php')).to_return(body: body)
time_start = Time.now
expect(subject.wordpress?(:mixed)).to be false
time_end = Time.now
expect(time_end - time_start).to be < 1
end
end
end
end
end