Codebase list ruby-cms-scanner / 86b74b4
New upstream version 0.5.7 Sophie Brun 4 years ago
12 changed file(s) with 41 addition(s) and 15 deletion(s). Raw diff Collapse all Expand all
88 def aggressive(_opts = {})
99 path = 'searchreplacedb2.php'
1010
11 return unless target.head_and_get(path).body =~ /by interconnect/i
11 return unless /by interconnect/i.match?(target.head_and_get(path).body)
1212
1313 NS::Model::InterestingFinding.new(target.url(path),
1414 confidence: 100,
4949
5050 res = NS::Browser.post(potential_url, body: Digest::MD5.hexdigest(rand(999_999).to_s[0..5]))
5151
52 next unless res&.body =~ /<methodResponse>/i
52 next unless /<methodResponse>/i.match?(res&.body)
5353
5454 return NS::Model::XMLRPC.new(potential_url,
5555 confidence: 100,
88 results = []
99
1010 entries.each do |entry|
11 next unless entry =~ /(?:admin|\.log|\.sql|\.db)/i
11 next unless /(?:admin|\.log|\.sql|\.db)/i.match?(entry)
1212
1313 results << entry
1414 end
1919 s.require_paths = ['lib']
2020
2121 s.add_dependency 'nokogiri', '~> 1.10.0'
22 s.add_dependency 'opt_parse_validator', '~> 1.7.3'
22 s.add_dependency 'opt_parse_validator', '~> 1.7.4'
2323 s.add_dependency 'public_suffix', '>= 3.0', '< 4.1'
2424 s.add_dependency 'ruby-progressbar', '~> 1.10.0'
2525 s.add_dependency 'typhoeus', '~> 1.3.0'
3131 s.add_development_dependency 'rake', '~> 12.3'
3232 s.add_development_dependency 'rspec', '~> 3.8.0'
3333 s.add_development_dependency 'rspec-its', '~> 1.3.0'
34 s.add_development_dependency 'rubocop', '~> 0.72.0'
34 s.add_development_dependency 'rubocop', '~> 0.74.0'
3535 s.add_development_dependency 'rubocop-performance', '~> 1.4.0'
3636 s.add_development_dependency 'simplecov', '~> 0.16.1'
3737 s.add_development_dependency 'webmock', '~> 3.6.0'
1616 random_user_agent
1717 request_timeout
1818 throttle
19 url
1920 user_agent
2021 user_agents_list
2122 vhost
4747 # @return [ Hash ]
4848 def default_request_params
4949 params = {
50 headers: { 'User-Agent' => user_agent }.merge(headers || {}),
50 headers: { 'User-Agent' => user_agent, 'Referer' => url }.merge(headers || {}),
5151 accept_encoding: 'gzip, deflate',
5252 method: :get
5353 }
1515 # @param [ Typhoeus::Request ] request
1616 # @param [ Typhoeus::Response ] response
1717 def set(request, response)
18 return if response.timed_out? || response.code&.zero?
19
1820 write_entry(request.hash.to_s, response, request.cache_ttl)
1921 end
2022 end
116116 tpl = "#{controller_name}/#{tpl}"
117117 end
118118
119 raise "Wrong tpl format: '#{tpl}'" unless tpl =~ %r{\A[\w/_]+\z}
119 raise "Wrong tpl format: '#{tpl}'" unless %r{\A[\w/_]+\z}.match?(tpl)
120120
121121 views_directories.reverse_each do |dir|
122122 formats.each do |format|
5858 NS::Browser.get(url(path), params).html.css(selector).each do |node|
5959 entry = node.text.to_s
6060
61 next if entry =~ ignore
61 next if entry&.match?(ignore)
6262
6363 found << entry
6464 end
11
22 # Version
33 module CMSScanner
4 VERSION = '0.5.4'
4 VERSION = '0.5.7'
55 end
77 let(:options) { {} }
88 let(:default) do
99 {
10 headers: { 'User-Agent' => "CMSScanner v#{CMSScanner::VERSION}" },
10 headers: { 'User-Agent' => "CMSScanner v#{CMSScanner::VERSION}", 'Referer' => nil },
1111 accept_encoding: 'gzip, deflate',
1212 method: :get
1313 }
2525 context 'when some attributes are set' do
2626 let(:options) do
2727 {
28 url: 'http://wp.lo/',
2829 cache_ttl: 200, connect_timeout: 10,
2930 http_auth: { username: 'log', password: 'pwd' },
3031 cookie_jar: '/tmp/cookie_jar.txt',
4142 userpwd: 'log:pwd', proxyuserpwd: 'u:pwd',
4243 cookiejar: options[:cookie_jar], cookiefile: options[:cookie_jar],
4344 ssl_verifypeer: false, ssl_verifyhost: 0
44 ).merge(headers: default[:headers].merge('Host' => 'testing', 'Test' => 'aa'))
45 ).merge(headers: default[:headers].merge('Host' => 'testing', 'Test' => 'aa', 'Referer' => 'http://wp.lo/'))
4546 end
4647
4748 its(:default_request_params) { should eq expected }
1616 end
1717
1818 describe '#set' do
19 let(:response) { Typhoeus::Response.new }
19 context 'when response did not time out' do
20 let(:response) { Typhoeus::Response.new(return_code: :ok, code: 200) }
2021
21 it 'calls #write_entry' do
22 expect(cache).to receive(:write_entry).with(key, response, request.cache_ttl)
22 it 'calls #write_entry' do
23 expect(cache).to receive(:write_entry).with(key, response, request.cache_ttl)
2324
24 cache.set(request, response)
25 cache.set(request, response)
26 end
27 end
28
29 context 'when response timed out' do
30 let(:response) { Typhoeus::Response.new(return_code: :operation_timedout) }
31
32 it 'does not write the entry' do
33 expect(cache).to_not receive(:write_entry)
34
35 cache.set(request, response)
36 end
37 end
38
39 context 'when response code is 0' do
40 let(:response) { Typhoeus::Response.new(code: 0) }
41
42 it 'does not write the entry' do
43 expect(cache).to_not receive(:write_entry)
44
45 cache.set(request, response)
46 end
2547 end
2648 end
2749 end