gauntlt 0.0.7 → 0.0.8
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/.gitignore +2 -1
- data/.travis.yml +7 -1
- data/Gemfile +1 -1
- data/README.md +14 -8
- data/bin/gauntlt +28 -46
- data/examples/curl/cookies.attack +12 -0
- data/examples/curl/simple.attack +9 -0
- data/examples/curl/verbs.attack +19 -0
- data/examples/nmap/os_detection.attack +16 -0
- data/examples/nmap/simple.attack +16 -0
- data/examples/nmap/tcp_ping_ports.attack +16 -0
- data/examples/nmap/xml_output.attack +18 -0
- data/examples/sslyze/sslyze.attack +23 -0
- data/features/attack.feature +30 -19
- data/features/attacks/curl.feature +23 -15
- data/features/attacks/nmap.feature +16 -93
- data/features/attacks/sqlmap.feature +2 -3
- data/features/attacks/sslyze.feature +7 -29
- data/features/help.feature +3 -30
- data/features/step_definitions/config_steps.rb +1 -1
- data/features/step_definitions/support_steps.rb +15 -0
- data/features/support/hooks.rb +2 -2
- data/features/tags.feature +44 -0
- data/gauntlt.gemspec +0 -2
- data/lib/gauntlt.rb +7 -11
- data/lib/gauntlt/attack.rb +26 -22
- data/lib/gauntlt/attack_adapters/curl.rb +35 -1
- data/lib/gauntlt/attack_adapters/support/cli_helper.rb +1 -1
- data/lib/gauntlt/attack_adapters/support/cookie_helper.rb +3 -10
- data/lib/gauntlt/version.rb +1 -1
- data/spec/gauntlt/attack_spec.rb +13 -35
- data/spec/gauntlt_spec.rb +7 -14
- metadata +12 -30
- data/features/attacks/cookies.feature +0 -25
- data/features/attacks/http_methods.feature +0 -33
- data/features/step_definitions/aruba_extension_steps.rb +0 -3
- data/features/support/attack_steps.rb +0 -1
- data/features/support/profile/profile.xml +0 -5
- data/lib/gauntlt/attack_adapters/cookies.rb +0 -11
- data/lib/gauntlt/attack_adapters/http_methods.rb +0 -12
    
        data/spec/gauntlt_spec.rb
    CHANGED
    
    | @@ -3,16 +3,9 @@ require 'spec_helper' | |
| 3 3 | 
             
            describe Gauntlt do
         | 
| 4 4 | 
             
              subject { Gauntlt }
         | 
| 5 5 |  | 
| 6 | 
            -
              describe :has_attack? do
         | 
| 7 | 
            -
                it "returns true if an attack exists for the passed name" do
         | 
| 8 | 
            -
                  subject.stub(:attacks).and_return(['foo'])
         | 
| 9 | 
            -
                  subject.should have_attack('foo')
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 6 | 
             
              describe :attacks do
         | 
| 14 7 | 
             
                it "returns the names of all attack files in the attacks directory" do
         | 
