yawast 0.5.0.beta1 → 0.5.0.beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/scanner/ssl.rb CHANGED
@@ -19,75 +19,11 @@ module Yawast
19
19
  cert = ssl.peer_cert
20
20
 
21
21
  unless cert.nil?
22
- Yawast::Utilities.puts_info 'Found X509 Certificate:'
23
- Yawast::Utilities.puts_info "\t\tIssued To: #{cert.subject.common_name} / #{cert.subject.organization}"
24
- Yawast::Utilities.puts_info "\t\tIssuer: #{cert.issuer.common_name} / #{cert.issuer.organization}"
25
- Yawast::Utilities.puts_info "\t\tVersion: #{cert.version}"
26
- Yawast::Utilities.puts_info "\t\tSerial: #{cert.serial}"
27
- Yawast::Utilities.puts_info "\t\tSubject: #{cert.subject}"
28
-
29
- #check to see if cert is expired
30
- if cert.not_after > Time.now
31
- Yawast::Utilities.puts_info "\t\tExpires: #{cert.not_after}"
32
- else
33
- Yawast::Utilities.puts_vuln "\t\tExpires: #{cert.not_after} (Expired)"
34
- end
35
-
36
- #check for SHA1 & MD5 certs
37
- if cert.signature_algorithm.include?('md5') || cert.signature_algorithm.include?('sha1')
38
- Yawast::Utilities.puts_vuln "\t\tSignature Algorithm: #{cert.signature_algorithm}"
39
- else
40
- Yawast::Utilities.puts_info "\t\tSignature Algorithm: #{cert.signature_algorithm}"
41
- end
42
-
43
- Yawast::Utilities.puts_info "\t\tKey: #{cert.public_key.class.to_s.gsub('OpenSSL::PKey::', '')}-#{get_x509_pub_key_strength(cert)}"
44
- Yawast::Utilities.puts_info "\t\t\tKey Hash: #{Digest::SHA1.hexdigest(cert.public_key.to_s)}"
45
- Yawast::Utilities.puts_info "\t\tExtensions:"
46
- cert.extensions.each { |ext| Yawast::Utilities.puts_info "\t\t\t#{ext}" unless ext.oid == 'subjectAltName' }
47
-
48
- #alt names
49
- alt_names = cert.extensions.find {|e| e.oid == 'subjectAltName'}
50
- unless alt_names.nil?
51
- Yawast::Utilities.puts_info "\t\tAlternate Names:"
52
- alt_names.value.split(',').each { |name| Yawast::Utilities.puts_info "\t\t\t#{name.strip.delete('DNS:')}" }
53
- end
54
-
55
- hash = Digest::SHA1.hexdigest(cert.to_der)
56
- Yawast::Utilities.puts_info "\t\tHash: #{hash}"
57
- puts "\t\t\thttps://censys.io/certificates?q=#{hash}"
58
- puts "\t\t\thttps://crt.sh/?q=#{hash}"
59
- puts ''
22
+ get_cert_info cert
60
23
  end
61
24
 
62
25
  cert_chain = ssl.peer_cert_chain
63
-
64
- if cert_chain.count == 1
65
- #HACK: This is an ugly way to guess if it's a missing intermediate, or self-signed
66
- #tIt looks like a change to Ruby's OpenSSL wrapper is needed to actually fix this right.
67
-
68
- if cert.issuer == cert.subject
69
- Yawast::Utilities.puts_vuln "\t\tCertificate Is Self-Singed"
70
- else
71
- Yawast::Utilities.puts_warn "\t\tCertificate Chain Is Incomplete"
72
- end
73
-
74
- puts ''
75
- end
76
-
77
- unless cert_chain.nil?
78
- Yawast::Utilities.puts_info 'Certificate: Chain'
79
- cert_chain.each do |c|
80
- Yawast::Utilities.puts_info "\t\tIssued To: #{c.subject.common_name} / #{c.subject.organization}"
81
- Yawast::Utilities.puts_info "\t\t\tIssuer: #{c.issuer.common_name} / #{c.issuer.organization}"
82
- Yawast::Utilities.puts_info "\t\t\tExpires: #{c.not_after}"
83
- Yawast::Utilities.puts_info "\t\t\tKey: #{c.public_key.class.to_s.gsub('OpenSSL::PKey::', '')}-#{get_x509_pub_key_strength(c)}"
84
- Yawast::Utilities.puts_info "\t\t\tSignature Algorithm: #{c.signature_algorithm}"
85
- Yawast::Utilities.puts_info "\t\t\tHash: #{Digest::SHA1.hexdigest(c.to_der)}"
86
- puts ''
87
- end
88
-
89
- puts ''
90
- end
26
+ get_cert_chain_info cert_chain, cert
91
27
 
