intrigue-ident 0.49 → 0.51

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.
@@ -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
@@ -9,6 +9,7 @@ module Check
9
9
  :type => "application",
10
10
  :vendor => "Drupal",
11
11
  :product => "Drupal",
12
+ :tags => ["CMS"],
12
13
  :match_details => "Drupal CMS",
13
14
  :version => nil,
14
15
  :match_type => :content_body,
@@ -22,12 +23,13 @@ module Check
22
23
  :type => "application",
23
24
  :vendor => "Drupal",
24
25
  :product => "Drupal",
26
+ :tags => ["CMS"],
25
27
  :match_details => "Drupal headers",
26
28
  :version => nil,
27
29
  :match_type => :content_headers,
28
- :match_content => /x-drupal-cache:/,
30
+ :match_content => /x-generator: Drupal/,
29
31
  :dynamic_version => lambda { |x|
30
- _first_header_capture(x,/x-generator: Drupal\ ([0-9]+)\ \(https:\/\/www.drupal.org\)/i,)
32
+ _first_header_capture(x,/x-generator: Drupal\ ([0-9]+)\ \(/i,)
31
33
  },
32
34
  :paths => ["#{url}"]
33
35
  }
data/lib/checks/f5.rb CHANGED
@@ -9,7 +9,7 @@ module Check
9
9
  :type => "application",
10
10
  :vendor => "F5",
11
11
  :product =>"BIG-IP APM",
12
- :match_details =>"F5 BIG-IP APM",
12
+ :match_details =>"F5 BIG-IP APM default cookie",
13
13
  :tags => ["tech:load_balancer"],
14
14
  :version => nil,
15
15
  :match_type => :content_cookies,
@@ -17,6 +17,19 @@ module Check
17
17
  :hide => false,
18
18
  :paths => ["#{url}"]
