intrigue-ident 0.4 → 0.6
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/Gemfile +0 -1
- data/Gemfile.lock +0 -6
- data/data/logos/apache.png +0 -0
- data/data/logos/generic.png +0 -0
- data/data/logos/oracle_java.png +0 -0
- data/data/logos/php.png +0 -0
- data/data/logos/varnish.png +0 -0
- data/intrigue-ident.gemspec +2 -2
- data/lib/checks/acquia.rb +26 -0
- data/lib/checks/adobe.rb +38 -0
- data/lib/checks/akamai.rb +6 -4
- data/lib/checks/amazon.rb +54 -8
- data/lib/checks/apache.rb +113 -0
- data/lib/checks/aruba.rb +6 -3
- data/lib/checks/atlassian.rb +46 -28
- data/lib/checks/automattic.rb +189 -0
- data/lib/checks/axis.rb +24 -0
- data/lib/checks/banu.rb +28 -0
- data/lib/checks/base.rb +58 -0
- data/lib/checks/checkpoint.rb +55 -0
- data/lib/checks/chef.rb +16 -12
- data/lib/checks/cisco.rb +85 -12
- data/lib/checks/citrix.rb +81 -6
- data/lib/checks/cloudflare.rb +40 -30
- data/lib/checks/cpanel.rb +8 -6
- data/lib/checks/craft.rb +25 -0
- data/lib/checks/django.rb +8 -6
- data/lib/checks/docuwiki.rb +25 -0
- data/lib/checks/drupal.rb +25 -8
- data/lib/checks/f5.rb +35 -7
- data/lib/checks/fastly.rb +22 -7
- data/lib/checks/generic.rb +34 -6
- data/lib/checks/gitlab.rb +12 -6
- data/lib/checks/google.rb +19 -6
- data/lib/checks/grafana.rb +8 -6
- data/lib/checks/groovy.rb +24 -0
- data/lib/checks/heroku.rb +27 -0
- data/lib/checks/hp.rb +25 -0
- data/lib/checks/ibm.rb +77 -0
- data/lib/checks/ivanti.rb +27 -0
- data/lib/checks/jamf.rb +26 -0
- data/lib/checks/jekyll.rb +28 -0
- data/lib/checks/jenkins.rb +24 -18
- data/lib/checks/jive.rb +25 -0
- data/lib/checks/jobvite.rb +25 -0
- data/lib/checks/joomla.rb +9 -6
- data/lib/checks/jupyter.rb +26 -0
- data/lib/checks/lighttpd.rb +28 -0
- data/lib/checks/limesuvey.rb +8 -6
- data/lib/checks/lithium.rb +15 -11
- data/lib/checks/lotus.rb +27 -0
- data/lib/checks/magento.rb +8 -6
- data/lib/checks/mailchimp.rb +25 -0
- data/lib/checks/mcafee.rb +8 -6
- data/lib/checks/mediawiki.rb +31 -32
- data/lib/checks/microsoft.rb +240 -34
- data/lib/checks/microtik.rb +27 -0
- data/lib/checks/nagios.rb +8 -6
- data/lib/checks/new_relic.rb +25 -0
- data/lib/checks/nginx.rb +40 -0
- data/lib/checks/okta.rb +25 -0
- data/lib/checks/ookla.rb +27 -0
- data/lib/checks/openresty.rb +25 -0
- data/lib/checks/oracle.rb +208 -17
- data/lib/checks/palo_alto.rb +6 -4
- data/lib/checks/pantheon.rb +26 -0
- data/lib/checks/pardot.rb +8 -6
- data/lib/checks/perfectsense.rb +27 -0
- data/lib/checks/pfsense.rb +8 -9
- data/lib/checks/php.rb +41 -0
- data/lib/checks/phpmyadmin.rb +8 -6
- data/lib/checks/ping_identity.rb +27 -0
- data/lib/checks/pivotal.rb +24 -0
- data/lib/checks/plesk.rb +41 -0
- data/lib/checks/pulse_secure.rb +27 -0
- data/lib/checks/rabbitmq.rb +15 -11
- data/lib/checks/restlet.rb +28 -0
- data/lib/checks/ruckus_wireless.rb +24 -0
- data/lib/checks/sailpoint.rb +27 -0
- data/lib/checks/sap.rb +43 -0
- data/lib/checks/tableau.rb +26 -0
- data/lib/checks/team_city.rb +8 -6
- data/lib/checks/telerik.rb +23 -8
- data/lib/checks/varnish.rb +8 -11
- data/lib/checks/vmware.rb +38 -0
- data/lib/checks/webmin.rb +41 -0
- data/lib/checks/wp_engine.rb +10 -6
- data/lib/checks/yaws.rb +29 -0
- data/lib/checks/zeit.rb +28 -0
- data/lib/checks/zendesk.rb +39 -0
- data/lib/checks/zimbra.rb +24 -0
- data/lib/checks/zscaler.rb +28 -0
- data/{ident.rb → lib/intrigue-ident.rb} +66 -32
- data/lib/traverse_exceptions.rb +196 -0
- data/util/check.rb +20 -0
- data/util/list.rb +9 -0
- metadata +58 -9
- data/lib/checks/asp_net.rb +0 -70
- data/lib/checks/cloudfront.rb +0 -41
- data/lib/checks/spring.rb +0 -31
- data/lib/checks/tomcat.rb +0 -22
- data/lib/checks/wordpress.rb +0 -120
data/lib/checks/citrix.rb
CHANGED
@@ -3,17 +3,92 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Citrix < Intrigue::Ident::Check::Base
|
5
5
|
|
6
|
-
def generate_checks(
|
6
|
+
def generate_checks(url)
|
7
7
|
[
|
8
8
|
{
|
9
|
-
:
|
10
|
-
:
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "Citrix",
|
11
|
+
:product => "Netscaler Gateway",
|
12
|
+
:match_details => "Citrix Netscaler Gateway",
|
11
13
|
:tags => ["tech:vpn"],
|
12
14
|
:version => nil,
|
13
|
-
:
|
14
|
-
:
|
15
|
+
:match_type => :content_body,
|
16
|
+
:match_content => /<title>Netscaler Gateway/,
|
15
17
|
:hide => false,
|
16
|
-
:paths => ["#{
|
18
|
+
:paths => ["#{url}"]
|
19
|
+
},
|
20
|
+
{
|
21
|
+
:type => "application",
|
22
|
+
:vendor => "Citrix",
|
23
|
+
:product => "Netscaler Gateway",
|
24
|
+
:match_details => "(often) customized logon page - netscaler gateway",
|
25
|
+
:tags => ["tech:vpn"],
|
26
|
+
:version => nil,
|
27
|
+
:match_type => :content_body,
|
28
|
+
:match_content => /CTXMSAM_LogonFont/,
|
29
|
+
:hide => false,
|
30
|
+
:paths => ["#{url}"]
|
31
|
+
},
|
32
|
+
{
|
33
|
+
:type => "application",
|
34
|
+
:vendor => "Citrix",
|
35
|
+
:product => "Netscaler Gateway",
|
36
|
+
:match_details => "misspelled content-length header",
|
37
|
+
:tags => ["tech:vpn"],
|
38
|
+
:references => ["https://support.citrix.com/article/CTX211605"],
|
39
|
+
:version => nil,
|
40
|
+
:match_type => :content_headers,
|
41
|
+
:match_content => /^cteonnt-length:.*$/,
|
42
|
+
:hide => false,
|
43
|
+
:paths => ["#{url}"],
|
44
|
+
:examples => ["http://204.29.196.116:80"]
|
45
|
+
},
|
46
|
+
{
|
47
|
+
:type => "application",
|
48
|
+
:vendor => "Citrix",
|
49
|
+
:product => "Netscaler Gateway",
|
50
|
+
:match_details => "cookie",
|
51
|
+
:tags => ["tech:vpn"],
|
52
|
+
:references => ["https://support.citrix.com/article/CTX131488"],
|
53
|
+
:version => nil,
|
54
|
+
:match_type => :content_cookies,
|
55
|
+
:match_content => /citrix_ns_id=/,
|
56
|
+
:hide => false,
|
57
|
+
:paths => ["#{url}"],
|
58
|
+
:verify => ["dW5kZXJhcm1vdXIjSW50cmlndWU6OkVudGl0eTo6VXJpI2h0dHA6Ly8yMDQuMjkuMTk2LjEwMjo4MA=="],
|
59
|
+
:examples => ["http://204.29.196.102:80"]
|
60
|
+
},
|
61
|
+
{
|
62
|
+
:type => "application",
|
63
|
+
:vendor => "Citrix",
|
64
|
+
:product => "XenServer",
|
65
|
+
:match_details => "page title",
|
66
|
+
:tags => ["tech:hypervisor"],
|
67
|
+
:references => [""],
|
68
|
+
:version => nil,
|
69
|
+
:dynamic_version => lambda { |x| _first_body_capture(x,/<title>XenServer (.*?)<\/title>/) },
|
70
|
+
:match_type => :content_body,
|
71
|
+
:match_content => /<title>XenServer/,
|
72
|
+
:hide => false,
|
73
|
+
:paths => ["#{url}"],
|
74
|
+
:verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwOi8vMTU4Ljg1LjE3My4zNzo4MA=="],
|
75
|
+
:examples => ["http://158.85.173.37:80"]
|
76
|
+
},
|
77
|
+
{
|
78
|
+
:type => "application",
|
79
|
+
:vendor => "Citrix",
|
80
|
+
:product => "XenServer",
|
81
|
+
:match_details => "page title",
|
82
|
+
:tags => ["tech:hypervisor"],
|
83
|
+
:references => [""],
|
84
|
+
:version => nil,
|
85
|
+
:dynamic_version => lambda { |x| _first_body_capture(x,/<title>Welcome to Citrix XenServer (.*?)<\/title>/) },
|
86
|
+
:match_type => :content_body,
|
87
|
+
:match_content => /<title>Welcome to Citrix XenServer/,
|
88
|
+
:hide => false,
|
89
|
+
:paths => ["#{url}"],
|
90
|
+
:verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwczovLzIzLmRjLjU1OWUuaXA0LnN0YXRpYy5zbC1yZXZlcnNlLmNvbTo0NDM="],
|
91
|
+
:examples => ["https://23.dc.559e.ip4.static.sl-reverse.com:443"]
|
17
92
|
}
|
18
93
|
]
|
19
94
|
end
|
data/lib/checks/cloudflare.rb
CHANGED
@@ -3,52 +3,62 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Cloudflare < Intrigue::Ident::Check::Base
|
5
5
|
|
6
|
-
def generate_checks(
|
6
|
+
def generate_checks(url)
|
7
7
|
[
|
8
8
|
{
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
9
|
+
:type => "service",
|
10
|
+
:vendor => "Cloudflare",
|
11
|
+
:product => "CDN",
|
12
|
+
:version => nil,
|
13
|
+
:match_type => :content_cookies,
|
14
|
+
:match_content => /__cfduid/i,
|
15
|
+
:match_details =>"Cloudflare Accelerated Page",
|
16
|
+
:paths => ["#{url}"]
|
15
17
|
},
|
16
18
|
{
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
19
|
+
:type => "service",
|
20
|
+
:vendor => "Cloudflare",
|
21
|
+
:product => "CDN",
|
22
|
+
:version => nil,
|
23
|
+
:match_type => :content_headers,
|
24
|
+
:match_content => /cloudflare-nginx/i,
|
25
|
+
:match_details =>"Cloudflare Server",
|
26
|
+
:paths => ["#{url}"]
|
23
27
|
},
|
24
28
|
{
|
25
|
-
:
|
26
|
-
:
|
29
|
+
:type => "service",
|
30
|
+
:vendor => "Cloudflare",
|
31
|
+
:product => "CDN",
|
27
32
|
:tags => ["error_page"],
|
28
|
-
:version =>
|
29
|
-
:
|
30
|
-
:
|
33
|
+
:version => nil,
|
34
|
+
:match_type => :content_body,
|
35
|
+
:match_content => /<title>Direct IP access not allowed \| Cloudflare/,
|
36
|
+
:match_details =>"Cloudflare - Direct IP Access",
|
31
37
|
:hide => true,
|
32
|
-
:paths => ["#{
|
38
|
+
:paths => ["#{url}"]
|
33
39
|
},
|
34
40
|
{
|
35
|
-
:
|
36
|
-
:
|
41
|
+
:type => "service",
|
42
|
+
:vendor => "Cloudflare",
|
43
|
+
:product => "CDN",
|
44
|
+
:match_details =>"Cloudflare Error",
|
37
45
|
:tags => ["error_page"],
|
38
46
|
:version => "",
|
39
|
-
:
|
40
|
-
:
|
47
|
+
:match_type => :content_body,
|
48
|
+
:match_content => /cferror_details/,
|
41
49
|
:hide => true,
|
42
|
-
:paths => ["#{
|
50
|
+
:paths => ["#{url}"]
|
43
51
|
},
|
44
52
|
{
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
53
|
+
:type => "service",
|
54
|
+
:vendor => "Cloudflare",
|
55
|
+
:product => "CDN",
|
56
|
+
:match_details =>"Cloudfront Error - Direct IP Access",
|
57
|
+
:version => nil,
|
58
|
+
:match_type => :content_body,
|
59
|
+
:match_content => /403\ Forbidden<\/h1><\/center>\n<hr><center>cloudflare<\/center>/im,
|
50
60
|
:hide => true,
|
51
|
-
:paths => ["#{
|
61
|
+
:paths => ["#{url}"]
|
52
62
|
}
|
53
63
|
]
|
54
64
|
end
|
data/lib/checks/cpanel.rb
CHANGED
@@ -3,16 +3,18 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Cpanel < Intrigue::Ident::Check::Base
|
5
5
|
|
6
|
-
def generate_checks(
|
6
|
+
def generate_checks(url)
|
7
7
|
[
|
8
8
|
{
|
9
|
-
:
|
10
|
-
:
|
9
|
+
:vendor => "cPanel",
|
10
|
+
:type => "application",
|
11
|
+
:product =>"cPanel Hosted - Missing Page",
|
12
|
+
:match_details =>"cPanel Hosted, but either misconfigured, or accessed via ip vs hostname?",
|
11
13
|
:version => nil,
|
12
|
-
:
|
13
|
-
:
|
14
|
+
:match_type => :content_body,
|
15
|
+
:match_content => /URL=\/cgi-sys\/defaultwebpage.cgi/,
|
14
16
|
:hide => true,
|
15
|
-
:paths => ["#{
|
17
|
+
:paths => ["#{url}"]
|
16
18
|
}
|
17
19
|
]
|
18
20
|
end
|
data/lib/checks/craft.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Craft < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:vendor => "Craft",
|
10
|
+
:type => "application",
|
11
|
+
:product =>"CMS",
|
12
|
+
:match_details =>"csrf protection cookie",
|
13
|
+
:version => nil,
|
14
|
+
:match_type => :content_cookies,
|
15
|
+
:match_content => /CRAFT_CSRF_TOKEN/,
|
16
|
+
:hide => true,
|
17
|
+
:paths => ["#{url}"]
|
18
|
+
}
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/checks/django.rb
CHANGED
@@ -3,15 +3,17 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Django < Intrigue::Ident::Check::Base
|
5
5
|
|
6
|
-
def generate_checks(
|
6
|
+
def generate_checks(url)
|
7
7
|
[
|
8
8
|
{
|
9
|
-
:
|
10
|
-
:
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "Django",
|
11
|
+
:product =>"Django",
|
11
12
|
:version => nil,
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
13
|
+
:match_details =>"Django Admin Page",
|
14
|
+
:match_type => :content_body,
|
15
|
+
:match_content => /<title>Log in \| Django site admin<\/title>/,
|
16
|
+
:paths => ["#{url}/admin"]
|
15
17
|
}
|
16
18
|
]
|
17
19
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Docuwiki < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "Docuwiki",
|
11
|
+
:product => "Docuwiki",
|
12
|
+
:version => nil,
|
13
|
+
:match_type => :content_headers,
|
14
|
+
:match_content => /DokuWiki=/,
|
15
|
+
:match_details =>"Cookie match",
|
16
|
+
:references => ["https://www.dokuwiki.org/dokuwiki"],
|
17
|
+
:examples => ["https://docs.foxycart.com:443"],
|
18
|
+
:paths => ["#{url}"]
|
19
|
+
}
|
20
|
+
]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/checks/drupal.rb
CHANGED
@@ -3,20 +3,37 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Drupal < Intrigue::Ident::Check::Base
|
5
5
|
|
6
|
-
def generate_checks(
|
6
|
+
def generate_checks(url)
|
7
7
|
[
|
8
8
|
{
|
9
|
-
:
|
10
|
-
:
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "Drupal",
|
11
|
+
:product => "Drupal",
|
12
|
+
:tags => ["CMS"],
|
13
|
+
:match_details => "Drupal version in page content",
|
11
14
|
:version => nil,
|
12
|
-
:
|
13
|
-
:
|
15
|
+
:match_type => :content_body,
|
16
|
+
:match_content => /^Drupal [0-9]+\.[0-9]+/,
|
14
17
|
:dynamic_version => lambda { |x|
|
15
|
-
|
16
|
-
return version.first.gsub("Drupal ","").gsub(",","").chomp if version
|
18
|
+
_first_body_capture(x,/^Drupal ([0-9\.]*?)[ ,<\.].*$/)
|
17
19
|
},
|
18
|
-
:paths => ["#{
|
20
|
+
:paths => ["#{url}/CHANGELOG.txt"]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
:type => "application",
|
24
|
+
:vendor => "Drupal",
|
25
|
+
:product => "Drupal",
|
26
|
+
:tags => ["CMS"],
|
27
|
+
:match_details => "Drupal headers",
|
28
|
+
:version => nil,
|
29
|
+
:match_type => :content_headers,
|
30
|
+
:match_content => /x-generator: Drupal/,
|
31
|
+
:dynamic_version => lambda { |x|
|
32
|
+
_first_header_capture(x,/x-generator: Drupal\ ([0-9]+)\ \(/i,)
|
33
|
+
},
|
34
|
+
:paths => ["#{url}"]
|
19
35
|
}
|
36
|
+
|
20
37
|
]
|
21
38
|
end
|
22
39
|
|
data/lib/checks/f5.rb
CHANGED
@@ -3,17 +3,45 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class F5 < Intrigue::Ident::Check::Base
|
5
5
|
|
6
|
-
def generate_checks(
|
6
|
+
def generate_checks(url)
|
7
7
|
[
|
8
8
|
{
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "F5",
|
11
|
+
:product =>"BIG-IP APM",
|
12
|
+
:match_details =>"F5 BIG-IP APM default cookie",
|
13
|
+
:tags => ["tech:load_balancer"],
|
12
14
|
:version => nil,
|
13
|
-
:
|
14
|
-
:
|
15
|
+
:match_type => :content_cookies,
|
16
|
+
:match_content => /MRHSession/,
|
15
17
|
:hide => false,
|
16
|
-
:paths => ["#{
|
18
|
+
:paths => ["#{url}"]
|
19
|
+
},
|
20
|
+
{
|
21
|
+
:type => "application",
|
22
|
+
:vendor => "F5",
|
23
|
+
:product =>"BIG-IP APM",
|
24
|
+
:match_details =>"F5 BIG-IP APM default logo",
|
25
|
+
:tags => ["tech:load_balancer"],
|
26
|
+
:version => nil,
|
27
|
+
:references => ["https://support.f5.com/kb/en-us/products/big-ip_apm/manuals/product/apm-customization-11-6-0/3.html"],
|
28
|
+
:match_type => :content_body,
|
29
|
+
:match_content => /<img src="\/public\/images\/my\/tr.gif\//,
|
30
|
+
:hide => false,
|
31
|
+
:paths => ["#{url}"]
|
32
|
+
},
|
33
|
+
{
|
34
|
+
:type => "hardware",
|
35
|
+
:vendor => "F5",
|
36
|
+
:product =>"BIG-IP",
|
37
|
+
:match_details =>"F5 BIG-IP Load balancer cookie",
|
38
|
+
:tags => ["tech:load_balancer"],
|
39
|
+
:version => nil,
|
40
|
+
:match_type => :content_cookies,
|
41
|
+
:match_content => /BIGipServer/,
|
42
|
+
:examples => ["https://reset.oxy.com:443"],
|
43
|
+
:hide => false,
|
44
|
+
:paths => ["#{url}"]
|
17
45
|
}
|
18
46
|
]
|
19
47
|
end
|
data/lib/checks/fastly.rb
CHANGED
@@ -3,15 +3,30 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Fastly < Intrigue::Ident::Check::Base
|
5
5
|
|
6
|
-
def generate_checks(
|
6
|
+
def generate_checks(url)
|
7
7
|
[
|
8
8
|
{
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
9
|
+
:type => "service",
|
10
|
+
:vendor =>"Fastly",
|
11
|
+
:product =>"Fastly",
|
12
|
+
:match_details =>"header",
|
13
|
+
:version => nil,
|
14
|
+
:match_type => :content_headers,
|
15
|
+
:match_content => /x-fastly-backend-reqs/i,
|
16
|
+
:paths => ["#{url}"]
|
17
|
+
},
|
18
|
+
{
|
19
|
+
:type => "service",
|
20
|
+
:vendor =>"Fastly",
|
21
|
+
:product =>"Fastly",
|
22
|
+
:match_details =>"error content in page",
|
23
|
+
:version => nil,
|
24
|
+
:hide => true,
|
25
|
+
:match_type => :content_body,
|
26
|
+
:match_content => /<title>Fastly error: unknown domain/i,
|
27
|
+
:examples => ["http://151.101.1.224:80"],
|
28
|
+
:verify => ["ZXRzeSNJbnRyaWd1ZTo6RW50aXR5OjpVcmkjaHR0cDovLzE1MS4xMDEuMS4yMjQ6ODA="],
|
29
|
+
:paths => ["#{url}"]
|
15
30
|
}
|
16
31
|
]
|
17
32
|
end
|
data/lib/checks/generic.rb
CHANGED
@@ -3,16 +3,44 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Generic < Intrigue::Ident::Check::Base
|
5
5
|
|
6
|
-
def generate_checks(
|
6
|
+
def generate_checks(url)
|
7
7
|
[
|
8
8
|
{
|
9
|
-
:
|
10
|
-
:
|
9
|
+
:type => "none",
|
10
|
+
:vendor => nil,
|
11
|
+
:product =>"Authentication Required",
|
12
|
+
:match_details =>"www-authenticate header",
|
13
|
+
:tags => [],
|
14
|
+
:version => nil,
|
15
|
+
:hide => true,
|
16
|
+
:match_type => :content_headers,
|
17
|
+
:match_content => /^www-authenticate:.*$/,
|
18
|
+
:paths => ["#{url}"],
|
19
|
+
:examples => ["https://160.69.1.115:443"]
|
20
|
+
},
|
21
|
+
{
|
22
|
+
:type => "none",
|
23
|
+
:vendor => nil,
|
24
|
+
:product => "Generic Unauthorized",
|
25
|
+
:match_details =>"Generic Unauthorized",
|
26
|
+
:tags => ["error_page"],
|
27
|
+
:version => nil,
|
28
|
+
:hide => true,
|
29
|
+
:match_type => :content_body,
|
30
|
+
:match_content => /<STRONG>401 Unauthorized/,
|
31
|
+
:paths => ["#{url}"]
|
32
|
+
},
|
33
|
+
{
|
34
|
+
:type => "none",
|
35
|
+
:vendor => nil,
|
36
|
+
:product => "Content Missing (404)",
|
37
|
+
:match_details =>"Content Missing (404) - Could be an API, or just serving something at another location. TODO ... is this ECS-specific? (check header)",
|
11
38
|
:tags => ["error_page"],
|
12
39
|
:version => nil,
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
40
|
+
:hide => true,
|
41
|
+
:match_type => :content_body,
|
42
|
+
:match_content => /<title>404 - Not Found<\/title>/,
|
43
|
+
:paths => ["#{url}"]
|
16
44
|
}
|
17
45
|
]
|
18
46
|
end
|