Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wpscanteam
GitHub Repository: wpscanteam/wpscan
Path: blob/master/spec/app/finders/wp_version/atom_generator_spec.rb
1483 views
1
# frozen_string_literal: true
2
3
describe WPScan::Finders::WpVersion::AtomGenerator do
4
subject(:finder) { described_class.new(target) }
5
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
6
let(:url) { 'http://ex.lo/' }
7
let(:fixtures) { FINDERS_FIXTURES.join('wp_version', 'atom_generator') }
8
let(:atom_fixture) { File.read(fixtures.join('feed', 'atom')) }
9
10
describe '#passive, #aggressive' do
11
before do
12
allow(target).to receive(:sub_dir).and_return(false)
13
14
stub_request(:get, target.url).to_return(body: File.read(homepage_fixture))
15
end
16
17
context 'when no atom links in homepage' do
18
let(:homepage_fixture) { fixtures.join('no_links.html') }
19
20
its(:passive) { should eql [] }
21
22
it 'returns the expected from #aggressive' do
23
stub_request(:get, target.url('feed/atom/')).to_return(body: atom_fixture)
24
stub_request(:get, target.url('?feed=atom'))
25
26
expect(finder.aggressive).to eql [
27
WPScan::Model::WpVersion.new(
28
'4.0',
29
confidence: 80,
30
found_by: 'Atom Generator (Aggressive Detection)',
31
interesting_entries: [
32
"#{target.url('feed/atom/')}, Match: '<generator uri=\"https://wordpress.org/\" version=\"4.0\">" \
33
"WordPress</generator>'"
34
]
35
)
36
]
37
end
38
end
39
40
context 'when atom links in homepage' do
41
let(:homepage_fixture) { fixtures.join('links.html') }
42
43
it 'returns the expected from #passive' do
44
stub_request(:get, target.url('?feed=atom')).to_return(body: atom_fixture)
45
46
expect(finder.passive).to eql [
47
WPScan::Model::WpVersion.new(
48
'4.0',
49
confidence: 80,
50
found_by: 'Atom Generator (Passive Detection)',
51
interesting_entries: [
52
"#{target.url('?feed=atom')}, Match: '<generator uri=\"https://wordpress.org/\" version=\"4.0\">" \
53
"WordPress</generator>'"
54
]
55
)
56
]
57
end
58
59
context 'when :mixed mode' do
60
it 'avoids checking existing URL/s from #passive' do
61
stub_request(:get, target.url('feed/atom/')).to_return(body: atom_fixture)
62
63
expect(finder.aggressive(mode: :mixed)).to eql [
64
WPScan::Model::WpVersion.new(
65
'4.0',
66
confidence: 80,
67
found_by: 'Atom Generator (Aggressive Detection)',
68
interesting_entries: [
69
"#{target.url('feed/atom/')}, Match: '<generator uri=\"https://wordpress.org/\" version=\"4.0\">" \
70
"WordPress</generator>'"
71
]
72
)
73
]
74
end
75
end
76
77
context 'when no mode' do
78
it 'checks all the URLs' do
79
stub_request(:get, target.url('feed/atom/')).to_return(body: atom_fixture)
80
stub_request(:get, target.url('?feed=atom'))
81
82
expect(finder.aggressive).to eql [
83
WPScan::Model::WpVersion.new(
84
'4.0',
85
confidence: 80,
86
found_by: 'Atom Generator (Aggressive Detection)',
87
interesting_entries: [
88
"#{target.url('feed/atom/')}, Match: '<generator uri=\"https://wordpress.org/\" version=\"4.0\">" \
89
"WordPress</generator>'"
90
]
91
)
92
]
93
end
94
end
95
end
96
end
97
end
98
99