19
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
+ },
20
33
  {
21
34
  :type => "hardware",
22
35
  :vendor => "F5",
@@ -6,8 +6,22 @@ module Check
6
6
  def generate_checks(url)
7
7
  [
8
8
  {
9
- :type => "application",
10
- :product =>"Unauthorized (401)",
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",
11
25
  :match_details =>"Generic Unauthorized",
12
26
  :tags => ["error_page"],
13
27
  :version => nil,
@@ -17,8 +31,9 @@ module Check
17
31
  :paths => ["#{url}"]
18
32
  },
19
33
  {
20
- :type => "application",
21
- :product =>"Content Missing (404)",
34
+ :type => "none",
35
+ :vendor => nil,
36
+ :product => "Content Missing (404)",
22
37
  :match_details =>"Content Missing (404) - Could be an API, or just serving something at another location. TODO ... is this ECS-specific? (check header)",
23
38
  :tags => ["error_page"],
24
39
  :version => nil,
data/lib/checks/gitlab.rb CHANGED
@@ -13,6 +13,10 @@ module Check
13
13
  :version => nil,
14
14
  :match_type => :content_cookies,
15
15
  :match_content => /_gitlab_session/i,
16
+ :dynamic_version => lambda{ |x|
17
+ _first_body_capture(x,/window.gon={};gon.api_version=\"v([0-9\.])\"/i)
18
+ },
19
+ :examples => [ ],
16
20
  :paths => ["#{url}"]
17
21
  }
18
22
  ]
data/lib/checks/google.rb CHANGED
@@ -6,7 +6,7 @@ module Check
6
6
  def generate_checks(url)
7
7
  [
8
8
  {
9
- :type => "application",
9
+ :type => "service",
10
10
  :vendor => "Google",
11
11
  :product => "Hosted",
12
12
  :match_details => "Google Missing Page",
@@ -15,6 +15,17 @@ module Check
15
15
  :match_content => /The requested URL <code>\/<\/code> was not found on this server\./,
16
16
  :hide => true,
17
17
  :paths => ["#{url}"]
18
+ },
19
+ {
20
+ :type => "application",
21
+ :vendor => "Google",
22
+ :product =>"Search Appliance",
23
+ :match_details =>"server header reports google search appliance",
24
+ :version => nil,
25
+ :match_type => :content_headers,
26
+ :match_content => /server: Google Search Appliance/i,
27
+ :paths => ["#{url}"],
28
+ :examples => ["http://161.107.1.43:80"]
18
29
  }
19
30
  ]
20
31
  end
data/lib/checks/ibm.rb ADDED
@@ -0,0 +1,63 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Ibm < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "application",
10
+ :vendor => "IBM",
11
+ :product =>"Datapower",
12
+ :references => ["https://www.ibm.com/developerworks/community/blogs/HermannSW/entry/datapower_x_backside_transport_transfer_encoding_and_connection_header_fields9?lang=en"],
13
+ :version => nil,
14
+ :match_type => :content_headers,
15
+ :match_content => /X-Backside-Transport:/i,
16
+ :match_details =>"header thrown by ibm datapower (on error?)",
17
+ :examples => ["https://css-ewebsvcs.freddiemac.com:443"],
18
+ :paths => ["#{url}"]
19
+ },
20
+ {
21
+ :type => "application",
22
+ :vendor => "IBM",
23
+ :product =>"IBM Security Access Manager for Web",
24
+ :references => ["https://www.ibm.com/support/knowledgecenter/SSPREK_9.0.2.1/com.ibm.isam.doc/wrp_config/concept/con_sam_intro.html"],
25
+ :version => nil,
26
+ :match_type => :content_headers,
27
+ :match_content => /www-authenticate: Basic realm=\"IBM Security Access Manager for Web\"/i,
28
+ :match_details =>"IBM security access manager login prompt",
29
+ :examples => ["https://161.107.22.69:443"],
30
+ :paths => ["#{url}"]
31
+ },
32
+ {
33
+ :type => "application",
34
+ :vendor => "IBM",
35
+ :product =>"Tivoli Access Manager for e-business",
36
+ :references => ["https://www.ibm.com/support/knowledgecenter/en/SSPREK_6.1.0/com.ibm.itame.doc_6.1/am61_qsg_en.htm"],
37
+ :version => nil,
38
+ :match_type => :content_body,
39
+ :match_content => /<title>Access Manager for e-Business Login/i,
40
+ :match_details =>"Generic Ibm tivoli copyright",
41
+ :examples => ["https://161.107.1.22:443"],
42
+ :paths => ["#{url}"]
43
+ },
44
+ {
45
+ :type => "application",
46
+ :vendor => "IBM",
47
+ :product =>"WebSEAL",
48
+ :references => ["https://www.ibm.com/support/knowledgecenter/en/SSPREK_8.0.1.2/com.ibm.isamw.doc_8.0.1.2/wrp_config/task/tsk_submt_form_data_ws.html"],
49
+ :version => nil,
50
+ :match_type => :content_body,
51
+ :match_content => /<form method=\"POST\" action=\"\/pkmslogin.form\">/i,
52
+ :match_details =>"form action to submit to webseal (on ourselves)",
53
+ :examples => ["https://pseuat.fmrei.com:443"],
54
+ :paths => ["#{url}"]
55
+ }
56
+
57
+ ]
58
+ end
59
+
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,27 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Ivanti < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "application",
10
+ :vendor => "Ivanti",
11
+ :tags => [],
12
+ :product =>"LANDESK Appliance",
13
+ :match_details =>"matched title",
14
+ :match_type => :content_body,
15
+ :version => nil,
16
+ :references => ["https://community.ivanti.com/community/all-products/systems/cloudservices"],
17
+ :match_content => /<title>LANDESK\(R\) Cloud Services Appliance/i,
18
+ :examples => ["https://techcentral.hormel.com/"],
19
+ :verify => ["aG9ybWVsZm9vZHMjSW50cmlndWU6OkVudGl0eTo6VXJpI2h0dHBzOi8vdGVjaGNlbnRyYWwuaG9ybWVsLmNvbTo0NDM="],
20
+ :paths => ["#{url}"]
21
+ }
22
+ ]
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,26 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Jamf < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "application",
10
+ :vendor => "Jamf",
11
+ :tags => [],
12
+ :product =>"Pro",
13
+ :match_details =>"jamf pro login page",
14
+ :match_type => :content_body,
15
+ :version => nil,
16
+ :dynamic_version => lambda { |x| _first_body_capture(x,/<title>Jamf Pro Login - Jamf Pro v(.*)</) },
17
+ :match_content => /<title>Jamf Pro Login - Jamf Pro v/i,
18
+ :examples => ["https://98.99.248.54:8443"],
19
+ :paths => ["#{url}"]
20
+ }
21
+ ]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Jekyll < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "service",
10
+ :vendor =>"Jekyll",
11
+ :product =>"Jekyll",
12
+ :match_details =>"server header for Jekyll",
13
+ :references => ["https://jekyllrb.com/"],
14
+ :match_type => :content_body,
15
+ :match_content => /<meta name="generator" content="Jekyll v3.7.3"/i,
16
+ :dynamic_version => lambda { |x|
17
+ _first_body_capture(x,/<meta name="generator" content="Jekyll v(.*)"/i)
18
+ },
19
+ :examples => ["http://github.io:80"],
20
+ :paths => ["#{url}"]
21
+ }
22
+ ]
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Jive < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "service",
10
+ :vendor => "Jive",
11
+ :tags => [],
12
+ :product =>"Platform",
13
+ :match_details =>"jive login page",
14
+ :match_type => :content_cookies,
15
+ :version => nil,
16
+ :match_content => /jive.login.ts=/i,
17
+ :examples => ["https://www.gsd.ouroath.com:443"],
18
+ :paths => ["#{url}"]
19
+ }
20
+ ]
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
data/lib/checks/joomla.rb CHANGED
@@ -8,6 +8,7 @@ module Check
8
8
  {
9
9
  :type => "application",
10
10
  :vendor => "Joomla!",
11
+ :tags => ["CMS"],
11
12
  :product =>"Joomla!",
12
13
  :match_details =>"Known Joomla Admin Page",
13
14
  :match_type => :content_body,
@@ -0,0 +1,26 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Jupyter < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "application",
10
+ :vendor => "Jupyter",
11
+ :tags => [],
12
+ :product =>"Notebook",
13
+ :match_details =>"matched jupyterhub header",
14
+ :match_type => :content_headers,
15
+ :version => nil,
16
+ :dynamic_version => lambda { |x| _first_header_capture(x,/^x-jupyterhub-version: (.*)$/) },
17
+ :match_content => /x-jupyterhub-version:/i,
18
+ :examples => ["https://18.18.154.11:443"],
19
+ :paths => ["#{url}"]
20
+ }
21
+ ]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Lighttpd < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "application",
10
+ :vendor => "Lighttpd",
11
+ :tags => [],
12
+ :product =>"Lighttpd",
13
+ :match_details =>"server header",
14
+ :version => nil,
15
+ :match_type => :content_headers,
16
+ :match_content => /server: lighttpd/i,
17
+ :dynamic_version => lambda { |x|
18
+ _first_header_capture(x,/server: lighttpd\/(.*)/i,)
19
+ },
20
+ :examples => ["http://98.99.246.234:80"],
21
+ :paths => ["#{url}"]
22
+ }
23
+ ]
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Mailchimp < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "application",
10
+ :vendor => "Mailchimp",
11
+ :product =>"Mandrill",
12
+ :match_details =>"login page",
13
+ :match_type => :content_body,
14
+ :version => nil,
15
+ :match_content => /<title>Log in to Mandrill/i,
16
+ :paths => ["#{url}"],
17
+ :examples => ["http://107.20.49.246:80"]
18
+ }
19
+ ]
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -10,7 +10,7 @@ module Check
10
10
  :vendor => "Microsoft",