| 15 | 
            -
                  subject.stub(: | 
| 8 | 
            +
                  subject.stub(:attack_adapters).and_return([
         | 
| 16 9 | 
             
                    '/foo/bar/a.rb',
         | 
| 17 10 | 
             
                    '/foo/bar/b.rb'
         | 
| 18 11 | 
             
                  ])
         | 
| @@ -21,21 +14,21 @@ describe Gauntlt do | |
| 21 14 | 
             
                end
         | 
| 22 15 | 
             
              end
         | 
| 23 16 |  | 
| 24 | 
            -
              describe : | 
| 25 | 
            -
                it "returns the full path to each attack  | 
| 26 | 
            -
                  stub_const "Gauntlt:: | 
| 17 | 
            +
              describe :attack_adapters do
         | 
| 18 | 
            +
                it "returns the full path to each attack adapter" do
         | 
| 19 | 
            +
                  stub_const "Gauntlt::ATTACK_ADAPTERS_GLOB_PATTERN",'foo'
         | 
| 27 20 | 
             
                  Dir.stub(:glob).with('foo').and_return(['bar', 'baz'])
         | 
| 28 | 
            -
                  subject. | 
| 21 | 
            +
                  subject.attack_adapters.should == ['bar', 'baz']
         | 
| 29 22 | 
             
                end
         | 
| 30 23 | 
             
              end
         | 
| 31 24 |  | 
| 32 25 | 
             
              describe :attack do
         | 
| 33 26 | 
             
                it "runs the specified test with the passed options" do
         | 
| 34 27 | 
             
                  mock_test = mock('test')
         | 
| 35 | 
            -
                  subject::Attack.should_receive(:new).with(:foo,  | 
| 28 | 
            +
                  subject::Attack.should_receive(:new).with(:foo, []).and_return(mock_test)
         | 
| 36 29 | 
             
                  mock_test.should_receive(:run)
         | 
| 37 30 |  | 
| 38 | 
            -
                  subject.attack(:foo | 
| 31 | 
            +
                  subject.attack(:foo)
         | 
| 39 32 | 
             
                end
         | 
| 40 33 | 
             
              end
         | 
| 41 34 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: gauntlt
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.8
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2012- | 
| 13 | 
            +
            date: 2012-09-17 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: cucumber
         | 
| @@ -108,22 +108,6 @@ dependencies: | |
| 108 108 | 
             
                - - ! '>='
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 110 | 
             
                    version: '0'
         | 
| 111 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            -
              name: curb
         | 
| 113 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 | 
            -
                none: false
         | 
| 115 | 
            -
                requirements:
         | 
| 116 | 
            -
                - - ! '>='
         | 
| 117 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 118 | 
            -
                    version: '0'
         | 
| 119 | 
            -
              type: :runtime
         | 
| 120 | 
            -
              prerelease: false
         | 
| 121 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 122 | 
            -
                none: false
         | 
| 123 | 
            -
                requirements:
         | 
| 124 | 
            -
                - - ! '>='
         | 
| 125 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 126 | 
            -
                    version: '0'
         | 
| 127 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 128 112 | 
             
              name: nokogiri
         | 
| 129 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -174,32 +158,34 @@ files: | |
| 174 158 | 
             
            - README.md
         | 
| 175 159 | 
             
            - Rakefile
         | 
| 176 160 | 
             
            - bin/gauntlt
         | 
| 161 | 
            +
            - examples/curl/cookies.attack
         | 
| 162 | 
            +
            - examples/curl/simple.attack
         | 
| 163 | 
            +
            - examples/curl/verbs.attack
         | 
| 177 164 | 
             
            - examples/nmap/nmap.attack
         | 
| 165 | 
            +
            - examples/nmap/os_detection.attack
         | 
| 166 | 
            +
            - examples/nmap/simple.attack
         | 
| 167 | 
            +
            - examples/nmap/tcp_ping_ports.attack
         | 
| 168 | 
            +
            - examples/nmap/xml_output.attack
         | 
| 169 | 
            +
            - examples/sslyze/sslyze.attack
         | 
| 178 170 | 
             
            - features/attack.feature
         | 
| 179 | 
            -
            - features/attacks/cookies.feature
         | 
| 180 171 | 
             
            - features/attacks/curl.feature
         | 
| 181 | 
            -
            - features/attacks/http_methods.feature
         | 
| 182 172 | 
             
            - features/attacks/nmap.feature
         | 
| 183 173 | 
             
            - features/attacks/sqlmap.feature
         | 
| 184 174 | 
             
            - features/attacks/sslyze.feature
         | 
| 185 175 | 
             
            - features/help.feature
         | 
| 186 176 | 
             
            - features/report.feature
         | 
| 187 | 
            -
            - features/step_definitions/aruba_extension_steps.rb
         | 
| 188 177 | 
             
            - features/step_definitions/config_steps.rb
         | 
| 189 178 | 
             
            - features/step_definitions/support_steps.rb
         | 
| 190 179 | 
             
            - features/support/aruba.rb
         | 
| 191 | 
            -
            - features/support/attack_steps.rb
         | 
| 192 180 | 
             
            - features/support/env.rb
         | 
| 193 181 | 
             
            - features/support/hooks.rb
         | 
| 194 | 
            -
            - features/ | 
| 182 | 
            +
            - features/tags.feature
         | 
| 195 183 | 
             
            - gauntlt.gemspec
         | 
| 196 184 | 
             
            - gem_tasks/cucumber.rake
         | 
| 197 185 | 
             
            - gem_tasks/rspec.rake
         | 
| 198 186 | 
             
            - lib/gauntlt.rb
         | 
| 199 187 | 
             
            - lib/gauntlt/attack.rb
         | 
| 200 | 
            -
            - lib/gauntlt/attack_adapters/cookies.rb
         | 
| 201 188 | 
             
            - lib/gauntlt/attack_adapters/curl.rb
         | 
| 202 | 
            -
            - lib/gauntlt/attack_adapters/http_methods.rb
         | 
| 203 189 | 
             
            - lib/gauntlt/attack_adapters/nmap.rb
         | 
| 204 190 | 
             
            - lib/gauntlt/attack_adapters/sqlmap.rb
         | 
| 205 191 | 
             
            - lib/gauntlt/attack_adapters/sslyze.rb
         | 
| @@ -240,22 +226,18 @@ specification_version: 3 | |
| 240 226 | 
             
            summary: behaviour-driven security using cucumber
         | 
| 241 227 | 
             
            test_files:
         | 
| 242 228 | 
             
            - features/attack.feature
         | 
| 243 | 
            -
            - features/attacks/cookies.feature
         | 
| 244 229 | 
             
            - features/attacks/curl.feature
         | 
| 245 | 
            -
            - features/attacks/http_methods.feature
         | 
| 246 230 | 
             
            - features/attacks/nmap.feature
         | 
| 247 231 | 
             
            - features/attacks/sqlmap.feature
         | 
| 248 232 | 
             
            - features/attacks/sslyze.feature
         | 
| 249 233 | 
             
            - features/help.feature
         | 
| 250 234 | 
             
            - features/report.feature
         | 
| 251 | 
            -
            - features/step_definitions/aruba_extension_steps.rb
         | 
| 252 235 | 
             
            - features/step_definitions/config_steps.rb
         | 
| 253 236 | 
             
            - features/step_definitions/support_steps.rb
         | 
| 254 237 | 
             
            - features/support/aruba.rb
         | 
| 255 | 
            -
            - features/support/attack_steps.rb
         | 
| 256 238 | 
             
            - features/support/env.rb
         | 
| 257 239 | 
             
            - features/support/hooks.rb
         | 
| 258 | 
            -
            - features/ | 
| 240 | 
            +
            - features/tags.feature
         | 
| 259 241 | 
             
            - spec/gauntlt/attack_spec.rb
         | 
| 260 242 | 
             
            - spec/gauntlt_spec.rb
         | 
| 261 243 | 
             
            - spec/spec_helper.rb
         | 
| @@ -1,25 +0,0 @@ | |
| 1 | 
            -
            Feature: Cookies attack
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              Scenario: Launch cookies attack
         | 
| 4 | 
            -
                Given an attack "cookies" exists
         | 
| 5 | 
            -
                And a file named "cookies.attack" with:
         | 
| 6 | 
            -
                  """
         | 
| 7 | 
            -
                  Feature: Evaluate received cookies against expected.
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  Background:
         | 
| 10 | 
            -
                    Given "curl" is installed
         | 
| 11 | 
            -
                    And the target hostname is "google.com"
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  Scenario: Verify server is returning the cookies expected
         | 
| 14 | 
            -
                    When I launch a "cookies" attack
         | 
| 15 | 
            -
                    Then the following cookies should be received:
         | 
| 16 | 
            -
                      | name | secure | _rest              |
         | 
| 17 | 
            -
                      | PREF | false  | {}                 |
         | 
| 18 | 
            -
                      | NID  | false  | {'HttpOnly': None} |
         | 
| 19 | 
            -
                  """
         | 
| 20 | 
            -
                When I run `gauntlt attack --name cookies --attack-file cookies.attack`
         | 
| 21 | 
            -
                Then it should pass
         | 
| 22 | 
            -
                And the output should contain:
         | 
| 23 | 
            -
                  """
         | 
| 24 | 
            -
                  4 steps (4 passed)
         | 
| 25 | 
            -
                  """
         | 
| @@ -1,33 +0,0 @@ | |
| 1 | 
            -
            Feature: http_methods attack
         | 
| 2 | 
            -
              Background:
         | 
| 3 | 
            -
                Given an attack "http_methods" exists
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              Scenario: http methods
         | 
| 6 | 
            -
                Given a file named "http_methods.attack" with:
         | 
| 7 | 
            -
                  """
         | 
| 8 | 
            -
                  Feature: Evaluate responses to various HTTP methods.
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  Background:
         | 
| 11 | 
            -
                    Given "curl" is installed
         | 
| 12 | 
            -
                    And the target hostname is "google.com"
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                  Scenario Outline: Verify server responds correctly to various HTTP methods
         | 
| 15 | 
            -
                    When I launch a "curl" attack with:
         | 
| 16 | 
            -
                      \"\"\"
         | 
| 17 | 
            -
                        curl -i -X <method> <hostname>
         | 
| 18 | 
            -
                      \"\"\"
         | 
| 19 | 
            -
                    Then the output should contain "<response>"
         | 
| 20 | 
            -
                    Examples:
         | 
| 21 | 
            -
                      | method | response                       |
         | 
| 22 | 
            -
                      | delete | Error 405 (Method Not Allowed) |
         | 
| 23 | 
            -
                      | patch  | Error 405 (Method Not Allowed) |
         | 
| 24 | 
            -
                      | trace  | Error 405 (Method Not Allowed) |
         | 
| 25 | 
            -
                      | track  | Error 405 (Method Not Allowed) |
         | 
| 26 | 
            -
                      | bogus  | Error 405 (Method Not Allowed) |
         | 
| 27 | 
            -
                  """
         | 
| 28 | 
            -
                When I run `gauntlt attack --name http_methods --attack-file http_methods.attack`
         | 
| 29 | 
            -
                Then it should pass
         | 
| 30 | 
            -
                And the output should contain:
         | 
| 31 | 
            -
                  """
         | 
| 32 | 
            -
                  5 scenarios (5 passed)
         | 
| 33 | 
            -
                  """
         | 
| @@ -1 +0,0 @@ | |
| 1 | 
            -
            require 'gauntlt'
         | 
| @@ -1,11 +0,0 @@ | |
| 1 | 
            -
            When /^I launch a "cookies" attack$/ do
         | 
| 2 | 
            -
              set_cookies( cookies_for(hostname) )
         | 
| 3 | 
            -
            end
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            Then /^the following cookies should be received:$/ do |table|
         | 
| 6 | 
            -
              names = table.hashes.map{|h| h['name'] }
         | 
| 7 | 
            -
              names.each do |name|
         | 
| 8 | 
            -
                cookies.any?{|s| s =~ /^#{name}/}.should be_true
         | 
| 9 | 
            -
                # TODO: check other values in table
         | 
| 10 | 
            -
              end
         | 
| 11 | 
            -
            end
         | 
| @@ -1,12 +0,0 @@ | |
| 1 | 
            -
            When /^"curl" is installed$/ do
         | 
| 2 | 
            -
              ensure_cli_installed("curl")
         | 
| 3 | 
            -
            end
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            When /^I launch a "curl" attack$/ do
         | 
| 6 | 
            -
              @response = Curl::Easy.http_get(hostname)
         | 
| 7 | 
            -
            end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            When /^I launch a "curl" attack with:$/ do |command|
         | 
| 10 | 
            -
              command.gsub!('<hostname>', hostname)
         | 
| 11 | 
            -
              run command
         | 
| 12 | 
            -
            end
         |