Reduces time to detect non WP sites
This commit is contained in:
@@ -32,8 +32,12 @@ module WPScan
|
|||||||
|
|
||||||
if %i[mixed aggressive].include?(detection_mode)
|
if %i[mixed aggressive].include?(detection_mode)
|
||||||
%w[wp-admin/install.php wp-login.php].each do |path|
|
%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|
|
res = Browser.get_and_follow_location(url(path))
|
||||||
WORDPRESS_PATTERN.match?(uri.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
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -82,6 +82,25 @@ shared_examples WPScan::Target::Platform::WordPress do
|
|||||||
expect(subject.wordpress?(:mixed)).to be true
|
expect(subject.wordpress?(:mixed)).to be true
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user