11
11
  :product =>"ASP.NET",
12
12
  :version => nil,
13
- :dynamic_version => lambda{|x| x["details"]["hidden_response_data"].scan(/ASP.NET Version:(.*)$/)[0].first.chomp },
13
+ :dynamic_version => lambda{|x| _body(x).scan(/ASP.NET Version:(.*)$/)[0].first.chomp },
14
14
  :tags => ["error_page"],
15
15
  :match_type => :content_body,
16
16
  :match_content => /^.*ASP.NET is configured.*$/i,
@@ -22,7 +22,7 @@ module Check
22
22
  :vendor => "Microsoft",
23
23
  :product =>"ASP.NET",
24
24
  :version => nil,
25
- :dynamic_version => lambda{|x| x["details"]["hidden_response_data"].scan(/ASP.NET Version:(.*)$/i)[0].first.chomp if x["details"]["hidden_response_data"].scan(/ASP.NET Version:(.*)$/i)[0] },
25
+ :dynamic_version => lambda{|x| _body(x).scan(/ASP.NET Version:(.*)$/i)[0].first.chomp if x["details"]["hidden_response_data"].scan(/ASP.NET Version:(.*)$/i)[0] },
26
26
  :match_type => :content_headers,
27
27
  :match_content => /^x-aspnet-version:.*$/i,