92
28
  puts "\t\tQualys SSL Labs: https://www.ssllabs.com/ssltest/analyze.html?d=#{uri.host}&hideResults=on"
93
29
  puts ''
@@ -104,6 +40,84 @@ module Yawast
104
40
  end
105
41
  end
106
42
 
43
+ def self.get_cert_info(cert)
44
+ Yawast::Utilities.puts_info 'Found X509 Certificate:'
45
+ Yawast::Utilities.puts_info "\t\tIssued To: #{cert.subject.common_name} / #{cert.subject.organization}"
46
+ Yawast::Utilities.puts_info "\t\tIssuer: #{cert.issuer.common_name} / #{cert.issuer.organization}"
47
+ Yawast::Utilities.puts_info "\t\tVersion: #{cert.version}"
48
+ Yawast::Utilities.puts_info "\t\tSerial: #{cert.serial}"
49
+ Yawast::Utilities.puts_info "\t\tSubject: #{cert.subject}"
50
+
51
+ #check to see if cert is expired
52
+ if cert.not_after > Time.now
53
+ Yawast::Utilities.puts_info "\t\tExpires: #{cert.not_after}"
54
+ else
55
+ Yawast::Utilities.puts_vuln "\t\tExpires: #{cert.not_after} (Expired)"
56
+ end
57
+
58
+ #check for SHA1 & MD5 certs
59
+ if cert.signature_algorithm.include?('md5') || cert.signature_algorithm.include?('sha1')
60
+ Yawast::Utilities.puts_vuln "\t\tSignature Algorithm: #{cert.signature_algorithm}"
61
+ else
62
+ Yawast::Utilities.puts_info "\t\tSignature Algorithm: #{cert.signature_algorithm}"
63
+ end
64
+
65
+ Yawast::Utilities.puts_info "\t\tKey: #{cert.public_key.class.to_s.gsub('OpenSSL::PKey::', '')}-#{get_x509_pub_key_strength(cert)}"
66
+ Yawast::Utilities.puts_info "\t\t\tKey Hash: #{Digest::SHA1.hexdigest(cert.public_key.to_s)}"
67
+ Yawast::Utilities.puts_info "\t\tExtensions:"
68
+ cert.extensions.each { |ext| Yawast::Utilities.puts_info "\t\t\t#{ext}" unless ext.oid == 'subjectAltName' || ext.oid == 'ct_precert_scts' }
69
+
70
+ #ct_precert_scts
71
+ scts = cert.extensions.find {|e| e.oid == 'ct_precert_scts'}
72
+ unless scts.nil?
73
+ Yawast::Utilities.puts_info "\t\tSCTs:"
74
+ scts.value.split("\n").each { |line| puts "\t\t\t#{line}" }
75
+ end
76
+
77
+ #alt names
78
+ alt_names = cert.extensions.find {|e| e.oid == 'subjectAltName'}
79
+ unless alt_names.nil?
80
+ Yawast::Utilities.puts_info "\t\tAlternate Names:"
81
+ alt_names.value.split(',').each { |name| Yawast::Utilities.puts_info "\t\t\t#{name.strip.delete('DNS:')}" }
82
+ end
83
+
84
+ hash = Digest::SHA1.hexdigest(cert.to_der)
85
+ Yawast::Utilities.puts_info "\t\tHash: #{hash}"
86
+ puts "\t\t\thttps://censys.io/certificates?q=#{hash}"
87
+ puts "\t\t\thttps://crt.sh/?q=#{hash}"
88
+ puts ''
89
+ end
90
+
91
+ def self.get_cert_chain_info(cert_chain, cert)
92
+ if cert_chain.count == 1
93
+ #HACK: This is an ugly way to guess if it's a missing intermediate, or self-signed
94
+ #tIt looks like a change to Ruby's OpenSSL wrapper is needed to actually fix this right.
95
+
96
+ if cert.issuer == cert.subject
97
+ Yawast::Utilities.puts_vuln "\t\tCertificate Is Self-Singed"
98
+ else
99
+ Yawast::Utilities.puts_warn "\t\tCertificate Chain Is Incomplete"
100
+ end
101
+
102
+ puts ''
103
+ end
104
+
105
+ unless cert_chain.nil?
106
+ Yawast::Utilities.puts_info 'Certificate: Chain'
107
+ cert_chain.each do |c|
108
+ Yawast::Utilities.puts_info "\t\tIssued To: #{c.subject.common_name} / #{c.subject.organization}"
109
+ Yawast::Utilities.puts_info "\t\t\tIssuer: #{c.issuer.common_name} / #{c.issuer.organization}"
110
+ Yawast::Utilities.puts_info "\t\t\tExpires: #{c.not_after}"
111
+ Yawast::Utilities.puts_info "\t\t\tKey: #{c.public_key.class.to_s.gsub('OpenSSL::PKey::', '')}-#{get_x509_pub_key_strength(c)}"
112
+ Yawast::Utilities.puts_info "\t\t\tSignature Algorithm: #{c.signature_algorithm}"
113
+ Yawast::Utilities.puts_info "\t\t\tHash: #{Digest::SHA1.hexdigest(c.to_der)}"
114
+ puts ''
115
+ end
116
+
117
+ puts ''
118
+ end
119
+ end
120
+
107
121
  def self.get_ciphers(uri)
