sslscan_steps 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5d0dd9e80db7cb94e7db6e9da21cb0cc6a0de83a811df51e5ab6574d20b7614f
4
+ data.tar.gz: dafaf2277f509417581f4622281d86ad64e88b58d6ea7ccc8479bbf6cea8c79a
5
+ SHA512:
6
+ metadata.gz: c38bcfc529fe37b6a98c9ab905d3931b6fddb339bf72a04cef143464bdd274cef8639a6299c39139aff6c1db09f7ef4318b44f7b60ab137ff7489ad95de7ab08
7
+ data.tar.gz: 1df6ec2430ec5475554211ef50fb0d7387edaf4b7ef403ec7591f88f84cff9502844d4cf520a83dae5945393c4c9245fa86e4580e88a0e8bccc770bec6cfced0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
data/README.md ADDED
@@ -0,0 +1,48 @@
1
+ [![Gem Version](https://badge.fury.io/rb/sslscan_steps.svg)](https://badge.fury.io/rb/sslscan_steps)
2
+
3
+ # sslscan\_steps
4
+
5
+ sslscan\_steps provides cucumber step definitions for executing
6
+ SSL/TLS protocol scans with the sslscan tool.
7
+
8
+ * [rbsec/sslscan at GitHub](https://github.com/rbsec/sslscan)
9
+
10
+ It uses the sslscan\_wrapper gem for interaction with sslscan.
11
+
12
+ ## Usage
13
+
14
+ In your Gemfile:
15
+
16
+ ```ruby
17
+ gem 'sslscan_steps'
18
+ ```
19
+
20
+ In your support/env.rb:
21
+
22
+ ```ruby
23
+ require 'sslscan_steps'
24
+ ```
25
+
26
+ Use the steps in your feature files:
27
+
28
+ ```gherkin
29
+ Feature: SSL/TLS protocol parameters
30
+ To be a responsible site operator my website must support
31
+ state-of-the-art encryption protocols.
32
+
33
+ Scenario: Host must support strong encryption
34
+ Given the target host for sslscan is markusbenning.de
35
+ And the target port for sslscan is 443
36
+ When the sslscan is executed
37
+ Then the scanned hostname is markusbenning.de
38
+ Then the scanned host certificate signature algorithm is sha256WithRSAEncryption
39
+ Then the scanned host certificate is not self-signed
40
+ Then the scanned host certificate is not expired
41
+ Then the scanned host is not vulnerable to heartbleed
42
+ Then the scanned host must support the cipher ECDHE-RSA-AES128-GCM-SHA256
43
+ Then the scanned host must support sslversion TLSv1.2
44
+ ```
45
+
46
+ ## More Examples
47
+
48
+ See [features/](tree/master/features).
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'rake/clean'
2
+ require 'rubygems'
3
+ require 'rubygems/package_task'
4
+ require 'rdoc/task'
5
+
6
+ spec = eval(File.read('sslscan_steps.gemspec'))
7
+ Gem::PackageTask.new(spec) do |pkg|
8
+ end
9
+
10
+ Rake::RDocTask.new do |rd|
11
+ rd.rdoc_files.include("lib/**/*.rb","bin/**/*")
12
+ rd.title = 'Cucumber step definitions for sslscan'
13
+ end
14
+
@@ -0,0 +1,75 @@
1
+ require 'sslscan_wrapper'
2
+
3
+ Given /^the sslscan report file is (.*)$/ do |path|
4
+ @sslscan_filename = path
5
+ end
6
+
7
+ When /^the sslscan report is read from the file$/ do
8
+ content = File.read(@sslscan_filename)
9
+ @sslscan_report = SslscanWrapper::Report.new(content)
10
+ expect(@sslscan_report).to be_a(SslscanWrapper::Report)
11
+ end
12
+
13
+ Then /^the scanned hostname is (.*)$/ do |hostname|
14
+ expect(@sslscan_report.host).to eq(hostname)
15
+ end
16
+
17
+ Then /^the scanned port is (\d+)$/ do |port|
18
+ expect(@sslscan_report.port.to_i).to eq(port.to_i)
19
+ end
20
+
21
+ Then /^the scanned host supports (no )?compression$/ do |negate|
22
+ expect(@sslscan_report.compression_supported?).to eq(negate.nil? ? true : false)
23
+ end
24
+
25
+ Then /^the scanned host supports (no )?renegotiation$/ do |negate|
26
+ expect(@sslscan_report.renegotiation_supported?).to eq(negate.nil? ? true : false)
27
+ end
28
+
29
+ Then /^the scanned host supports (no )?secure renegotiation$/ do |negate|
30
+ expect(@sslscan_report.renegotiation_secure?).to eq(negate.nil? ? true : false)
31
+ end
32
+
33
+ Then /^the scanned host certificate signature algorithm is (.*)$/ do |alg|
34
+ expect(@sslscan_report.signature_algorithm).to eq(alg)
35
+ end
36
+
37
+ Then /^the scanned host certificate subject is (.*)$/ do |subject|
38
+ expect(@sslscan_report.subject).to eq(subject)
39
+ end
40
+
41
+ Then /^the scanned host certificate subject altnames are (.*)$/ do |altnames|
42
+ altnames = nil if altnames == 'empty'
43
+ expect(@sslscan_report.altnames).to eq(altnames)
44
+ end
45
+
46
+ Then /^the scanned host certificate issuer is (.*)$/ do |issuer|
47
+ expect(@sslscan_report.issuer).to eq(issuer)
48
+ end
49
+
50
+ Then /^the scanned host certificate is (not )?self-signed$/ do |negate|
51
+ expect(@sslscan_report.self_signed?).to eq(negate.nil? ? true : false)
52
+ end
53
+
54
+ Then /^the scanned host certificate is (not )?expired$/ do |negate|
55
+ expect(@sslscan_report.expired?).to eq(negate.nil? ? true : false)
56
+ end
57
+
58
+ Then /^the scanned host is (not )?vulnerable to heartbleed$/ do |negate|
59
+ expect(@sslscan_report.heartbleed_vulnerable?).to eq(negate.nil? ? true : false)
60
+ end
61
+
62
+ Then /^the scanned host must (|not )support the cipher (\S+)$/ do |negate,cipher|
63
+ expect(@sslscan_report.support_cipher?(cipher)).to eq(negate =~ /not/ ? false : true)
64
+ end
65
+
66
+ Then /^the scanned host must (|not )support ciphers like (.*)$/ do |negate,regex|
67
+ list = @sslscan_report.ciphers.select do |cipher|
68
+ cipher.match(regex)
69
+ end
70
+ expect(list.count > 0).to eq(negate =~ /not/ ? false : true)
71
+ end
72
+
73
+ Then /^the scanned host must (|not )support sslversion (\S+)$/ do |negate,sslversion|
74
+ expect(@sslscan_report.support_sslversion?(sslversion)).to eq(negate =~ /not/ ? false : true)
75
+ end
@@ -0,0 +1,31 @@
1
+ require 'sslscan_wrapper'
2
+
3
+ Given /^the target host for sslscan is (\S+)$/ do |hostname|
4
+ @sslscan_host = hostname
5
+ end
6
+
7
+ Given /^the target port for sslscan is (\d+)$/ do |port|
8
+ @sslscan_port = port
9
+ end
10
+
11
+ Given /^the option flag (\S+) for sslscan is set$/ do |flag|
12
+ @sslscan_flags ||= []
13
+ @sslscan_flags << flag
14
+ end
15
+
16
+ Given /^the option parameter (\S+) for sslscan is set to (.*)$/ do |option,value|
17
+ @sslscan_options ||= {}
18
+ @sslscan_options[option] = value
19
+ end
20
+
21
+ When /^the sslscan is executed/ do
22
+ scanner = SslscanWrapper::Scanner.new
23
+ @sslscan_options.to_h.each do |k,v|
24
+ scanner.send("#{k}=", v)
25
+ end
26
+ @sslscan_flags.to_a.each do |flag|
27
+ scanner.send("#{flag}=", true)
28
+ end
29
+ @sslscan_report = scanner.scan(@sslscan_host, @sslscan_port)
30
+ end
31
+
@@ -0,0 +1,2 @@
1
+ require 'sslscan_steps/scanner_steps'
2
+ require 'sslscan_steps/report_steps'
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sslscan_steps
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Markus Benning
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-04-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aruba
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sslscan_wrapper
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description:
70
+ email: ich@markusbenning.de
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - Gemfile
76
+ - README.md
77
+ - Rakefile
78
+ - lib/sslscan_steps.rb
79
+ - lib/sslscan_steps/report_steps.rb
80
+ - lib/sslscan_steps/scanner_steps.rb
81
+ homepage: https://github.com/benningm/sslscan_steps
82
+ licenses:
83
+ - MIT
84
+ metadata: {}
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 2.7.6
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: Cucumber step file definitions for sslscan
106
+ test_files: []