28
28
  :match_details =>"X-AspNet Header",
@@ -48,6 +48,18 @@ module Check
48
48
  :match_content => /ASP.NET_SessionId.*$/i,
49
49
  :paths => ["#{url}"]
50
50
  },
51
+ {
52
+ :type => "application",
53
+ :vendor => "Microsoft",
54
+ :product =>"ASP.NET",
55
+ :match_details =>"ASPXAUTH cookie",
56
+ :version => nil,
57
+ :references => ["https://www.sitefinity.com/developer-network/forums/developing-with-sitefinity-/claims-auth---aspxauth-cookie-remains"],
58
+ :match_type => :content_cookies,
59
+ :match_content => /ASPXAUTH=/i,
60
+ :examples => ["https://marketplace.overdrive.com/Account/Login"],
61
+ :paths => ["#{url}"]
62
+ },
51
63
  {
52
64
  :type => "application",
53
65
  :vendor => "Microsoft",
@@ -186,6 +198,29 @@ module Check
186
198
  :match_content => /HTTP Error 503. The service is unavailable./,
187
199
  :paths => ["#{url}"]
188
200
  },
201
+ {
202
+ :type => "application",
203
+ :vendor =>"Microsoft",
204
+ :product =>"Kestrel",
205
+ :references => ["https://stackify.com/what-is-kestrel-web-server/"],
206
+ :match_details =>"kestrel in server header",
207
+ :version => nil,
208
+ :match_type => :content_headers,
209
+ :match_content => /server: Kestrel/i,
210
+ :examples => ["http://partner-staging.jet.com:80"],
211
+ :paths => ["#{url}"]
212
+ },
213
+ {
214
+ :type => "service",
215
+ :vendor =>"Microsoft",
216
+ :product =>"Office 365 API",
217
+ :match_details =>"office 365 api auth cookie",
218
+ :version => nil,
219
+ :match_type => :content_cookies,
220
+ :match_content => /x-ms-gateway-slice/i,
221
+ :examples => ["http://autodiscover.jet.com:80"],
222
+ :paths => ["#{url}"]
223
+ },
189
224
  {
190
225
  :type => "service",
191
226
  :vendor =>"Microsoft",
@@ -197,7 +232,6 @@ module Check
197
232
  :examples => ["http://outlook.newscorp.com:80"],
198
233
  :paths => ["#{url}"]
199
234
  },
200
-
201
235
  {
202
236
  :type => "application",
203
237
  :vendor => "Microsoft",
@@ -206,7 +240,7 @@ module Check
206
240
  :version => nil,
207
241
  :match_type => :content_headers,
208
242
  :match_content => /x-owa-version/,
209
- :dynamic_version => lambda { |x| _first_header_capture(/x-owa-version:(.*)/) },
243
+ :dynamic_version => lambda { |x| _first_header_capture(x, /x-owa-version:(.*)/) },
210
244
  :paths => ["#{url}"]
211
245
  },
212
246
  {
@@ -217,9 +251,7 @@ module Check
217
251
  :version => nil,
218
252
  :match_type => :content_body,
219
253
  :match_content => /OwaPage\ =\ ASP.auth_logon_aspx/,
220
- :dynamic_version => lambda { |x|
221
- _first_body_capture x, /href=\"\/owa\/auth\/(.*)\/themes\/resources\/favicon.ico/
222
- },
254
+ :dynamic_version => lambda { |x| _first_body_capture x, /href=\"\/owa\/auth\/(.*)\/themes\/resources\/favicon.ico/ },
223
255
  :paths => ["#{url}"]
224
256
  },
225
257
  {