108
122
  puts 'Supported Ciphers (based on your OpenSSL version):'
109
123
 
@@ -124,14 +138,18 @@ module Yawast
124
138
  #try to get the list of ciphers supported for each version
125
139
  ciphers = nil
126
140
 
141
+ get_ciphers_failed = false
127
142
  begin
128
143
  ciphers = OpenSSL::SSL::SSLContext.new(version).ciphers
129
144
  rescue => e
130
- Yawast::Utilities.puts_error "\tError getting cipher suites for #{version.to_s}, skipping. (#{e.message})"
145
+ Yawast::Utilities.puts_error "\tError getting cipher suites for #{version}, skipping. (#{e.message})"
146
+ get_ciphers_failed = true
131
147
  end
132
148
 
133
149
  if ciphers != nil
134
150
  check_version_suites uri, ip, ciphers, version
151
+ elsif get_ciphers_failed == false
152
+ Yawast::Utilities.puts_info "\t#{version}: No cipher suites available."
135
153
  end
136
154
  end
137
155
  end
@@ -140,7 +158,7 @@ module Yawast
140
158
  end
141
159
 
142
160
  def self.check_version_suites(uri, ip, ciphers, version)
143
- puts "\tChecking for #{version.to_s} suites (#{ciphers.count} possible suites)"
161
+ puts "\tChecking for #{version} suites (#{ciphers.count} possible suites)"
144
162
 
145
163
  ciphers.each do |cipher|
146
164
  #try to connect and see what happens
@@ -153,23 +171,15 @@ module Yawast
153
171
 
154
172
  ssl.connect
155
173
 
156
- if cipher[2] < 112 || cipher[0].include?('RC4')
157
- #less than 112 bits or RC4, flag as a vuln
158
- Yawast::Utilities.puts_vuln "\t\tVersion: #{ssl.ssl_version.ljust(7)}\tBits: #{cipher[2]}\tCipher: #{cipher[0]}"
159
- elsif cipher[2] >= 128
160
- #secure, probably safe
161
- Yawast::Utilities.puts_info "\t\tVersion: #{ssl.ssl_version.ljust(7)}\tBits: #{cipher[2]}\tCipher: #{cipher[0]}"
162
- else
163
- #weak, but not "omg!" weak.
164
- Yawast::Utilities.puts_warn "\t\tVersion: #{ssl.ssl_version.ljust(7)}\tBits: #{cipher[2]}\tCipher: #{cipher[0]}"
165
- end
174
+ check_cipher_strength cipher, ssl
166
175
 
167
176
  ssl.sysclose
168
177
  rescue OpenSSL::SSL::SSLError => e
169
178
  unless e.message.include?('alert handshake failure') ||
170
179
  e.message.include?('no ciphers available') ||
171
180
  e.message.include?('wrong version number') ||
