yawast 0.4.0.beta4 → 0.4.0.beta5

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/.travis.yml CHANGED
@@ -6,3 +6,7 @@ notifications:
6
6
  email:
7
7
  on_success: never
8
8
  on_failure: never
9
+
10
+ addons:
11
+ code_climate:
12
+ repo_token: 6fd9c710b9a6e0da2011c62b81075b9bd620200a2a400f4dbeab9c88829f4cb6
data/CHANGELOG.md CHANGED
@@ -4,6 +4,8 @@
4
4
  * [#67](https://github.com/adamcaudill/yawast/issues/67) - Make "Found Redirect" optional
5
5
  * [#69](https://github.com/adamcaudill/yawast/issues/69) - False positives on non-standard 404 handling
6
6
  * [#73](https://github.com/adamcaudill/yawast/issues/73) - Use `--internalssl` when host is an IP address
7
+ * [#64](https://github.com/adamcaudill/yawast/issues/64) - Add check for secure cookie on HTTP host
8
+ * [#45](https://github.com/adamcaudill/yawast/issues/45) - Access Control Headers Check
7
9
  * [#65](https://github.com/adamcaudill/yawast/issues/65) - Bug: Output redirection doesn't work correctly
8
10
  * [#70](https://github.com/adamcaudill/yawast/issues/70) - Bug: Handle scans of IP addresses
9
11
  * [#72](https://github.com/adamcaudill/yawast/issues/72) - Bug: internalssl & Scanning IPs Fails
data/Gemfile CHANGED
@@ -7,6 +7,6 @@ group :test do
7
7
  gem 'minitest'
8
8
  gem 'minitest-reporters'
9
9
  gem 'simplecov'
10
- gem 'coveralls', require: false
11
10
  gem 'webrick'
11
+ gem 'codeclimate-test-reporter', require: nil
12
12
  end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ## YAWAST [![Build Status](https://travis-ci.org/adamcaudill/yawast.png?branch=master)](https://travis-ci.org/adamcaudill/yawast) [![Code Climate](https://codeclimate.com/github/adamcaudill/yawast.png)](https://codeclimate.com/github/adamcaudill/yawast) [![Coverage Status](https://coveralls.io/repos/github/adamcaudill/yawast/badge.svg?branch=master)](https://coveralls.io/github/adamcaudill/yawast?branch=master) [![Gem Version](https://badge.fury.io/rb/yawast.svg)](https://badge.fury.io/rb/yawast)
1
+ ## YAWAST [![Build Status](https://travis-ci.org/adamcaudill/yawast.svg?branch=master)](https://travis-ci.org/adamcaudill/yawast) [![Code Climate](https://codeclimate.com/github/adamcaudill/yawast/badges/gpa.svg)](https://codeclimate.com/github/adamcaudill/yawast) [![Test Coverage](https://codeclimate.com/github/adamcaudill/yawast/badges/coverage.svg)](https://codeclimate.com/github/adamcaudill/yawast/coverage) [![Gem Version](https://badge.fury.io/rb/yawast.svg)](https://badge.fury.io/rb/yawast)
2
2
 
3
3
  **The YAWAST Antecedent Web Application Security Toolkit**
4
4
 
data/Rakefile CHANGED
@@ -1,9 +1,30 @@
1
1
  require 'rake/testtask'
2
2
 
3
- task :default => [:test]
3
+ task :default => [:codeclimate]
4
4
 
5
5
  task :test do
6
- Rake::TestTask.new do |t|
7
- t.pattern = 'test/test_*.rb'
8
- end
6
+ #set this, so that we can modify behavior based on where's it's ran from
7
+ ENV['FROM_RAKE'] = 'true'
8
+
9
+ require File.join(File.dirname(__FILE__), 'test/test_helper')
10
+ Dir.glob('./test/test_*.rb').each { |file| require file}
11
+
12
+ require 'minitest'
13
+ Minitest.run
14
+ end
15
+
16
+ task :codeclimate do
17
+ Rake::Task['test'].execute
18
+
19
+ require 'simplecov'
20
+ require 'codeclimate-test-reporter'
21
+
22
+ ENV['CODECLIMATE_REPO_TOKEN'] ='6fd9c710b9a6e0da2011c62b81075b9bd620200a2a400f4dbeab9c88829f4cb6'
23
+
24
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
25
+ SimpleCov::Formatter::HTMLFormatter,
26
+ CodeClimate::TestReporter::Formatter
27
+ ])
28
+
29
+ CodeClimate::TestReporter::Formatter.new.format(SimpleCov.result)
9
30
  end
data/bin/yawast CHANGED
@@ -75,7 +75,7 @@ command :cert do |c|
75
75
 
76
76
  c.option '--input STRING', String, 'List of domains to check'
77
77
 
78
- c.action do |args, options|
78
+ c.action do |_, options|
79
79
  Yawast::Commands::Cert.process(options)
80
80
  end
81
81
  end
@@ -9,7 +9,7 @@ module Yawast
9
9
  modules = banner.split(' ')
10
10
  server = modules[0]
11
11
 
12
- #hack - fix '(distro)' issue, such as with 'Apache/2.2.22 (Ubuntu)'
12
+ #fix '(distro)' issue, such as with 'Apache/2.2.22 (Ubuntu)'
13
13
  # if we don't do this, it triggers a false positive on the module check
14
14
  if /\(\w*\)/.match modules[1]
15
15
  server += " #{modules[1]}"
@@ -35,7 +35,7 @@ module Yawast
35
35
  end
36
36
  end
37
37
 
38
- def self.check_all(uri, head)
38
+ def self.check_all(uri)
39
39
  #this check for @apache may yield false negatives.. meh.
40
40
  if @apache
41
41
  #run all the defined checks
data/lib/scanner/core.rb CHANGED
@@ -37,7 +37,7 @@ module Yawast
37
37
 
38
38
  #cache the HEAD result, so that we can minimize hits
39
39
  head = Yawast::Shared::Http.head(@uri)
40
- Yawast::Scanner::Generic.head_info(head)
40
+ Yawast::Scanner::Generic.head_info(head, @uri)
41
41
 
42
42
  #perfom SSL checks
43
43
  check_ssl(@uri, options, head)
@@ -45,7 +45,7 @@ module Yawast
45
45
  #process the 'scan' stuff that goes beyond 'head'
46
46
  unless options.head
47
47
  #server specific checks
48
- Yawast::Scanner::Apache.check_all(@uri, head)
48
+ Yawast::Scanner::Apache.check_all(@uri)
49
49
  Yawast::Scanner::Iis.check_all(@uri, head)
50
50
 
51
51
  Yawast::Scanner::Plugins::Http::FilePresence.check_all @uri
@@ -79,7 +79,7 @@ module Yawast
79
79
  end
80
80
  end
81
81
 
82
- def self.head_info(head)
82
+ def self.head_info(head, uri)
83
83
  begin
84
84
  server = ''
85
85
  powered_by = ''
@@ -93,6 +93,7 @@ module Yawast
93
93
  xss_protection = ''
94
94
  via = ''
95
95
  hpkp = ''
96
+ acao = ''
96
97
 
97
98
  Yawast::Utilities.puts_info 'HEAD:'
98
99
  head.each do |k, v|
@@ -109,6 +110,7 @@ module Yawast
109
110
  xss_protection = v if k.downcase == 'x-xss-protection'
110
111
  via = v if k.downcase == 'via'
111
112
  hpkp = v if k.downcase == 'public-key-pins'
113
+ acao = v if k.downcase == 'access-control-allow-origin'
112
114
 
113
115
  if k.downcase == 'set-cookie'
114
116
  #this chunk of magic manages to properly split cookies, when multiple are sent together
@@ -181,6 +183,10 @@ module Yawast
181
183
  Yawast::Utilities.puts_warn 'Public-Key-Pins Header Not Present'
182
184
  end
183
185
 
186
+ if acao == '*'
187
+ Yawast::Utilities.puts_warn 'Access-Control-Allow-Origin: Unrestricted'
188
+ end
189
+
184
190
  puts ''
185
191
 
186
192
  unless cookies.empty?
@@ -192,12 +198,16 @@ module Yawast
192
198
  elements = val.strip.split(';')
193
199
 
194
200
  #check for secure cookies
195
- unless elements.include? ' Secure'
201
+ if elements.include?(' Secure') || elements.include?(' secure')
202
+ if uri.scheme != 'https'
203
+ Yawast::Utilities.puts_warn "\t\t\tCookie with Secure flag sent over non-HTTPS connection"
204
+ end
205
+ else
196
206
  Yawast::Utilities.puts_warn "\t\t\tCookie missing Secure flag"
197
207
  end
198
208
 
199
209
  #check for HttpOnly cookies
200
- unless elements.include? ' HttpOnly'
210
+ unless elements.include?(' HttpOnly') || elements.include?(' httponly')
201
211
  Yawast::Utilities.puts_warn "\t\t\tCookie missing HttpOnly flag"
202
212
  end
203
213
  end
@@ -262,21 +272,21 @@ module Yawast
262
272
 
263
273
  #Custom class to allow using the PROPFIND verb
264
274
  class Propfind < Net::HTTPRequest
265
- METHOD = "PROPFIND"
275
+ METHOD = 'PROPFIND'
266
276
  REQUEST_HAS_BODY = false
267
277
  RESPONSE_HAS_BODY = true
268
278
  end
269
279
 
270
280
  #Custom class to allow using the OPTIONS verb
271
281
  class Options < Net::HTTPRequest
272
- METHOD = "OPTIONS"
282
+ METHOD = 'OPTIONS'
273
283
  REQUEST_HAS_BODY = false
274
284
  RESPONSE_HAS_BODY = true
275
285
  end
276
286
 
277
287
  #Custom class to allow using the TRACE verb
278
288
  class Trace < Net::HTTPRequest
279
- METHOD = "TRACE"
289
+ METHOD = 'TRACE'
280
290
  REQUEST_HAS_BODY = false
281
291
  RESPONSE_HAS_BODY = true
282
292
  end
data/lib/scanner/iis.rb CHANGED
@@ -55,7 +55,7 @@ module Yawast
55
55
 
56
56
  #Custom class to allow using the DEBUG verb
57
57
  class Debug < Net::HTTPRequest
58
- METHOD = "DEBUG"
58
+ METHOD = 'DEBUG'
59
59
  REQUEST_HAS_BODY = false
60
60
  RESPONSE_HAS_BODY = true
61
61
  end
@@ -3,7 +3,7 @@ module Yawast
3
3
  module Plugins
4
4
  module Http
5
5
  class DirectorySearch
6
- def self.search(uri, recursive, list_redirects)
6
+ def self.search(uri, recursive, list_redirects, search_list = nil)
7
7
  @recursive = recursive
8
8
  @list_redirects = list_redirects
9
9
 
@@ -13,6 +13,18 @@ module Yawast
13
13
  puts 'Searching for common directories...'
14
14
  end
15
15
 
16
+ if search_list == nil
17
+ @search_list = []
18
+
19
+ File.open(File.dirname(__FILE__) + '/../../../resources/common.txt', 'r') do |f|
20
+ f.each_line do |line|
21
+ @search_list.push line.strip
22
+ end
23
+ end
24
+ else
25
+ @search_list = search_list
26
+ end
27
+
16
28
  begin
17
29
  pool_size = 16
18
30
  @jobs = Queue.new
@@ -58,14 +70,12 @@ module Yawast
58
70
  end
59
71
 
60
72
  def self.load_queue(uri)
61
- File.open(File.dirname(__FILE__) + '/../../../resources/common.txt', "r") do |f|
62
- f.each_line do |line|
63
- check = uri.copy
64
- check.path = check.path + "#{line.strip}/"
73
+ @search_list.each do |line|
74
+ check = uri.copy
75
+ check.path = check.path + "#{line}/"
65
76
 
66
- #add the job to the queue
67
- @jobs.push check
68
- end
77
+ #add the job to the queue
78
+ @jobs.push check
69
79
  end
70
80
  end
71
81
 
@@ -12,7 +12,7 @@ module Yawast
12
12
  check.path = "#{path}"
13
13
  code = Yawast::Shared::Http.get_status_code(check)
14
14
 
15
- if code == "200"
15
+ if code == '200'
16
16
  msg = "'#{path}' found: #{check}"
17
17
 
18
18
  if vuln
data/lib/scanner/ssl.rb CHANGED
@@ -107,7 +107,7 @@ module Yawast
107
107
  def self.get_ciphers(uri)
108
108
  puts 'Supported Ciphers (based on your OpenSSL version):'
109
109
 
110
- dns = Resolv::DNS.new()
110
+ dns = Resolv::DNS.new
111
111
 
112
112
  if IPAddress.valid? uri.host
113
113
  ip = IPAddress.parse uri.host
@@ -120,7 +120,7 @@ module Yawast
120
120
 
121
121
  versions.each do |version|
122
122
  #ignore SSLv23, as it's an auto-negotiate, which just adds noise
123
- if version.to_s != "SSLv23"
123
+ if version.to_s != 'SSLv23'
124
124
  ciphers = OpenSSL::SSL::SSLContext.new(version).ciphers
125
125
  puts "\tChecking for #{version.to_s} suites (#{ciphers.count} possible suites)"
126
126
 
@@ -197,7 +197,7 @@ module Yawast
197
197
  headers = Yawast::Shared::Http.get_headers
198
198
 
199
199
  #force 3DES - this is to ensure that 3DES specific limits are caught
200
- req.ciphers = ["3DES"]
200
+ req.ciphers = ['3DES']
201
201
 
202
202
  req.start do |http|
203
203
  10000.times do |i|
@@ -5,6 +5,7 @@ require 'digest/sha1'
5
5
 
6
6
  module Yawast
7
7
  module Scanner
8
+ # noinspection RubyResolve
8
9
  class SslLabs
9
10
  def self.info(uri, tdes_session_count)
10
11
  puts 'Beginning SSL Labs scan (this could take a minute or two)'
@@ -259,7 +260,6 @@ module Yawast
259
260
  strength = 112
260
261
  end
261
262
 
262
- suite_info = nil
263
263
  if ke != nil
264
264
  suite_info = "#{suite.name.ljust(50)} - #{strength}-bits - #{ke}"
265
265
  else
data/lib/shared/http.rb CHANGED
@@ -53,6 +53,7 @@ module Yawast
53
53
  req
54
54
  end
55
55
 
56
+ # noinspection RubyStringKeysInHashInspection
56
57
  def self.get_headers
57
58
  if @cookie == nil
58
59
  headers = { 'User-Agent' => HTTP_UA }
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yawast
2
- VERSION = '0.4.0.beta4'
2
+ VERSION = '0.4.0.beta5'
3
3
  end
data/lib/yawast.rb CHANGED
@@ -44,7 +44,7 @@ module Yawast
44
44
  def self.set_openssl_options
45
45
  #change certain defaults, to make things work better
46
46
  #we prefer RSA, to avoid issues with small DH keys
47
- OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers] = "RSA:ALL:COMPLEMENTOFALL"
47
+ OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers] = 'RSA:ALL:COMPLEMENTOFALL'
48
48
  OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:verify_mode] = OpenSSL::SSL::VERIFY_NONE
49
49
  OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] = OpenSSL::SSL::OP_ALL
50
50
  end
data/test/base.rb CHANGED
@@ -1,3 +1,8 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ #if we are running from RubyMine, we need this, but it breaks things when called from Rake.
4
+ require 'minitest/autorun' unless ENV['FROM_RAKE'] == 'true'
5
+
1
6
  module TestBase
2
7
  def override_stdout
3
8
  @orig_stdout = $stdout
@@ -17,7 +22,7 @@ module TestBase
17
22
  end
18
23
 
19
24
  def start_web_server(file, url, port = 1234)
20
- thr = Thread.new {
25
+ Thread.new {
21
26
  server = WEBrick::HTTPServer.new :Port => port,
22
27
  :BindAddress => 'localhost',
23
28
  :AccessLog => [],
@@ -25,8 +30,6 @@ module TestBase
25
30
  server.mount "/#{url}", WEBrick::HTTPServlet::FileHandler, file
26
31
  server.start
27
32
  }
28
-
29
- thr
30
33
  end
31
34
 
32
35
  def parse_headers_from_file(file)
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
 
@@ -0,0 +1,54 @@
1
+ require 'webrick'
2
+ require File.dirname(__FILE__) + '/../lib/yawast'
3
+ require File.dirname(__FILE__) + '/base'
4
+
5
+ class TestDirectorySearch < Minitest::Test
6
+ include TestBase
7
+
8
+ def test_directory_search_recurs
9
+ port = rand(60000) + 1024 # pick a random port number
10
+ server = run_server port
11
+
12
+ override_stdout
13
+ uri = Yawast::Commands::Utils.extract_uri(["http://localhost:#{port}"])
14
+
15
+ Yawast::Shared::Http.setup nil, nil
16
+ Yawast::Scanner::Plugins::Http::DirectorySearch.search uri, true, true, %w(test data)
17
+
18
+ assert stdout_value.include?('Recursively searching for common directories'), 'Output not found'
19
+
20
+ server.exit
21
+ restore_stdout
22
+ end
23
+
24
+ def test_directory_search
25
+ port = rand(60000) + 1024 # pick a random port number
26
+ server = run_server port
27
+
28
+ override_stdout
29
+ uri = Yawast::Commands::Utils.extract_uri(["http://localhost:#{port}"])
30
+
31
+ Yawast::Shared::Http.setup nil, nil
32
+ Yawast::Scanner::Plugins::Http::DirectorySearch.search uri, false, true, %w(test data)
33
+
34
+ assert stdout_value.include?('Searching for common directories'), 'Output not found'
35
+
36
+ server.exit
37
+ restore_stdout
38
+ end
39
+
40
+ def run_server(port)
41
+ Thread.new {
42
+ sockets = WEBrick::Utils.create_listeners nil, port
43
+
44
+ server = WEBrick::HTTPServer.new :Port => port,
45
+ :BindAddress => 'localhost',
46
+ :AccessLog => [],
47
+ :Logger => WEBrick::Log.new('/dev/null'),
48
+ :DocumentRoot => File.dirname(__FILE__),
49
+ :DoNotListen => true
50
+ server.listeners.replace sockets
51
+ server.start
52
+ }
53
+ end
54
+ end
data/test/test_helper.rb CHANGED
@@ -1,5 +1,8 @@
1
- require 'minitest/reporters'
2
- require 'coveralls'
1
+ require 'simplecov'
2
+
3
+ dir = File.join(File.dirname(__FILE__), '../coverage')
4
+ SimpleCov.coverage_dir(dir)
5
+ SimpleCov.start
3
6
 
7
+ require 'minitest/reporters'
4
8
  MiniTest::Reporters.use!
5
- Coveralls.wear!
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require 'webrick'
3
2
  require File.dirname(__FILE__) + '/../lib/yawast'
4
3
  require File.dirname(__FILE__) + '/base'
@@ -12,6 +11,8 @@ class TestScannerApacheServerStatus < Minitest::Test
12
11
 
13
12
  override_stdout
14
13
  uri = Yawast::Commands::Utils.extract_uri(["http://localhost:#{port}"])
14
+
15
+ Yawast::Shared::Http.setup nil, nil
15
16
  Yawast::Scanner::Plugins::Http::FilePresence.check_readme_html uri
16
17
 
17
18
  assert stdout_value.include?('\'/readme.html\' found:'), 'readme.html page warning not found'
@@ -20,12 +21,30 @@ class TestScannerApacheServerStatus < Minitest::Test
20
21
  restore_stdout
21
22
  end
22
23
 
24
+ def test_readme_html_present_all
25
+ port = rand(60000) + 1024 # pick a random port number
26
+ server = start_web_server File.dirname(__FILE__) + '/data/wordpress_readme_html.txt', 'readme.html', port
27
+
28
+ override_stdout
29
+ uri = Yawast::Commands::Utils.extract_uri(["http://localhost:#{port}"])
30
+
31
+ Yawast::Shared::Http.setup nil, nil
32
+ Yawast::Scanner::Plugins::Http::FilePresence.check_all uri
33
+
34
+ assert stdout_value.include?('\'/readme.html\' found:'), 'readme.html page warning not found'
35
+
36
+ server.exit
37
+ restore_stdout
38
+ end
39
+
23
40
  def test_release_notes_txt_present
24
41
  port = rand(60000) + 1024 # pick a random port number
25
42
  server = start_web_server File.dirname(__FILE__) + '/data/tomcat_release_notes.txt', 'RELEASE-NOTES.txt', port
26
43
 
27
44
  override_stdout
28
45
  uri = Yawast::Commands::Utils.extract_uri(["http://localhost:#{port}"])
46
+
47
+ Yawast::Shared::Http.setup nil, nil
29
48
  Yawast::Scanner::Plugins::Http::FilePresence.check_release_notes_txt uri
30
49
 
31
50
  assert stdout_value.include?('\'/RELEASE-NOTES.txt\' found:'), 'RELEASE-NOTES.txt page warning not found'
@@ -1,11 +1,10 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
 
5
4
  class TestScannerApacheBanner < Minitest::Test
6
5
  include TestBase
7
6
 
8
- def test_apache_basic_banner_no_version
7
+ def test_apache_banner_no_version
9
8
  server = 'Apache'
10
9
  override_stdout
11
10
  Yawast::Scanner::Apache.check_banner server
@@ -25,7 +24,7 @@ class TestScannerApacheBanner < Minitest::Test
25
24
  restore_stdout
26
25
  end
27
26
 
28
- def test_apache_basic_banner_distro
27
+ def test_apache_banner_distro
29
28
  server = 'Apache/2.4.7 (Ubuntu)'
30
29
  override_stdout
31
30
  Yawast::Scanner::Apache.check_banner server
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require 'webrick'
3
2
  require File.dirname(__FILE__) + '/../lib/yawast'
4
3
  require File.dirname(__FILE__) + '/base'
@@ -12,6 +11,8 @@ class TestScannerApacheServerInfo < Minitest::Test
12
11
 
13
12
  override_stdout
14
13
  uri = Yawast::Commands::Utils.extract_uri(["http://localhost:#{port}"])
14
+
15
+ Yawast::Shared::Http.setup nil, nil
15
16
  Yawast::Scanner::Apache.check_server_info uri
16
17
 
17
18
  assert stdout_value.include?('Apache Server Info page found'), 'Apache Server Info page warning not found'
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require 'webrick'
3
2
  require File.dirname(__FILE__) + '/../lib/yawast'
4
3
  require File.dirname(__FILE__) + '/base'
@@ -12,6 +11,8 @@ class TestScannerApacheServerStatus < Minitest::Test
12
11
 
13
12
  override_stdout
14
13
  uri = Yawast::Commands::Utils.extract_uri(["http://localhost:#{port}"])
14
+
15
+ Yawast::Shared::Http.setup nil, nil
15
16
  Yawast::Scanner::Apache.check_server_status uri
16
17
 
17
18
  assert stdout_value.include?('Apache Server Status page found'), 'Apache Server Status page warning not found'
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
 
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
 
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
 
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
 
@@ -10,12 +9,14 @@ class TestSharedHttp < Minitest::Test
10
9
  end
11
10
 
12
11
  def test_get_apple_success
12
+ Yawast::Shared::Http.setup nil, nil
13
13
  body = Yawast::Shared::Http.get @uri
14
14
 
15
15
  assert body.include?('Success'), 'Failed to receive "Success" message from Apple.com'
16
16
  end
17
17
 
18
18
  def test_status_apple_success
19
+ Yawast::Shared::Http.setup nil, nil
19
20
  status = Yawast::Shared::Http.get_status_code @uri
20
21
 
21
22
  assert_equal status, '200'
@@ -24,13 +25,17 @@ class TestSharedHttp < Minitest::Test
24
25
  def test_status_apple_failure
25
26
  uri = @uri
26
27
  uri.path += '.404'
28
+
29
+ Yawast::Shared::Http.setup nil, nil
27
30
  status = Yawast::Shared::Http.get_status_code uri
28
31
 
29
32
  assert_equal status, '404'
30
33
  end
31
34
 
32
35
  def test_head_apple_success
36
+ Yawast::Shared::Http.setup nil, nil
33
37
  head = Yawast::Shared::Http.head @uri
38
+
34
39
  head.each do |k, v|
35
40
  if k.downcase == 'server'
36
41
  assert_equal v, 'Apache'
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
  require 'colorize'
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
 
data/test/test_yawast.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'minitest/autorun'
2
1
  require File.dirname(__FILE__) + '/../lib/yawast'
3
2
  require File.dirname(__FILE__) + '/base'
4
3
 
data/yawast.gemspec CHANGED
@@ -1,17 +1,17 @@
1
- $:.push File.expand_path("../lib", __FILE__)
2
- require File.expand_path("../lib/version", __FILE__)
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+ require File.expand_path('../lib/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'yawast'
6
6
  s.version = Yawast::VERSION
7
7
  s.platform = Gem::Platform::RUBY
8
- s.summary = "The YAWAST Antecedent Web Application Security Toolkit"
9
- s.description = "YAWAST is an application meant to simplify initial analysis and information gathering for penetration testers and security auditors."
10
- s.authors = ["Adam Caudill"]
8
+ s.summary = 'The YAWAST Antecedent Web Application Security Toolkit'
9
+ s.description = 'YAWAST is an application meant to simplify initial analysis and information gathering for penetration testers and security auditors.'
10
+ s.authors = ['Adam Caudill']
11
11
  s.email = 'adam@adamcaudill.com'
12
12
  s.homepage = 'https://github.com/adamcaudill/yawast'
13
13
  s.license = 'MIT'
14
- s.rubyforge_project = "yawast"
14
+ s.rubyforge_project = 'yawast'
15
15
 
16
16
  s.add_runtime_dependency 'ssllabs', '~> 1.24'
17
17
  s.add_runtime_dependency 'commander', '~> 4.4'
@@ -25,5 +25,5 @@ Gem::Specification.new do |s|
25
25
  s.files = `git ls-files`.split("\n")
26
26
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
27
27
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
28
- s.require_path = ["lib"]
28
+ s.require_path = ['lib']
29
29
  end