yawast 0.5.2 → 0.6.0.beta1
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 +4 -4
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +5 -0
- data/lib/scanner/plugins/dns/caa.rb +51 -0
- data/lib/scanner/plugins/dns/generic.rb +3 -0
- data/lib/scanner/plugins/http/directory_search.rb +9 -0
- data/lib/scanner/plugins/http/file_presence.rb +1 -4
- data/lib/shared/http.rb +19 -0
- data/lib/version.rb +1 -1
- data/yawast.gemspec +1 -0
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71eb6eb4ed8a87d84f26c92c4ec55fc685dd4a1e
|
4
|
+
data.tar.gz: ea0bfebab8bce5379d26d3bdfee53f5cf6fa2a23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb8c1f78bd2768b39879ecac338fddfc926aeea8f949d4503dc5ceebc7914c3084d1472b9878a42542a6cf951a62131e0475f80e5fe238d30ae8723b7c83578d
|
7
|
+
data.tar.gz: 7e0225ef254fca5cb47fb75f0fa687edca356267e16a0bdec33a71eefb0809194b7145c9dabc74b012bf0354ef8e096713f7552ed7ff82ff8c8b5064382f6b9e
|
data/.rubocop.yml
CHANGED
@@ -81,7 +81,7 @@ Lint/EnsureReturn:
|
|
81
81
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-return-ensure'
|
82
82
|
Enabled: true
|
83
83
|
|
84
|
-
|
84
|
+
Security/Eval:
|
85
85
|
Description: 'The use of eval represents a serious security risk.'
|
86
86
|
Enabled: true
|
87
87
|
|
@@ -716,7 +716,7 @@ Style/LineEndConcatenation:
|
|
716
716
|
line end.
|
717
717
|
Enabled: false
|
718
718
|
|
719
|
-
Style/
|
719
|
+
Style/MethodCallWithoutArgsParentheses:
|
720
720
|
Description: 'Do not use parentheses for method calls with no arguments.'
|
721
721
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-args-no-parens'
|
722
722
|
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.6.0 - In Development
|
2
|
+
|
3
|
+
* [#109](https://github.com/adamcaudill/yawast/issues/109) - DNS CAA Support
|
4
|
+
* [#113](https://github.com/adamcaudill/yawast/issues/113) - Better False Positive Detection For Directory Search
|
5
|
+
|
1
6
|
## 0.5.2 - 2017-07-13
|
2
7
|
|
3
8
|
* [#107](https://github.com/adamcaudill/yawast/issues/107) - Current version check
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'dnsruby'
|
2
|
+
include Dnsruby
|
3
|
+
|
4
|
+
module Yawast
|
5
|
+
module Scanner
|
6
|
+
module Plugins
|
7
|
+
module DNS
|
8
|
+
class CAA
|
9
|
+
def self.caa_info(uri)
|
10
|
+
# force DNS resolver to something that works
|
11
|
+
res = Resolver.new({:nameserver => ['8.8.8.8']})
|
12
|
+
|
13
|
+
domain = uri.host.to_s
|
14
|
+
|
15
|
+
#BUG: this is a basic implementation that ignores CNAMEs/etc
|
16
|
+
while domain != '' do
|
17
|
+
begin
|
18
|
+
ans = res.query(domain, 'CAA')
|
19
|
+
|
20
|
+
# check if we have any response
|
21
|
+
if ans.answer.count > 0
|
22
|
+
ans.answer.each do |rec|
|
23
|
+
# check for CNAME first
|
24
|
+
if rec.type == 'CNAME'
|
25
|
+
Yawast::Utilities.puts_error "\t\tCAA (#{domain}): CNAME Found: Not Currently Supported"
|
26
|
+
else
|
27
|
+
# check for RDATA
|
28
|
+
if rec.rdata != nil
|
29
|
+
Yawast::Utilities.puts_info "\t\tCAA (#{domain}): #{rec.rdata}"
|
30
|
+
else
|
31
|
+
Yawast::Utilities.puts_error "\t\tCAA (#{domain}): Invalid Response: #{ans.answer}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
else
|
36
|
+
Yawast::Utilities.puts_info "\t\tCAA (#{domain}): No Records Found"
|
37
|
+
end
|
38
|
+
|
39
|
+
rescue => e
|
40
|
+
Yawast::Utilities.puts_error "\t\tCAA (#{domain}): #{e.message}"
|
41
|
+
end
|
42
|
+
|
43
|
+
# strip the leading element off the domain
|
44
|
+
domain = domain.partition('.').last
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -1,9 +1,18 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
|
1
3
|
module Yawast
|
2
4
|
module Scanner
|
3
5
|
module Plugins
|
4
6
|
module Http
|
5
7
|
class DirectorySearch
|
6
8
|
def self.search(uri, recursive, list_redirects, search_list = nil)
|
9
|
+
#first, we need to see if the site responds to 404 in a reasonable way
|
10
|
+
unless Yawast::Shared::Http.check_not_found(uri, false)
|
11
|
+
puts 'Site does not respond properly to non-existent directory requests; skipping some checks.'
|
12
|
+
|
13
|
+
return
|
14
|
+
end
|
15
|
+
|
7
16
|
@recursive = recursive
|
8
17
|
@list_redirects = list_redirects
|
9
18
|
|
@@ -27,10 +27,7 @@ module Yawast
|
|
27
27
|
|
28
28
|
def self.check_all(uri, common_files)
|
29
29
|
#first, we need to see if the site responds to 404 in a reasonable way
|
30
|
-
|
31
|
-
fake_uri.path = "/#{SecureRandom.hex}/"
|
32
|
-
if Yawast::Shared::Http.get_status_code(fake_uri) != '404'
|
33
|
-
#crazy 404 handling
|
30
|
+
unless Yawast::Shared::Http.check_not_found(uri, true)
|
34
31
|
puts 'Site does not respond properly to non-existent file requests; skipping some checks.'
|
35
32
|
|
36
33
|
return
|
data/lib/shared/http.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
|
1
3
|
module Yawast
|
2
4
|
module Shared
|
3
5
|
class Http
|
@@ -62,6 +64,23 @@ module Yawast
|
|
62
64
|
req
|
63
65
|
end
|
64
66
|
|
67
|
+
def self.check_not_found(uri, file)
|
68
|
+
fake_uri = uri.copy
|
69
|
+
|
70
|
+
if file
|
71
|
+
fake_uri.path = "/#{SecureRandom.hex}.html"
|
72
|
+
else
|
73
|
+
fake_uri.path = "/#{SecureRandom.hex}/"
|
74
|
+
end
|
75
|
+
|
76
|
+
if Yawast::Shared::Http.get_status_code(fake_uri) != '404'
|
77
|
+
#crazy 404 handling
|
78
|
+
return false
|
79
|
+
end
|
80
|
+
|
81
|
+
return true
|
82
|
+
end
|
83
|
+
|
65
84
|
# noinspection RubyStringKeysInHashInspection
|
66
85
|
def self.get_headers(extra_headers = nil)
|
67
86
|
if @cookie == nil
|
data/lib/version.rb
CHANGED
data/yawast.gemspec
CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_runtime_dependency 'ipaddress', '~> 0.8'
|
23
23
|
s.add_runtime_dependency 'public_suffix', '~> 2.0'
|
24
24
|
s.add_runtime_dependency 'sslshake', '~> 1.1'
|
25
|
+
s.add_runtime_dependency 'dnsruby', '~> 1.60'
|
25
26
|
|
26
27
|
s.bindir = 'bin'
|
27
28
|
s.files = `git ls-files`.split("\n")
|
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.
|
4
|
+
version: 0.6.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Caudill
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ssllabs
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '1.1'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: dnsruby
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.60'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.60'
|
139
153
|
description: YAWAST is an application meant to simplify initial analysis and information
|
140
154
|
gathering for penetration testers and security auditors.
|
141
155
|
email: adam@adamcaudill.com
|
@@ -173,6 +187,7 @@ files:
|
|
173
187
|
- lib/scanner/iis.rb
|
174
188
|
- lib/scanner/nginx.rb
|
175
189
|
- lib/scanner/php.rb
|
190
|
+
- lib/scanner/plugins/dns/caa.rb
|
176
191
|
- lib/scanner/plugins/dns/generic.rb
|
177
192
|
- lib/scanner/plugins/http/directory_search.rb
|
178
193
|
- lib/scanner/plugins/http/file_presence.rb
|
@@ -225,9 +240,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
225
240
|
version: '0'
|
226
241
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
242
|
requirements:
|
228
|
-
- - "
|
243
|
+
- - ">"
|
229
244
|
- !ruby/object:Gem::Version
|
230
|
-
version:
|
245
|
+
version: 1.3.1
|
231
246
|
requirements: []
|
232
247
|
rubyforge_project: yawast
|
233
248
|
rubygems_version: 2.4.8
|