172
- e.message.include?('alert protocol version')
181
+ e.message.include?('alert protocol version') ||
182
+ e.message.include?('Connection reset by peer')
173
183
  Yawast::Utilities.puts_error "\t\tVersion: #{ssl.ssl_version.ljust(7)}\tBits: #{cipher[2]}\tCipher: #{cipher[0]}\t(Supported But Failed)"
174
184
  end
175
185
  rescue => e
@@ -180,6 +190,19 @@ module Yawast
180
190
  end
181
191
  end
182
192
 
193
+ def self.check_cipher_strength(cipher, ssl)
194
+ if cipher[2] < 112 || cipher[0].include?('RC4')
195
+ #less than 112 bits or RC4, flag as a vuln
196
+ Yawast::Utilities.puts_vuln "\t\tVersion: #{ssl.ssl_version.ljust(7)}\tBits: #{cipher[2]}\tCipher: #{cipher[0]}"
197
+ elsif cipher[2] >= 128
198
+ #secure, probably safe
199
+ Yawast::Utilities.puts_info "\t\tVersion: #{ssl.ssl_version.ljust(7)}\tBits: #{cipher[2]}\tCipher: #{cipher[0]}"
200
+ else
201
+ #weak, but not "omg!" weak.
202
+ Yawast::Utilities.puts_warn "\t\tVersion: #{ssl.ssl_version.ljust(7)}\tBits: #{cipher[2]}\tCipher: #{cipher[0]}"
203
+ end
204
+ end
205
+
183
206
  def self.check_hsts(head)
184
207
  found = ''
185
208
 
@@ -194,57 +217,69 @@ module Yawast
194
217
  else
195
218
  Yawast::Utilities.puts_info "HSTS: Enabled (#{found})"
196
219
  end
197
-
198
- puts ''
199
220
  end
200
221
 
201
- def self.get_tdes_session_msg_count(uri)
202
- # this method will send a number of HEAD requests to see
203
- # if the connection is eventually killed.
204
- puts 'TLS Session Request Limit: Checking number of requests accepted using 3DES suites...'
222
+ def self.check_hsts_preload(uri)
223
+ begin
224
+ info = JSON.parse(Net::HTTP.get(URI("https://hstspreload.com/api/v1/status/#{uri.host}")))
205
225
 
206
- count = 0
207
- begin
208
- req = Yawast::Shared::Http.get_http(uri)
209
- req.use_ssl = uri.scheme == 'https'
210
- req.keep_alive_timeout = 600
211
- headers = Yawast::Shared::Http.get_headers
226
+ chrome = info['chrome'] != nil
227
+ firefox = info['firefox'] != nil
228
+ tor = info['tor'] != nil
212
229
 
213
- #force 3DES - this is to ensure that 3DES specific limits are caught
214
- req.ciphers = ['3DES']
230
+ Yawast::Utilities.puts_info "HSTS Preload: Chrome - #{chrome}; Firefox - #{firefox}; Tor - #{tor}"
231
+ rescue => e
232
+ Yawast::Utilities.puts_error "Error getting HSTS preload information: #{e.message}"
233
+ end
234
+ end
215
235
 
216
- req.start do |http|
217
- 10000.times do |i|
218
- http.head(uri.path, headers)
236
+ def self.get_tdes_session_msg_count(uri)
237
+ # this method will send a number of HEAD requests to see
238
+ # if the connection is eventually killed.
239
+ puts 'TLS Session Request Limit: Checking number of requests accepted using 3DES suites...'
219
240
 
220
- # hack to detect transparent disconnects
221
- if http.instance_variable_get(:@ssl_context).session_cache_stats[:cache_hits] != 0
222
- raise 'TLS Reconnected'
223
- end
241
+ count = 0
242
+ begin
243
+ req = Yawast::Shared::Http.get_http(uri)
244
+ req.use_ssl = uri.scheme == 'https'
245
+ req.keep_alive_timeout = 600
246
+ headers = Yawast::Shared::Http.get_headers
247
+
248
+ #force 3DES - this is to ensure that 3DES specific limits are caught
249
+ req.ciphers = ['3DES']
224
250
 
225
- count += 1
251
+ req.start do |http|
252
+ 10000.times do |i|
253
+ http.head(uri.path, headers)
226
254
 
227
- if i % 20 == 0
228
- print '.'
229
- end
255
+ # hack to detect transparent disconnects
256
+ if http.instance_variable_get(:@ssl_context).session_cache_stats[:cache_hits] != 0
257
+ raise 'TLS Reconnected'
230
258
  end
