gauntlt 1.0.12 → 1.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +11 -13
- data/README.md +27 -14
- data/bin/gauntlt +3 -1
- data/features/attacks/{arachni.feature → arachni.broken} +0 -0
- data/features/step_definitions/support_steps.rb +1 -1
- data/gauntlt.gemspec +6 -5
- data/lib/gauntlt.rb +2 -2
- data/lib/gauntlt/attack.rb +2 -2
- data/lib/gauntlt/attack_adapters/support/attack_step_helper.rb +3 -3
- data/lib/gauntlt/attack_aliases/arachni.json +4 -0
- data/lib/gauntlt/attack_aliases/nmap.json +39 -6
- data/lib/gauntlt/runtime.rb +4 -3
- data/lib/gauntlt/version.rb +1 -1
- metadata +44 -27
- data/install_gauntlt_deps.sh +0 -121
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2c51cde0442bafb05665ed820dc8f1093b8f2c7
|
4
|
+
data.tar.gz: 510e74457b2a5e31de244ea646d278809f44087a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abc774b0b9c1356117eb8b9f2c971200871081707ed41786c91f7aa5d21888cda86bf98a74e9c2128d2bb6f1e18fb8c2070f5d05bfc0fa2238fd15ab1bf4cb72
|
7
|
+
data.tar.gz: 79dc9aa306817106cb273649657e5b94e36bc78c7826ec8fd4c5d2211514a654a2f002c7fe3b4a36c320d11368ef81b18c950f5a93f5149c63e20022ac685ce4
|
data/.travis.yml
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.1.
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
|
3
|
+
- 2.1.10
|
4
|
+
- 2.2.7
|
5
|
+
- 2.3.4
|
6
|
+
env:
|
7
|
+
global:
|
8
|
+
- ARACHNI="arachni-1.5.1-0.5.12"
|
9
|
+
- ARACHNI_URL="https://github.com/Arachni/arachni/releases/download/v1.5.1/arachni-1.5.1-0.5.12-linux-x86_64.tar.gz"
|
7
10
|
before_install:
|
8
11
|
- git submodule update --init --recursive --force
|
9
12
|
- gem update bundler
|
10
13
|
before_script:
|
11
|
-
#- go get github.com/FiloSottile/Heartbleed
|
12
|
-
#- go install github.com/FiloSottile/Heartbleed
|
13
|
-
#- which Heartbleed
|
14
14
|
- sudo apt-get update
|
15
15
|
- sudo apt-get install build-essential git libxml2 libxml2-dev
|
16
16
|
libxslt-dev libcurl4-openssl-dev libsqlite3-dev libyaml-dev zlib1g-dev
|
@@ -18,10 +18,8 @@ before_script:
|
|
18
18
|
- export SSLYZE_PATH="/home/travis/build/gauntlt/gauntlt/vendor/sslyze/sslyze_cli.py"
|
19
19
|
- export SQLMAP_PATH="/home/travis/build/gauntlt/gauntlt/vendor/sqlmap/sqlmap.py"
|
20
20
|
- 'cd vendor/Garmr && sudo python setup.py install && cd ../..'
|
21
|
-
- 'cd vendor &&
|
22
|
-
- export DIRB_WORDLISTS="/home/travis/build/gauntlt/gauntlt/vendor/
|
21
|
+
- 'cd vendor && tar xvfz dirb222.tar.gz > /dev/null && chmod -R 755 ./dirb222 && cd ./dirb222 && ./configure && make && sudo cp dirb /usr/local/bin/ && cd ..'
|
22
|
+
- export DIRB_WORDLISTS="/home/travis/build/gauntlt/gauntlt/vendor/dirb222/wordlists"
|
23
|
+
- 'wget $ARACHNI_URL && tar xzvf $ARACHNI-linux-x86_64.tar.gz > /dev/null && sudo ln -s $TRAVIS_BUILD_DIR/$ARACHNI/bin/* /usr/local/bin/'
|
23
24
|
notifications:
|
24
|
-
|
25
|
-
channels:
|
26
|
-
- "chat.freenode.net#gauntlt"
|
27
|
-
use_notice: true
|
25
|
+
slack: gauntlt:UEjUro5MQLFO1DwuETgUxb7u
|
data/README.md
CHANGED
@@ -8,15 +8,24 @@ usable by devs, ops and security.
|
|
8
8
|
|
9
9
|
## PROJECT STATUS
|
10
10
|
|
11
|
-
Gauntlt is
|
12
|
-
|
13
|
-
|
11
|
+
As of 2018, Gauntlt is re-launching development efforts and building a commmunity
|
12
|
+
of practice. Join us on the [gauntlt slack channel](http://bit.ly/2EU9yGh). We are
|
13
|
+
hoping to extend gauntlt functionality, add attack adapters and buildup a library
|
14
|
+
of sharable attacks that fit everyone's needs. This isn't just for ruby developers,
|
15
|
+
we need feedback and contributions from security experts and people with experience
|
16
|
+
running gauntlt in build pipelines. Join us!
|
14
17
|
|
15
|
-
|
16
|
-
|
18
|
+
We welcome feedback and contributions. Please file issues via
|
19
|
+
github and follow the project on twitter: [@gauntlt](https://twitter.com/gauntlt).
|
20
|
+
|
21
|
+
Have questions? Feel free to open a ticket, but we would prefer you find us
|
22
|
+
on the [gauntlt slack channel](http://bit.ly/2EU9yGh) (gauntlt.slack.com).
|
17
23
|
|
18
24
|
## GET STARTED
|
19
25
|
|
26
|
+
You might want also take a look at [gauntlt-docker](https://github.com/gauntlt/gauntlt-docker)
|
27
|
+
which has gauntlt and a few attack tools all grouped into one container.
|
28
|
+
|
20
29
|
Note: if you are new to gauntlt, have a look at
|
21
30
|
[gauntlt-starter-kit](https://github.com/gauntlt/gauntlt-starter-kit), it is
|
22
31
|
the easiest way to get up and running.
|
@@ -89,11 +98,14 @@ example on gauntlt.org)
|
|
89
98
|
|
90
99
|
Gauntlt includes attack adapters for the following tools:
|
91
100
|
|
101
|
+
* [arachni] [arachni]
|
92
102
|
* [curl] [curl]
|
103
|
+
* [dirb] [dirb]
|
104
|
+
* [Garmr] [garmr]
|
105
|
+
* [heartbleed] [heartbleed]
|
93
106
|
* [nmap] [nmap]
|
94
|
-
* [sslyze] [sslyze]
|
95
107
|
* [sqlmap] [sqlmap]
|
96
|
-
* [
|
108
|
+
* [sslyze] [sslyze]
|
97
109
|
|
98
110
|
You will need to install each tool yourself before you can use it with gauntlt.
|
99
111
|
However, if you try to use a tool that is not installed or that gauntlt cannot
|
@@ -153,7 +165,7 @@ Feature: Attack with kindness
|
|
153
165
|
|
154
166
|
## FOR DEVELOPERS
|
155
167
|
|
156
|
-
NOTE: We currently use `ruby
|
168
|
+
NOTE: We currently use `ruby 2.3.4` for development and testing.
|
157
169
|
|
158
170
|
1. Clone the git repo and get the submodules
|
159
171
|
|
@@ -197,18 +209,19 @@ NOTE: We currently use `ruby 1.9.3` and `JRuby 1.7.0` for development and testin
|
|
197
209
|
|
198
210
|
## ROADMAP
|
199
211
|
|
200
|
-
Gauntlt
|
212
|
+
Gauntlt has been steady for some time now, but we are working on some new features. Join us on slack for more info.
|
213
|
+
|
214
|
+
We appreciate your suggestions and bug reports. We aim to be very responsive and friendly while adhering to a consistent design based on minimalism, simplicity and extensibility.
|
201
215
|
|
202
216
|
## LICENSE
|
203
217
|
|
204
218
|
gauntlt is licensed under The MIT License. See the LICENSE file in the repo or visit [gauntlt.mit-license.org](http://gauntlt.mit-license.org/) for details.
|
205
219
|
|
220
|
+
[arachni]: http://www.arachni-scanner.com/
|
206
221
|
[curl]: http://curl.haxx.se
|
222
|
+
[dirb]: http://dirb.sourceforge.net/
|
223
|
+
[garmr]: https://github.com/mozilla/Garmr
|
224
|
+
[heartbleed]: https://github.com/FiloSottile/Heartbleed
|
207
225
|
[nmap]: http://nmap.org
|
208
226
|
[sslyze]: https://github.com/iSECPartners/sslyze
|
209
227
|
[sqlmap]: http://sqlmap.org
|
210
|
-
[garmr]: https://github.com/mozilla/Garmr
|
211
|
-
|
212
|
-
|
213
|
-
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/gauntlt/gauntlt/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
|
214
|
-
|
data/bin/gauntlt
CHANGED
@@ -28,6 +28,8 @@ EOS
|
|
28
28
|
|
29
29
|
opt :format, "Available formats: html, json, junit, progress",
|
30
30
|
:type => String
|
31
|
+
opt :outfile, "Pipe run results to file",
|
32
|
+
:type => String
|
31
33
|
end
|
32
34
|
|
33
35
|
opts[:path] = if ARGV.empty?
|
@@ -50,6 +52,6 @@ elsif opts[:allsteps]
|
|
50
52
|
puts "\nGauntlt Attack Steps"
|
51
53
|
puts all_step_defs[:gauntlt].sort
|
52
54
|
else
|
53
|
-
Gauntlt.attack( opts[:path], opts[:tags].join(','), opts[:format] )
|
55
|
+
Gauntlt.attack( opts[:path], opts[:tags].join(','), opts[:format], opts[:outfile] )
|
54
56
|
end
|
55
57
|
|
File without changes
|
data/gauntlt.gemspec
CHANGED
@@ -16,16 +16,17 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.files.reject! { |fn| fn.include? "vendor" }
|
17
17
|
s.files.reject! { |fn| fn.include? "examples" }
|
18
18
|
s.files.reject! { |fn| fn.include? "ready_to_rumble" }
|
19
|
+
s.files.reject! { |fn| fn.include? "install_gauntlt_deps" }
|
19
20
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
21
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
22
|
s.require_paths = ["lib"]
|
22
23
|
|
23
|
-
s.add_development_dependency 'rake', '~>
|
24
|
-
s.add_development_dependency 'arachni', '= 1.4'
|
24
|
+
s.add_development_dependency 'rake', '~> 12.2', '>= 12.2.1'
|
25
25
|
|
26
|
+
s.add_runtime_dependency 'ffi', '= 1.9.18'
|
26
27
|
s.add_runtime_dependency 'cucumber', '= 1.3.20'
|
27
|
-
s.add_runtime_dependency 'aruba', '= 0.
|
28
|
-
s.add_runtime_dependency 'nokogiri', '~> 1.
|
29
|
-
s.add_runtime_dependency 'trollop', '~> 2.1.2'
|
28
|
+
s.add_runtime_dependency 'aruba', '= 0.7.4'
|
29
|
+
s.add_runtime_dependency 'nokogiri', '~> 1.8', '>= 1.8.1'
|
30
|
+
s.add_runtime_dependency 'trollop', '~> 2.1', '>= 2.1.2'
|
30
31
|
|
31
32
|
end
|
data/lib/gauntlt.rb
CHANGED
data/lib/gauntlt/attack.rb
CHANGED
@@ -4,8 +4,8 @@ module Gauntlt
|
|
4
4
|
class Attack
|
5
5
|
attr_accessor :runtime
|
6
6
|
|
7
|
-
def initialize(path, tags=[], format="")
|
8
|
-
self.runtime = Runtime.new(path, tags, format)
|
7
|
+
def initialize(path, tags=[], format="", outfile="")
|
8
|
+
self.runtime = Runtime.new(path, tags, format, outfile)
|
9
9
|
end
|
10
10
|
|
11
11
|
def run
|
@@ -7,17 +7,17 @@ module Gauntlt
|
|
7
7
|
def gauntlt_attack_aliases
|
8
8
|
@gauntlt_attack_aliases ||= {}
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def load_attack_alias(alias_name, *version)
|
12
12
|
@attack_steps = import_attack_aliases
|
13
13
|
@alias_versioned = ""
|
14
|
-
|
14
|
+
@alias_versioned << alias_name
|
15
15
|
if version.length > 0
|
16
16
|
@alias_versioned << "-"
|
17
17
|
@alias_versioned << version[0]
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
print "Checking #{@alias_versioned} and #{alias_name}"
|
21
21
|
|
22
22
|
if @attack_steps.has_key?(@alias_versioned)
|
23
23
|
@attack_steps[@alias_versioned]
|
@@ -26,5 +26,9 @@
|
|
26
26
|
"arachni-xss_with_options" : { "command" : "arachni --checks=xss* --scope-directory-depth-limit=<depth> --scope-page-limit=<link_count> --scope-auto-redundant=<auto_redundant> <url>",
|
27
27
|
"description" : "This is a scan for cross site scripting (xss) that runs all the xss modules in arachni. This requires to specify several options for the scan. The arachni wiki has information on what these options represent but generally as you increase their values, the scan takes longer to run. \nThe wiki for arachni is available here > https://github.com/Arachni/arachni/wiki/Command-line-user-interface. \nThe depth option is described here: https://github.com/Arachni/arachni/wiki/Command-line-user-interface#wiki-depth \nThe link_count option is described here: https://github.com/Arachni/arachni/wiki/Command-line-user-interface#wiki-link-count \nThe auto_redundant option is described here: https://github.com/Arachni/arachni/wiki/Command-line-user-interface#wiki-auto-redundant",
|
28
28
|
"requires" : [ "<url>", "<depth>", "<link_count>", "<auto_redundant>" ]
|
29
|
+
},
|
30
|
+
"arachni-allmediumandhigher" : { "command" : "arachni --checks=*,-interesting_responses,-webdav,-localstart_asp,-directory_listing,-private_ip,-form_upload,-cvs_svn_users,-captcha,-http_only_cookies,-html_objects,-emails,-cookie_set_for_parent_domain,-common_files,-allowed_methods <url>",
|
31
|
+
"description" : "This scan performs all checks except the checks that are low or informational only. We did leave in insecure_cookies even though this originally was an informational risk.",
|
32
|
+
"requires" : [ "<url>" ]
|
29
33
|
}
|
30
34
|
}
|
@@ -1,9 +1,42 @@
|
|
1
|
-
{
|
2
|
-
|
3
|
-
|
1
|
+
{
|
2
|
+
"nmap-fast" : {
|
3
|
+
"command" : "nmap -F <host>",
|
4
|
+
"description" : "This is a fast nmap scan that should run in 10 seconds or less on most networks. It looks for the most common ports and services.",
|
5
|
+
"requires" : [ "<host>" ]
|
4
6
|
},
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
"nmap-single_port" : {
|
8
|
+
"command" : "nmap -p<port> <host>",
|
9
|
+
"description" : "This checks a single port only",
|
10
|
+
"requires" : [ "<host>", "<port>" ]
|
11
|
+
},
|
12
|
+
"nmap-all_tcp" : {
|
13
|
+
"command" : "nmap -Pn -p 1-65534 <host>",
|
14
|
+
"description" : "This checks all TCP ports",
|
15
|
+
"requires" : [ "<host>" ]
|
16
|
+
},
|
17
|
+
"nmap-scan_hostnames" : {
|
18
|
+
"command" : "nmap -sL <host>/24",
|
19
|
+
"description" : "This runs an ARP scan, no port scan",
|
20
|
+
"requires" : [ "<host>" ]
|
21
|
+
},
|
22
|
+
"nmap-arp_scan_network_no_portscan" : {
|
23
|
+
"command" : "nmap -PR -sn <host>/24",
|
24
|
+
"description" : "This runs an ARP scan, no port scan",
|
25
|
+
"requires" : [ "<host>" ]
|
26
|
+
},
|
27
|
+
"nmap-arp_scan_network_with_portscan" : {
|
28
|
+
"command" : "nmap -PR <host>/24",
|
29
|
+
"description" : "This runs an ARP scan, with a port scan",
|
30
|
+
"requires" : [ "<host>" ]
|
31
|
+
},
|
32
|
+
"nmap-portscan_tcp_udp_top100" : {
|
33
|
+
"command" : "nmap -sTU --top-ports 100 <host>",
|
34
|
+
"description" : "This runs a TCP and UDP port scan, top 100",
|
35
|
+
"requires" : [ "<host>" ]
|
36
|
+
},
|
37
|
+
"nmap-portscan_tcp_udp_top1000" : {
|
38
|
+
"command" : "nmap -sTU --top-ports 1000 <host>",
|
39
|
+
"description" : "This runs a TCP and UDP port scan, top 1000",
|
40
|
+
"requires" : [ "<host>" ]
|
8
41
|
}
|
9
42
|
}
|
data/lib/gauntlt/runtime.rb
CHANGED
@@ -9,13 +9,14 @@ module Gauntlt
|
|
9
9
|
class NoFilesFound < StandardError; end
|
10
10
|
class ExecutionFailed < StandardError; end
|
11
11
|
|
12
|
-
attr_accessor :path, :attack_files, :tags, :format
|
12
|
+
attr_accessor :path, :attack_files, :tags, :format, :outfile
|
13
13
|
|
14
|
-
def initialize(path, tags=[], format="")
|
14
|
+
def initialize(path, tags=[], format="", outfile="")
|
15
15
|
self.path = path
|
16
16
|
self.attack_files = self.class.attack_files_for(path)
|
17
17
|
self.tags = tags
|
18
18
|
self.format = format
|
19
|
+
self.outfile = outfile
|
19
20
|
raise NoFilesFound.new("No files found in path: #{path}") if attack_files.empty?
|
20
21
|
end
|
21
22
|
|
@@ -23,7 +24,7 @@ module Gauntlt
|
|
23
24
|
args = attack_files + ['--strict', '--no-snippets', '--require', self.class.adapters_dir]
|
24
25
|
args += ['--tags', tags] unless tags.empty?
|
25
26
|
args += ['--format', format] unless format.nil?
|
26
|
-
|
27
|
+
args += ['--out', outfile] unless outfile.nil?
|
27
28
|
Cucumber::Cli::Main.new(args)
|
28
29
|
end
|
29
30
|
|
data/lib/gauntlt/version.rb
CHANGED
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: 1.0.
|
4
|
+
version: 1.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Wickett
|
@@ -9,36 +9,42 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: '12.2'
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 12.2.1
|
21
24
|
type: :development
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
|
-
- - ~>
|
28
|
+
- - "~>"
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '12.2'
|
31
|
+
- - ">="
|
26
32
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
33
|
+
version: 12.2.1
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
35
|
+
name: ffi
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
31
37
|
requirements:
|
32
38
|
- - '='
|
33
39
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
35
|
-
type: :
|
40
|
+
version: 1.9.18
|
41
|
+
type: :runtime
|
36
42
|
prerelease: false
|
37
43
|
version_requirements: !ruby/object:Gem::Requirement
|
38
44
|
requirements:
|
39
45
|
- - '='
|
40
46
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
47
|
+
version: 1.9.18
|
42
48
|
- !ruby/object:Gem::Dependency
|
43
49
|
name: cucumber
|
44
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,40 +65,52 @@ dependencies:
|
|
59
65
|
requirements:
|
60
66
|
- - '='
|
61
67
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.
|
68
|
+
version: 0.7.4
|
63
69
|
type: :runtime
|
64
70
|
prerelease: false
|
65
71
|
version_requirements: !ruby/object:Gem::Requirement
|
66
72
|
requirements:
|
67
73
|
- - '='
|
68
74
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
75
|
+
version: 0.7.4
|
70
76
|
- !ruby/object:Gem::Dependency
|
71
77
|
name: nokogiri
|
72
78
|
requirement: !ruby/object:Gem::Requirement
|
73
79
|
requirements:
|
74
|
-
- - ~>
|
80
|
+
- - "~>"
|
75
81
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.
|
82
|
+
version: '1.8'
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.8.1
|
77
86
|
type: :runtime
|
78
87
|
prerelease: false
|
79
88
|
version_requirements: !ruby/object:Gem::Requirement
|
80
89
|
requirements:
|
81
|
-
- - ~>
|
90
|
+
- - "~>"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '1.8'
|
93
|
+
- - ">="
|
82
94
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.
|
95
|
+
version: 1.8.1
|
84
96
|
- !ruby/object:Gem::Dependency
|
85
97
|
name: trollop
|
86
98
|
requirement: !ruby/object:Gem::Requirement
|
87
99
|
requirements:
|
88
|
-
- - ~>
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '2.1'
|
103
|
+
- - ">="
|
89
104
|
- !ruby/object:Gem::Version
|
90
105
|
version: 2.1.2
|
91
106
|
type: :runtime
|
92
107
|
prerelease: false
|
93
108
|
version_requirements: !ruby/object:Gem::Requirement
|
94
109
|
requirements:
|
95
|
-
- - ~>
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '2.1'
|
113
|
+
- - ">="
|
96
114
|
- !ruby/object:Gem::Version
|
97
115
|
version: 2.1.2
|
98
116
|
description: Using standard Gherkin language to define security tests, gauntlt happily
|
@@ -105,9 +123,9 @@ executables:
|
|
105
123
|
extensions: []
|
106
124
|
extra_rdoc_files: []
|
107
125
|
files:
|
108
|
-
- .gitignore
|
109
|
-
- .gitmodules
|
110
|
-
- .travis.yml
|
126
|
+
- ".gitignore"
|
127
|
+
- ".gitmodules"
|
128
|
+
- ".travis.yml"
|
111
129
|
- Gemfile
|
112
130
|
- LICENSE
|
113
131
|
- README.md
|
@@ -117,7 +135,7 @@ files:
|
|
117
135
|
- config/services.rb
|
118
136
|
- config/warble.rb
|
119
137
|
- features/attack.feature
|
120
|
-
- features/attacks/arachni.
|
138
|
+
- features/attacks/arachni.broken
|
121
139
|
- features/attacks/curl.feature
|
122
140
|
- features/attacks/dirb.feature
|
123
141
|
- features/attacks/garmr.feature
|
@@ -137,7 +155,6 @@ files:
|
|
137
155
|
- gauntlt.gemspec
|
138
156
|
- gem_tasks/cucumber.rake
|
139
157
|
- gem_tasks/test.rake
|
140
|
-
- install_gauntlt_deps.sh
|
141
158
|
- lib/gauntlt.rb
|
142
159
|
- lib/gauntlt/attack.rb
|
143
160
|
- lib/gauntlt/attack_adapters/arachni.rb
|
@@ -180,23 +197,23 @@ require_paths:
|
|
180
197
|
- lib
|
181
198
|
required_ruby_version: !ruby/object:Gem::Requirement
|
182
199
|
requirements:
|
183
|
-
- -
|
200
|
+
- - ">="
|
184
201
|
- !ruby/object:Gem::Version
|
185
202
|
version: '0'
|
186
203
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
204
|
requirements:
|
188
|
-
- -
|
205
|
+
- - ">="
|
189
206
|
- !ruby/object:Gem::Version
|
190
207
|
version: '0'
|
191
208
|
requirements: []
|
192
209
|
rubyforge_project:
|
193
|
-
rubygems_version: 2.
|
210
|
+
rubygems_version: 2.6.14
|
194
211
|
signing_key:
|
195
212
|
specification_version: 4
|
196
213
|
summary: behaviour-driven security using cucumber
|
197
214
|
test_files:
|
198
215
|
- features/attack.feature
|
199
|
-
- features/attacks/arachni.
|
216
|
+
- features/attacks/arachni.broken
|
200
217
|
- features/attacks/curl.feature
|
201
218
|
- features/attacks/dirb.feature
|
202
219
|
- features/attacks/garmr.feature
|
data/install_gauntlt_deps.sh
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
# check for system variables
|
4
|
-
if [ -z $HOME_FOLDER ]; then
|
5
|
-
HOME_FOLDER=$HOME
|
6
|
-
echo -e "INFO: setting \$HOME_FOLDER to $HOME";
|
7
|
-
fi
|
8
|
-
if [ -z $USER_NAME ]; then
|
9
|
-
USER_NAME=`whoami`
|
10
|
-
echo -e "INFO: setting \$USER_NAME to `whoami`";
|
11
|
-
fi
|
12
|
-
|
13
|
-
# install system dependencies
|
14
|
-
apt-get update
|
15
|
-
apt-get install -y build-essential git libxml2 libxml2-dev \
|
16
|
-
libxslt-dev libcurl4-openssl-dev libsqlite3-dev libyaml-dev zlib1g-dev \
|
17
|
-
python-dev python-pip python-setuptools curl nmap w3af-console wget
|
18
|
-
|
19
|
-
|
20
|
-
# install Ruby rvm, ruby 2.3.0 w/ json patch
|
21
|
-
# @see https://github.com/rbenv/ruby-build/issues/834
|
22
|
-
gpg --keyserver hkp://keys.gnupg.net --recv-keys \
|
23
|
-
409B6B1796C275462A1703113804BB82D39DC0E3
|
24
|
-
curl -sSL https://get.rvm.io | bash -s stable
|
25
|
-
source /etc/profile.d/rvm.sh
|
26
|
-
echo "source /etc/profile.d/rvm.sh" >> ~/.bashrc
|
27
|
-
rvm use 2.3.0 --default --install --fuzzy
|
28
|
-
|
29
|
-
# install gauntlt, from source
|
30
|
-
GAUNTLT_DIR=`pwd` # user current working directory, wherever you install Gauntlt
|
31
|
-
gem install bundler
|
32
|
-
bundle update
|
33
|
-
git submodule update --init --recursive --force
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
# install sslyze
|
38
|
-
if ! type "sslyze" > /dev/null 2>&1; then
|
39
|
-
cd $GAUNTLT_DIR/vendor/sslyze
|
40
|
-
pip install -r requirements.txt
|
41
|
-
ln -s `pwd`/sslyze_cli.py /usr/bin/sslyze
|
42
|
-
fi
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
# install sqlmap
|
47
|
-
if ! type "sqlmap" > /dev/null 2>&1; then
|
48
|
-
cd $GAUNTLT_DIR/vendor/sqlmap
|
49
|
-
ln -s `pwd`/sqlmap.py /usr/bin/sqlmap
|
50
|
-
fi
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
# install Go, Heartbleed
|
55
|
-
if ! type "Heartbleed" > /dev/null 2>&1; then
|
56
|
-
apt-get install -y golang
|
57
|
-
export GOPATH=$HOME_FOLDER/go
|
58
|
-
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
59
|
-
cat << 'EOF' >> $HOME_FOLDER/.bashrc
|
60
|
-
|
61
|
-
# configure go pathways
|
62
|
-
export GOPATH=$HOME/go
|
63
|
-
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
64
|
-
EOF
|
65
|
-
go get github.com/FiloSottile/Heartbleed
|
66
|
-
fi
|
67
|
-
|
68
|
-
|
69
|
-
# install dirb
|
70
|
-
if ! type "dirb" > /dev/null 2>&1; then
|
71
|
-
cd $GAUNTLT_DIR/vendor
|
72
|
-
wget -q http://downloads.sourceforge.net/project/dirb/dirb/2.22/dirb222.tar.gz
|
73
|
-
tar -zxf dirb222.tar.gz
|
74
|
-
mv dirb222 dirb
|
75
|
-
chmod -R +x ./dirb
|
76
|
-
cd dirb
|
77
|
-
chown -R $(whoami) .
|
78
|
-
bash ./configure
|
79
|
-
make
|
80
|
-
ln -s `pwd`/dirb /usr/bin/dirb
|
81
|
-
cd $GAUNTLT_DIR/vendor/dirb/wordlists
|
82
|
-
export DIRB_WORDLISTS=`pwd`
|
83
|
-
else
|
84
|
-
export DIRB_WORDLISTS=`locate dirb | grep "/dirb/wordlists$"`
|
85
|
-
fi
|
86
|
-
|
87
|
-
|
88
|
-
# install Garmr, from source
|
89
|
-
if ! type "garmr" > /dev/null 2>&1; then
|
90
|
-
cd $GAUNTLT_DIR/vendor/Garmr
|
91
|
-
python setup.py install
|
92
|
-
fi
|
93
|
-
|
94
|
-
|
95
|
-
# install Arachni, from a gem
|
96
|
-
if ! type "arachni" > /dev/null 2>&1; then
|
97
|
-
gem install arachni -v 1.0.6
|
98
|
-
gem install service_manager
|
99
|
-
fi
|
100
|
-
|
101
|
-
|
102
|
-
# start gruyere
|
103
|
-
cd $GAUNTLT_DIR/vendor/gruyere
|
104
|
-
bash ./manual_launch.sh
|
105
|
-
|
106
|
-
# set the environmental variables
|
107
|
-
export SSLYZE_PATH=`which sslyze`
|
108
|
-
export SQLMAP_PATH=`which sqlmap`
|
109
|
-
|
110
|
-
# save environmental variables to .bashrc
|
111
|
-
cat << EOF >> $HOME_FOLDER/.bashrc
|
112
|
-
|
113
|
-
# configure environmental variables for Gauntlt
|
114
|
-
export DIRB_WORDLISTS=`locate dirb | grep "/dirb/wordlists$"`
|
115
|
-
export SSLYZE_PATH=`which sslyze`
|
116
|
-
export SQLMAP_PATH=`which sqlmap`
|
117
|
-
EOF
|
118
|
-
|
119
|
-
# chown the environment
|
120
|
-
cd $GAUNTLT_DIR
|
121
|
-
chown -R $USER_NAME ./
|