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
@@ -0,0 +1,189 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Automattic < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "application",
|
10
|
+
:vendor =>"Automattic",
|
11
|
+
:tags => ["CMS"],
|
12
|
+
:product =>"Wordpress",
|
13
|
+
:match_details =>"wordpress generator tag in content",
|
14
|
+
:version => nil,
|
15
|
+
:match_type => :content_body,
|
16
|
+
:match_content => /<meta name="generator" content="WordPress/i,
|
17
|
+
:dynamic_version => lambda { |x| _first_body_capture x, /<meta name=\"generator\" content=\"WordPress\ (.*)\" \/>/i },
|
18
|
+
:hide => false,
|
19
|
+
:examples => [
|
20
|
+
"http://www.jewelosco.com:80",
|
21
|
+
"http://blog.nolimitvpn.com:80"
|
22
|
+
],
|
23
|
+
:paths => ["#{url}"]
|
24
|
+
},
|
25
|
+
{
|
26
|
+
:type => "application",
|
27
|
+
:vendor =>"Automattic",
|
28
|
+
:tags => ["CMS"],
|
29
|
+
:product =>"Wordpress",
|
30
|
+
:match_details =>"common link",
|
31
|
+
:version => nil,
|
32
|
+
:match_type => :content_body,
|
33
|
+
:match_content => /<link rel='https:\/\/api.w.org\/'/,
|
34
|
+
:examples => ["https://staging.blogs.nordstrom.com:443"],
|
35
|
+
:paths => ["#{url}"]
|
36
|
+
},
|
37
|
+
{
|
38
|
+
:type => "application",
|
39
|
+
:vendor =>"Automattic",
|
40
|
+
:tags => ["CMS"],
|
41
|
+
:product =>"Wordpress (Hosted)",
|
42
|
+
:match_details =>"unique header",
|
43
|
+
:version => nil,
|
44
|
+
:match_type => :content_headers,
|
45
|
+
:match_content => /x-hacker: If you're reading this, you should visit automattic.com/,
|
46
|
+
:examples => ["http://192.0.78.12:80"],
|
47
|
+
:paths => ["#{url}"]
|
48
|
+
},
|
49
|
+
{
|
50
|
+
:type => "application",
|
51
|
+
:vendor => "Automattic",
|
52
|
+
:tags => ["CMS"],
|
53
|
+
:product =>"Wordpress",
|
54
|
+
:match_details =>"Wordpress WP-JSON endpoint",
|
55
|
+
:version => nil,
|
56
|
+
:match_type => :content_body,
|
57
|
+
:match_content => /gmt_offset/,
|
58
|
+
:paths => ["#{url}/wp-json"]
|
59
|
+
},
|
60
|
+
{
|
61
|
+
:type => "application",
|
62
|
+
:vendor => "Automattic",
|
63
|
+
:tags => ["CMS"],
|
64
|
+
:product =>"Wordpress",
|
65
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
66
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
67
|
+
:version => "2.0",
|
68
|
+
:match_type => :checksum_body,
|
69
|
+
:checksum => "a306a72ce0f250e5f67132dc6bcb2ccb",
|
70
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
71
|
+
},
|
72
|
+
{
|
73
|
+
:type => "application",
|
74
|
+
:vendor => "Automattic",
|
75
|
+
:tags => ["CMS"],
|
76
|
+
:product =>"Wordpress",
|
77
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
78
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
79
|
+
:version => "2.1",
|
80
|
+
:match_type => :checksum_body,
|
81
|
+
:checksum => "4f04728cb4631a553c4266c14b9846aa",
|
82
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
83
|
+
},
|
84
|
+
{
|
85
|
+
:type => "application",
|
86
|
+
:vendor => "Automattic",
|
87
|
+
:tags => ["CMS"],
|
88
|
+
:product =>"Wordpress",
|
89
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
90
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
91
|
+
:version => "2.2",
|
92
|
+
:match_type => :checksum_body,
|
93
|
+
:checksum => "25e1e78d5b0c221e98e14c6e8c62084f",
|
94
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
95
|
+
},
|
96
|
+
{
|
97
|
+
:type => "application",
|
98
|
+
:vendor => "Automattic",
|
99
|
+
:tags => ["CMS"],
|
100
|
+
:product =>"Wordpress",
|
101
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
102
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
103
|
+
:version => "2.3",
|
104
|
+
:match_type => :checksum_body,
|
105
|
+
:checksum => "83c83d0f0a71bd57c320d93e59991c53",
|
106
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
107
|
+
},
|
108
|
+
{
|
109
|
+
:type => "application",
|
110
|
+
:vendor => "Automattic",
|
111
|
+
:tags => ["CMS"],
|
112
|
+
:product =>"Wordpress",
|
113
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
114
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
115
|
+
:version => "2.5",
|
116
|
+
:match_type => :checksum_body,
|
117
|
+
:checksum => "7293453cf0ff5a9a4cfe8cebd5b5a71a",
|
118
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
119
|
+
},
|
120
|
+
{
|
121
|
+
:type => "application",
|
122
|
+
:vendor => "Automattic",
|
123
|
+
:tags => ["CMS"],
|
124
|
+
:product =>"Wordpress",
|
125
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
126
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
127
|
+
:version => "2.6",
|
128
|
+
:match_type => :checksum_body,
|
129
|
+
:checksum => "61740709537bd19fb6e03b7e11eb8812",
|
130
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
131
|
+
},
|
132
|
+
{
|
133
|
+
:type => "application",
|
134
|
+
:vendor => "Automattic",
|
135
|
+
:tags => ["CMS"],
|
136
|
+
:product =>"Wordpress",
|
137
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
138
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
139
|
+
:version => "2.7",
|
140
|
+
:match_type => :checksum_body,
|
141
|
+
:checksum => "e6bbc53a727f3af003af272fd229b0b2",
|
142
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
143
|
+
},
|
144
|
+
{
|
145
|
+
:type => "application",
|
146
|
+
:vendor => "Automattic",
|
147
|
+
:tags => ["CMS"],
|
148
|
+
:product =>"Wordpress",
|
149
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
150
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
151
|
+
:version => "2.7.1",
|
152
|
+
:match =>:checksum_body,
|
153
|
+
:checksum => "e6bbc53a727f3af003af272fd229b0b2",
|
154
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
155
|
+
},
|
156
|
+
{
|
157
|
+
:type => "application",
|
158
|
+
:vendor => "Automattic",
|
159
|
+
:tags => ["CMS"],
|
160
|
+
:product =>"Wordpress",
|
161
|
+
:match_details =>"Wordpress TinyMCE Editor",
|
162
|
+
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
163
|
+
:version => "2.9.1",
|
164
|
+
:match_type => :checksum_body,
|
165
|
+
:checksum => "128e75ed19d49a94a771586bf83265ec",
|
166
|
+
:paths => ["#{url}/wp-includes/js/tinymce/tiny_mce.js"]
|
167
|
+
}
|
168
|
+
]
|
169
|
+
end
|
170
|
+
|
171
|
+
=begin
|
172
|
+
all_checks = [{
|
173
|
+
:url => "#{url}",
|
174
|
+
:checklist => [
|
175
|
+
{
|
176
|
+
:product =>"Yoast Wordpress SEO Plugin", # won't be used if we have
|
177
|
+
:match_details =>"Yoast Wordpress SEO Plugin",
|
178
|
+
:match_type => "content",
|
179
|
+
:match_content => /<!-- \/ Yoast WordPress SEO plugin. -->/,
|
180
|
+
:test_site => "https://ip-50-62-231-56.ip.secureserver.net",
|
181
|
+
:dynamic_name => lambda{|x| x.scan(/the Yoast WordPress SEO plugin v.* - h/)[0].gsub("the ","").gsub(" - h","") }
|
182
|
+
}
|
183
|
+
]},
|
184
|
+
=end
|
185
|
+
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
data/lib/checks/axis.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Axis < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "Axis",
|
11
|
+
:tags => ["tech:webcam"],
|
12
|
+
:product => "Webcam",
|
13
|
+
:match_details =>"default redirect uri",
|
14
|
+
:version => nil,
|
15
|
+
:match_type => :content_body,
|
16
|
+
:match_content => /<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=\/view\/viewer_index.shtml?id=/,
|
17
|
+
:paths => ["#{url}"]
|
18
|
+
}
|
19
|
+
]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/checks/banu.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Banu < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "Banu",
|
11
|
+
:tags => [],
|
12
|
+
:product =>"Tinyproxy",
|
13
|
+
:match_details =>"server header",
|
14
|
+
:version => nil,
|
15
|
+
:match_type => :content_headers,
|
16
|
+
:match_content => /server: tinyproxy/i,
|
17
|
+
:dynamic_version => lambda { |x|
|
18
|
+
_first_header_capture(x,/server: tinyproxy\/(.*)/i,)
|
19
|
+
},
|
20
|
+
:examples => ["http://208.46.69.59:8080"],
|
21
|
+
:paths => ["#{url}"]
|
22
|
+
}
|
23
|
+
]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/checks/base.rb
CHANGED
@@ -7,6 +7,64 @@ class Base
|
|
7
7
|
CheckFactory.register(base)
|
8
8
|
end
|
9
9
|
|
10
|
+
private
|
11
|
+
|
12
|
+
def _body(content)
|
13
|
+
content["details"]["hidden_response_data"] || ""
|
14
|
+
end
|
15
|
+
|
16
|
+
# matching helpers
|
17
|
+
def _first_body_match(content, regex)
|
18
|
+
return nil unless content["details"]["hidden_response_data"]
|
19
|
+
content["details"]["hidden_response_data"].match(regex)
|
20
|
+
end
|
21
|
+
|
22
|
+
def _first_body_capture(content, regex, filter=[])
|
23
|
+
return nil unless content["details"]["hidden_response_data"]
|
24
|
+
x = content["details"]["hidden_response_data"].match(regex)
|
25
|
+
if x
|
26
|
+
x = x.captures.first.strip
|
27
|
+
filter.each{|f| x.gsub!(f,"") }
|
28
|
+
x = x.strip
|
29
|
+
return x if x.length > 0
|
30
|
+
end
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
|
34
|
+
def _first_header_match(content, regex)
|
35
|
+
return nil unless content["details"]["headers"]
|
36
|
+
content["details"]["headers"].match(regex).first
|
37
|
+
end
|
38
|
+
|
39
|
+
def _first_header_capture(content,regex, filter=[])
|
40
|
+
return nil unless content["details"]["headers"]
|
41
|
+
x = content["details"]["headers"].join("\n").match(regex)
|
42
|
+
if x
|
43
|
+
x = x.captures.first
|
44
|
+
filter.each{|f| x.gsub!(f,"") }
|
45
|
+
x = x.strip
|
46
|
+
return x if x.length > 0
|
47
|
+
end
|
48
|
+
nil
|
49
|
+
end
|
50
|
+
|
51
|
+
def _first_cookie_match(content, regex)
|
52
|
+
return nil unless content["details"]["cookies"]
|
53
|
+
content["details"]["cookies"].match(regex).first
|
54
|
+
end
|
55
|
+
|
56
|
+
def _first_cookie_capture(content, regex, filter=[])
|
57
|
+
return nil unless content["details"]["headers"]
|
58
|
+
x = content["details"]["cookies"].match(regex)
|
59
|
+
if x
|
60
|
+
x = x.captures.first.strip
|
61
|
+
filter.each{|f| x.gsub!(f,"") }
|
62
|
+
x = x.strip
|
63
|
+
return x if x.length > 0
|
64
|
+
end
|
65
|
+
nil
|
66
|
+
end
|
67
|
+
|
10
68
|
end
|
11
69
|
end
|
12
70
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Checkpoint < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "Checkpoint",
|
11
|
+
:tags => ["tech:vpn"],
|
12
|
+
:product =>"GO",
|
13
|
+
:match_details =>"page title",
|
14
|
+
:references => ["https://en.wikipedia.org/wiki/Check_Point_GO"],
|
15
|
+
:version => nil,
|
16
|
+
:match_type => :content_body,
|
17
|
+
:match_content => /<title>Check Point Mobile GO/i,
|
18
|
+
:examples => ["http://192.234.138.61:80"],
|
19
|
+
:verify => ["eGNlbGVuZXJneSNJbnRyaWd1ZTo6RW50aXR5OjpVcmkjaHR0cDovLzE5Mi4yMzQuMTM4LjYxOjgw"],
|
20
|
+
:paths => ["#{url}"]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
:type => "application",
|
24
|
+
:vendor => "Checkpoint",
|
25
|
+
:tags => ["tech:vpn"],
|
26
|
+
:product =>"GO",
|
27
|
+
:match_details =>"server header",
|
28
|
+
:references => ["https://en.wikipedia.org/wiki/Check_Point_GO"],
|
29
|
+
:version => nil,
|
30
|
+
:match_type => :content_headers,
|
31
|
+
:match_content => /server: CPWS/i,
|
32
|
+
:examples => ["http://200.142.200.1:80"],
|
33
|
+
:verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwOi8vMjAwLjE0Mi4yMDAuMTo4MA=="],
|
34
|
+
:paths => ["#{url}"]
|
35
|
+
},
|
36
|
+
{
|
37
|
+
:type => "application",
|
38
|
+
:vendor => "Checkpoint",
|
39
|
+
:tags => ["tech:vpn"],
|
40
|
+
:product =>"SSL Network Extender",
|
41
|
+
:match_details =>"server header",
|
42
|
+
:references => [],
|
43
|
+
:version => nil,
|
44
|
+
:match_type => :content_headers,
|
45
|
+
:match_content => /server: Check Point SVN foundation/i,
|
46
|
+
:examples => ["https://www.cora.ro:8443"],
|
47
|
+
:verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwczovL3d3dy5jb3JhLnJvOjg0NDM="],
|
48
|
+
:paths => ["#{url}"]
|
49
|
+
}
|
50
|
+
]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/checks/chef.rb
CHANGED
@@ -3,24 +3,28 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Chef < 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 => "Chef",
|
11
|
+
:product =>"Server",
|
12
|
+
:match_details =>"Chef Server",
|
11
13
|
:version => nil,
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:dynamic_version => lambda{|x|
|
15
|
-
:paths => ["#{
|
14
|
+
:match_type => :content_body,
|
15
|
+
:match_content => /<title>Chef Server<\/title>/,
|
16
|
+
:dynamic_version => lambda{|x| _first_body_capture(/Version\ (.*)\ —/) },
|
17
|
+
:paths => ["#{url}"]
|
16
18
|
},
|
17
19
|
{
|
18
|
-
:
|
19
|
-
:
|
20
|
+
:type => "application",
|
21
|
+
:vendor => "Chef",
|
22
|
+
:product =>"Server",
|
23
|
+
:match_details =>"Chef Server",
|
20
24
|
:version => nil,
|
21
|
-
:
|
22
|
-
:
|
23
|
-
:paths => ["#{
|
25
|
+
:match_type => :content_cookies,
|
26
|
+
:match_content => /chef-manage/i,
|
27
|
+
:paths => ["#{url}"]
|
24
28
|
}
|
25
29
|
]
|
26
30
|
end
|
data/lib/checks/cisco.rb
CHANGED
@@ -3,27 +3,100 @@ module Ident
|
|
3
3
|
module Check
|
4
4
|
class Cisco < 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 => "Cisco",
|
11
|
+
:product => "Adaptive Security Device Manager",
|
12
|
+
:match_details => "page title",
|
13
|
+
:version => nil,
|
14
|
+
:dynamic_version => lambda {|x| _first_body_capture(x,/<title>Cisco ASDM (.*?)<\/title>/)},
|
15
|
+
:match_type => :content_body,
|
16
|
+
:match_content => /<title>Cisco ASDM/,
|
17
|
+
:hide => false,
|
18
|
+
:examples => ["https://194.107.112.4:443"],
|
19
|
+
:verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwczovLzE5NC4xMDcuMTEyLjQ6NDQz"],
|
20
|
+
:paths => ["#{url}"]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
:type => "hardware",
|
24
|
+
:vendor => "Cisco",
|
25
|
+
:product => "Email Security Appliance",
|
26
|
+
:match_details => "page title",
|
27
|
+
:version => nil,
|
28
|
+
:dynamic_version => lambda {|x| _first_body_capture(x,/Email Security Appliance (.*?) \(/)},
|
29
|
+
:match_type => :content_body,
|
30
|
+
:match_content => /<title> Cisco Email Security Appliance/,
|
31
|
+
:hide => false,
|
32
|
+
:examples => ["https://200.142.198.180:443"],
|
33
|
+
:verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwczovLzIwMC4xNDIuMTk4LjE4MDo0NDM="],
|
34
|
+
:paths => ["#{url}"]
|
35
|
+
},
|
36
|
+
{
|
37
|
+
:type => "hardware",
|
38
|
+
:vendor => "Cisco",
|
39
|
+
:product => "Meraki",
|
40
|
+
:match_details => "Meraki logo on an on-prem box",
|
41
|
+
:version => nil,
|
42
|
+
:match_type => :content_body,
|
43
|
+
:match_content => /<img id="header_logo" src="images\/meraki-logo.png"/,
|
44
|
+
:hide => false,
|
45
|
+
:examples => [],
|
46
|
+
:paths => ["#{url}"]
|
47
|
+
},
|
48
|
+
{
|
49
|
+
:type => "application",
|
50
|
+
:vendor => "Cisco",
|
51
|
+
:product =>"SSL VPN",
|
52
|
+
:match_details =>"Cisco SSL VPN",
|
53
|
+
:tags => ["tech:vpn"],
|
54
|
+
:version => nil,
|
55
|
+
:match_type => :content_cookies,
|
56
|
+
:match_content => /webvpn/,
|
57
|
+
:hide => false,
|
58
|
+
:paths => ["#{url}"]
|
59
|
+
},
|
60
|
+
{
|
61
|
+
:type => "application",
|
62
|
+
:vendor => "Cisco",
|
63
|
+
:product =>"SSL VPN",
|
64
|
+
:match_details =>"Cisco SSL VPN",
|
11
65
|
:tags => ["tech:vpn"],
|
12
66
|
:version => nil,
|
13
|
-
:
|
14
|
-
:
|
67
|
+
:match_type => :content_body,
|
68
|
+
:match_content => /document.location.replace\(\"\/\+CSCOE\+\/logon.html\"\)/,
|
69
|
+
:examples => [
|
70
|
+
"https://12.237.144.250:443",
|
71
|
+
"http://12.150.243.178:80"],
|
15
72
|
:hide => false,
|
16
|
-
:paths => ["#{
|
73
|
+
:paths => ["#{url}"]
|
17
74
|
},
|
18
75
|
{
|
19
|
-
:
|
20
|
-
:
|
76
|
+
:type => "application",
|
77
|
+
:vendor => "Cisco",
|
78
|
+
:product => "Router",
|
79
|
+
:match_details => "Cisco Router",
|
21
80
|
:version => nil,
|
22
|
-
:
|
23
|
-
:
|
81
|
+
:match_type => :content_headers,
|
82
|
+
:match_content => /server: cisco-IOS/,
|
24
83
|
:hide => false,
|
25
|
-
:paths => ["#{
|
26
|
-
}
|
84
|
+
:paths => ["#{url}"]
|
85
|
+
},
|
86
|
+
{
|
87
|
+
:type => "application",
|
88
|
+
:vendor => "Cisco",
|
89
|
+
:product =>"vManage",
|
90
|
+
:match_details => "page title",
|
91
|
+
:tags => [],
|
92
|
+
:version => nil,
|
93
|
+
:match_type => :content_body,
|
94
|
+
:match_content => /<title>Cisco vManage/,
|
95
|
+
:examples => ["http://129.41.171.244:80"],
|
96
|
+
:verify => ["aWJtI0ludHJpZ3VlOjpFbnRpdHk6OlVyaSNodHRwOi8vMTI5LjQxLjE3MS4yNDQ6ODA="],
|
97
|
+
:hide => false,
|
98
|
+
:paths => ["#{url}"]
|
99
|
+
},
|
27
100
|
]
|
28
101
|
end
|
29
102
|
|