231
- end
232
- rescue => e
233
- puts
234
259
 
235
- if e.message.include? 'alert handshake failure'
236
- Yawast::Utilities.puts_info 'TLS Session Request Limit: Server does not support 3DES cipher suites'
237
- else
238
- Yawast::Utilities.puts_info "TLS Session Request Limit: Connection terminated after #{count} requests (#{e.message})"
260
+ count += 1
261
+
262
+ if i % 20 == 0
263
+ print '.'
264
+ end
239
265
  end
266
+ end
267
+ rescue => e
268
+ puts
240
269
 
241
- return
270
+ if e.message.include? 'alert handshake failure'
271
+ Yawast::Utilities.puts_info 'TLS Session Request Limit: Server does not support 3DES cipher suites'
272
+ else
273
+ Yawast::Utilities.puts_info "TLS Session Request Limit: Connection terminated after #{count} requests (#{e.message})"
242
274
  end
243
275
 
244
- puts
245
- Yawast::Utilities.puts_vuln 'TLS Session Request Limit: Connection not terminated after 10,000 requests; possibly vulnerable to SWEET32'
276
+ return
246
277
  end
247
278
 
279
+ puts
280
+ Yawast::Utilities.puts_vuln 'TLS Session Request Limit: Connection not terminated after 10,000 requests; possibly vulnerable to SWEET32'
281
+ end
282
+
248
283
  #private methods
249
284
  class << self
250
285
  private
data/lib/shared/http.rb CHANGED
@@ -21,13 +21,13 @@ module Yawast
21
21
  req.head(uri.path, get_headers)
22
22
  end
23
23
 
24
- def self.get(uri)
24
+ def self.get(uri, headers = nil)
25
25
  body = ''
26
26
 
27
27
  begin
28
28
  req = get_http(uri)
29
29
  req.use_ssl = uri.scheme == 'https'
30
- res = req.request_get(uri.path, get_headers)
30
+ res = req.request_get(uri.path, get_headers(headers))
31
31
  body = res.read_body
32
32
  rescue
33
33
  #do nothing for now
@@ -54,13 +54,17 @@ module Yawast
54
54
  end
55
55
 
56
56
  # noinspection RubyStringKeysInHashInspection
57
- def self.get_headers
57
+ def self.get_headers(extra_headers = nil)
58
58
  if @cookie == nil
59
59
  headers = { 'User-Agent' => HTTP_UA }
60
60
  else
61
61
  headers = { 'User-Agent' => HTTP_UA, 'Cookie' => @cookie }
62
62
  end
63
63
 
64
+ if extra_headers != nil
65
+ headers.merge! extra_headers
66
+ end
67
+
64
68
  headers
65
69
  end
66
70
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yawast
2
- VERSION = '0.5.0.beta1'
2
+ VERSION = '0.5.0.beta2'
3
3
  end
data/lib/yawast.rb CHANGED
@@ -24,7 +24,7 @@ require_all '/shared'
24
24
 
25
25
  module Yawast
26
26
  DESCRIPTION = 'The YAWAST Antecedent Web Application Security Toolkit'
27
- HTTP_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Yawast/#{VERSION} Chrome/52.0.2743.24 Safari/537.36"
27
+ HTTP_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Yawast/#{VERSION} Chrome/56.0.2924.28 Safari/537.36"
28
28
 
29
29
  def self.header
30
30
  puts '__ _____ _ _ ___ _____ _____ '
@@ -35,7 +35,7 @@ module Yawast
35
35
  puts ' \_/\_| |_/\/ \/\_| |_/\____/ \_/ '
36
36
  puts ''
37
37
  puts "YAWAST v#{VERSION} - #{DESCRIPTION}"
38
- puts ' Copyright (c) 2013-2016 Adam Caudill <adam@adamcaudill.com>'
38
+ puts ' Copyright (c) 2013-2017 Adam Caudill <adam@adamcaudill.com>'
39
39
  puts ' Support & Documentation: https://github.com/adamcaudill/yawast'
40
40
  puts " Ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}; #{OpenSSL::OPENSSL_VERSION} (#{RUBY_PLATFORM})"
41
41
  puts ''
@@ -0,0 +1,31 @@
1
+ require File.dirname(__FILE__) + '/../lib/yawast'
2
+ require File.dirname(__FILE__) + '/base'
3
+
4
+ class TestInternalSSL < Minitest::Test
5
+ include TestBase
6
+
7
+ def test_internalssl_ss_cert
8
+ override_stdout
9
+
10
+ uri = URI.parse 'https://self-signed.badssl.com/'
11
+ Yawast::Scanner::Ssl.info uri, false, false
12
+
13
+ assert stdout_value.include?('Certificate Is Self-Singed'), 'self-signed certificate warning not found'
14
+
15
+ restore_stdout
16
+ end
17
+
18
+ def test_internalssl_known_suite
19
+ override_stdout
20
+
21
+ uri = URI.parse 'https://self-signed.badssl.com/'
22
+ Yawast::Scanner::Ssl.info uri, true, false
23
+
24
+ #HACK: This is an awful test, as it depends on the configuration of the server above, so could
25
+ # easily break if they make any changes, and only tests for a single value, but it's better than nothing.
26
+ # The other awful thing is that this is slow, and may take 60 seconds or more to complete.
27
+ assert stdout_value.include?('Cipher: AES256-SHA'), 'known cipher suite not found in output'
28
+
29
+ restore_stdout
30
+ end
31
+ end
@@ -29,7 +29,7 @@ class TestScannerApacheServerStatus < Minitest::Test
29
29
  uri = Yawast::Commands::Utils.extract_uri(["http://localhost:#{port}"])
30
30
 
31
31
  Yawast::Shared::Http.setup nil, nil
32
- Yawast::Scanner::Plugins::Http::FilePresence.check_all uri
32
+ Yawast::Scanner::Plugins::Http::FilePresence.check_all uri, false
33
33
 
34
34
  assert stdout_value.include?('\'/readme.html\' found:'), 'readme.html page warning not found'
35
35
 
@@ -15,7 +15,7 @@ class TestScannerApacheServerInfo < Minitest::Test
15
15
  Yawast::Shared::Http.setup nil, nil
16
16
  Yawast::Scanner::Apache.check_server_info uri
17
17
 
18
- assert stdout_value.include?('Apache Server Info page found'), 'Apache Server Info page warning not found'
18
+ assert stdout_value.include?('Apache Server Information page found'), 'Apache Server Info page warning not found'
19
19
 
20
20
  server.exit
21
21
  restore_stdout
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yawast
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.beta1
4
+ version: 0.5.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Caudill
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-18 00:00:00.000000000 Z
11
+ date: 2017-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ssllabs
@@ -123,6 +123,7 @@ files:
123
123
  - ".travis.yml"
124
124
  - CHANGELOG.md
125
125
  - Gemfile
126
+ - LICENSE
126
127
  - README.md
127
128
  - Rakefile
128
129
  - bin/yawast
@@ -132,7 +133,8 @@ files:
132
133
  - lib/commands/scan.rb
133
134
  - lib/commands/ssl.rb
134
135
  - lib/commands/utils.rb
135
- - lib/resources/common.txt
136
+ - lib/resources/common_dir.txt
137
+ - lib/resources/common_file.txt
136
138
  - lib/scanner/apache.rb
137
139
  - lib/scanner/cert.rb
138
140
  - lib/scanner/cms.rb
@@ -163,6 +165,7 @@ files:
163
165
  - test/test_cmd_util.rb
164
166
  - test/test_directory_search.rb
165
167
  - test/test_helper.rb
168
+ - test/test_internalssl.rb
166
169
  - test/test_object_presence.rb
167
170
  - test/test_scan_apache_banner.rb
168
171
  - test/test_scan_apache_server_info.rb
@@ -195,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
198
  version: 1.3.1
196
199
  requirements: []
197
200
  rubyforge_project: yawast
198
- rubygems_version: 2.6.6
201
+ rubygems_version: 2.4.8
199
202
  signing_key:
200
203
  specification_version: 4
201
204
  summary: The YAWAST Antecedent Web Application Security Toolkit
@@ -211,6 +214,7 @@ test_files:
211
214
  - test/test_cmd_util.rb
212
215
  - test/test_directory_search.rb
213
216
  - test/test_helper.rb
217
+ - test/test_internalssl.rb
214
218
  - test/test_object_presence.rb
215
219
  - test/test_scan_apache_banner.rb
216
220
  - test/test_scan_apache_server_info.rb