intrigue-ident 0.64 → 0.65

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/data/logos/.DS_Store +0 -0
  3. data/data/logos/acquia.png +0 -0
  4. data/data/logos/amazon_cloudfront.png +0 -0
  5. data/data/logos/apache_coyote.png +0 -0
  6. data/data/logos/apache_tomcat.png +0 -0
  7. data/data/logos/atlassian_bamboo.png +0 -0
  8. data/data/logos/atlassian_bitbucket.png +0 -0
  9. data/data/logos/atlassian_confluence.png +0 -0
  10. data/data/logos/atlassian_crowd.png +0 -0
  11. data/data/logos/atlassian_crucible.png +0 -0
  12. data/data/logos/atlassian_fisheye.png +0 -0
  13. data/data/logos/atlassian_jira.png +0 -0
  14. data/data/logos/atlassian_sourcetree.png +0 -0
  15. data/data/logos/automattic_wordpress.png +0 -0
  16. data/data/logos/cisco_ssl_vpn.png +0 -0
  17. data/data/logos/citrix_netscaler_gateway.png +0 -0
  18. data/data/logos/cloudflare_cdn.png +0 -0
  19. data/data/logos/drupal.png +0 -0
  20. data/data/logos/f5_big-ip.png +0 -0
  21. data/data/logos/f5_big-ip_apm.png +0 -0
  22. data/data/logos/fastly.png +0 -0
  23. data/data/logos/gitlab.png +0 -0
  24. data/data/logos/ibm_axway_securetransport.png +0 -0
  25. data/data/logos/lithium.png +0 -0
  26. data/data/logos/microsoft_asp.net.png +0 -0
  27. data/data/logos/microsoft_iis.png +0 -0
  28. data/data/logos/microsoft_outlook_web_access.png +0 -0
  29. data/data/logos/microsoft_sharepoint.png +0 -0
  30. data/data/logos/microtik_routeros.png +0 -0
  31. data/data/logos/mikrotik_routeros.png +0 -0
  32. data/data/logos/newrelic.png +0 -0
  33. data/data/logos/nginx.png +0 -0
  34. data/data/logos/okta.png +0 -0
  35. data/data/logos/oracle_glassfish.png +0 -0
  36. data/data/logos/oracle_java_application_server.png +0 -0
  37. data/data/logos/oracle_java_server_pages.png +0 -0
  38. data/data/logos/oracle_weblogic.png +0 -0
  39. data/data/logos/phpmyadmin.png +0 -0
  40. data/data/logos/tableau.png +0 -0
  41. data/data/logos/vmware_esxi.png +0 -0
  42. data/data/logos/vmware_horizon.png +0 -0
  43. data/data/logos/zendesk.png +0 -0
  44. data/data/logos/zimbra_server.png +0 -0
  45. data/lib/checks/automattic.rb +1 -1
  46. data/lib/checks/microsoft.rb +11 -1
  47. data/lib/checks/telerik.rb +1 -1
  48. data/lib/checks/typo3.rb +25 -0
  49. data/lib/intrigue-ident.rb +31 -12
  50. data/lib/traverse_exceptions.rb +1 -0
  51. data/util/check.rb +1 -1
  52. data/util/list.rb +1 -1
  53. metadata +46 -6
  54. data/data/logos/apache.png +0 -0
  55. data/data/logos/oracle_java.png +0 -0
  56. data/data/logos/php.png +0 -0
  57. data/data/logos/varnish.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c343530d0b5f75f9510eccdebaee5e7298c10227c2c1219ef40a4dac7b775c7
4
- data.tar.gz: 06c6b63a5ef06e15d06d7b5070fe994d3689f738e9a4463dc5903542bc74e223
3
+ metadata.gz: 071013c8c83f621bb6aa3c5d408be244c39364189f294e84f3e824d2085f5ceb
4
+ data.tar.gz: '00459fb998366550f3e218ca06a4c16cf9df6eceaca04db5e117bbde7e7c1762'
5
5
  SHA512:
6
- metadata.gz: b58768feee13c33915748a81875f97a48aeb72e18cf415f8089798dfe0aaa7d65760cc7acde6551082897676dbfe50a5a1c97b602447d20a6a36717d2667c33b
7
- data.tar.gz: bc243232bbebf945b1206681f036c2845d9c0442776e6eea7895e507fbba326128d0f8de82dd5700fe13911b7d07c20996d4acc670fbc881395dd90b92ba3f1d
6
+ metadata.gz: 8f905f6d65934b19f643031468e3ea2bb25a029536de663f2b4c7105e84fa7fd7a80d60bb9971c252ebfb1093287244b8cc3861e50efa161b08cc30a5495a5b8
7
+ data.tar.gz: b9ffe909d98f9ea76678df291b535d783108d57608a00c5c9706b00e16d4f04be496ff4b9d81cffd9568958fd2122defd3f502bbf512eff4891ff1ae1f4429cd
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -14,7 +14,7 @@ module Check
14
14
  :version => nil,
15
15
  :match_type => :content_body,
16
16
  :match_content => /<meta name="generator" content="WordPress/i,
17
- :dynamic_version => lambda { |x| _first_body_capture x, /<meta name=\"generator\" content=\"WordPress\ (.*)\" \/>/i },
17
+ :dynamic_version => lambda { |x| _first_body_capture x, /<meta name=\"generator\" content=\"WordPress\ (.*?)\" \/>/i },
18
18
  :hide => false,
19
19
  :examples => [
20
20
  "http://www.jewelosco.com:80",
@@ -111,7 +111,17 @@ module Check
111
111
  :match_content => /via:\ 1.1\ TMGSRVR/,
112
112
  :paths => ["#{url}"]
113
113
  },
114
-
114
+ {
115
+ :type => "application",
116
+ :vendor => "Microsoft",
117
+ :product =>"ISA Server",
118
+ :version => "2006",
119
+ :match_type => :content_title,
120
+ :match_content => /^Microsoft ISA Server 2006$/i,
121
+ :match_details =>"standard title",
122
+ :paths => ["#{url}"],
123
+ :examples => ["https://intranet.kbs.gov.my/CookieAuth.dll?GetLogon?curl=Z2F&reason=0&formdir=3"]
124
+ },
115
125
  {
116
126
  :type => "application",
117
127
  :vendor => "Microsoft",
@@ -27,7 +27,7 @@ module Check
27
27
  :version => nil,
28
28
  :match_type => :content_body,
29
29
  :match_content => /<meta\ name=\"Generator\"\ content=\"Sitefinity/,
30
- :dynamic_version => lambda { |x| _first_body_capture x, /<meta name=\"Generator\" content=\"Sitefinity (.*)\ \/><link/ },
30
+ :dynamic_version => lambda { |x| _first_body_capture x, /<meta name=\"Generator\" content=\"Sitefinity (.*?)\ \/><link/ },
31
31
  :examples => [],
32
32
  :paths => ["#{url}"]
33
33
  }
@@ -0,0 +1,25 @@
1
+ module Intrigue
2
+ module Ident
3
+ module Check
4
+ class Typo3 < Intrigue::Ident::Check::Base
5
+
6
+ def generate_checks(url)
7
+ [
8
+ {
9
+ :type => "application",
10
+ :vendor => "Typo3",
11
+ :product => "CMS",
12
+ :match_details => "generator tag",
13
+ :version => nil,
14
+ :match_type => :content_body,
15
+ :match_content => /<meta name="generator" content="TYPO3 CMS"/i,
16
+ :paths => ["#{url}"],
17
+ :examples => ["http://www2.wessmann.com/index.php?id=52"]
18
+ }
19
+ ]
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -14,7 +14,7 @@ include Intrigue::Ident::TraverseExceptions
14
14
  module Intrigue
15
15
  module Ident
16
16
 
17
- VERSION=0.64
17
+ VERSION=0.65
18
18
 
19
19
  def generate_requests_and_check(url)
20
20
 
@@ -60,7 +60,7 @@ module Intrigue
60
60
 
61
61
  # gather all fingeprints for each product
62
62
  # this will look like an array of checks, each with a uri and a SET of checks
63
- generated_checks = Intrigue::Ident::CheckFactory.all.map{|x| x.new.generate_checks(url) }.flatten
63
+ generated_checks = Intrigue::Ident::CheckFactory.all.map{|x| x.new.generate_checks("x") }.flatten
64
64
 
65
65
  # group by the uris, with the associated checks
66
66
  # TODO - this only currently supports the first path of the group!!!!
@@ -87,6 +87,11 @@ module Intrigue
87
87
  matches.each do |m|
88
88
  next if (m["match_type"] == "content_body" &&
89
89
  m["matched_content"] == "(?-mix:Drupal)")
90
+
91
+ next if (m["match_type"] == "content_cookies" &&
92
+ m["matched_content"] == "(?i-mx:ADRUM_BTa)" &&
93
+ m["product"] == "Jobvite")
94
+
90
95
  passed_matches << m
91
96
  end
92
97
  passed_matches
@@ -122,11 +127,11 @@ module Intrigue
122
127
  def _match_uri_hash(check,data)
123
128
  return nil unless check && data
124
129
 
125
- #puts "Trying to match #{check[:vendor]} #{check[:product]}: #{data["details"]["cookies"][0..10]}"
126
-
127
130
  # data[:body] => page body
128
131
  # data[:headers] => block of text with headers, one per line
129
132
  # data[:cookies] => set_cookie header
133
+ # data[:title] => parsed page title
134
+ # data[:generator] => parsed meta generator tag
130
135
  # data[:body_md5] => md5 hash of the body
131
136
  # if type "content", do the content check
132
137
 
@@ -143,6 +148,16 @@ module Intrigue
143
148
  if data["details"] && data["details"]["cookies"]
144
149
  match = _construct_match_response(check,data) if data["details"]["cookies"] =~ check[:match_content]
145
150
  end
151
+ elsif check[:match_type] == :content_generator
152
+ # Check only the set-cookie header
153
+ if data["details"] && data["details"]["generator"]
154
+ match = _construct_match_response(check,data) if data["details"]["generator"] =~ check[:match_content]
155
+ end
156
+ elsif check[:match_type] == :content_title
157
+ # Check only the set-cookie header
158
+ if data["details"] && data["details"]["title"]
159
+ match = _construct_match_response(check,data) if data["details"]["title"] =~ check[:match_content]
160
+ end
146
161
  elsif check[:match_type] == :checksum_body
147
162
  if data["details"] && data["details"]["response_data_hash"]
148
163
  match = _construct_match_response(check,data) if Digest::MD5.hexdigest(data["details"]["response_data_hash"]) == check[:checksum]
@@ -174,6 +189,7 @@ module Intrigue
174
189
  "port": 80,
175
190
  "forms": false,
176
191
  "title": "Index page",
192
+ "generator": "Whatever",
177
193
  "verbs": null,
178
194
  "headers": ["content-length: 701", "last-modified: Tue, 03 Jul 2018 16:55:36 GMT", "cache-control: no-cache", "content-type: text/html"],
179
195
  "host_id": 1571,
@@ -208,6 +224,14 @@ module Intrigue
208
224
  headers << "#{h}: #{v}"
209
225
  end
210
226
  data["details"]["headers"] = headers
227
+
228
+ ### grab the page attributes
229
+ match = response.body.match(/<title>(.*?)<\/title>/i)
230
+ data["details"]["title"] = match.captures.first if match
231
+
232
+ match = response.body.match(/<meta name="generator" content=(.*?)>/i)
233
+ data["details"]["generator"] = match.captures.first.gsub("\"","") if match
234
+
211
235
  data["details"]["cookies"] = response.header['set-cookie']
212
236
  data["details"]["response_data_hash"] = Digest::SHA256.base64digest("#{response.body}")
213
237
 
@@ -237,14 +261,9 @@ module Intrigue
237
261
  until( found || attempts >= max_attempts)
238
262
  attempts+=1
239
263
 
240
- # proxy configuration, disabled for now
241
- #if $config["http_proxy"]
242
- # proxy_addr = $config["http_proxy"]["host"]
243
- # proxy_port = $config["http_proxy"]["port"]
244
- # proxy_user = $config["http_proxy"]["user"]
245
- # proxy_pass = $config["http_proxy"]["pass"]
246
- #end
264
+ #proxy_addr = "127.0.0.1"
247
265
  proxy_addr = nil
266
+ #proxy_port = "8080"
248
267
  proxy_port = nil
249
268
 
250
269
  # set options
@@ -255,7 +274,7 @@ module Intrigue
255
274
  end
256
275
 
257
276
  http = Net::HTTP.start(uri.host, uri.port, proxy_addr, proxy_port, opts)
258
- #http.set_debug_output($stdout) if _get_system_config "debug"
277
+ #http.set_debug_output($stdout)
259
278
  http.read_timeout = 20
260
279
  http.open_timeout = 20
261
280
 
@@ -81,6 +81,7 @@ module TraverseExceptions
81
81
  entity_name =~ /^.*eloqua.com(:[0-9]*)?$/ ||
82
82
  entity_name =~ /^.*exacttarget.com(:[0-9]*)?$/ ||
83
83
  entity_name =~ /^.*facebook.com(:[0-9]*)?$/ ||
84
+ entity_name =~ /^.*fastly.net(:[0-9]*)?$/ ||
84
85
  entity_name =~ /^.*feeds2.feedburner.com(:[0-9]*)?$/ ||
85
86
  entity_name =~ /^.*footprintdns.com(:[0-9]*)?$/ ||
86
87
  entity_name =~ /^.*force.com(:[0-9]*)?$/ ||
@@ -16,5 +16,5 @@ if debug
16
16
  end
17
17
 
18
18
  puts "Results: "
19
- matches.each{|x| puts " - #{x[:cpe]}" } if matches
19
+ matches.each{|x| puts " - #{x["cpe"]}" } if matches
20
20
  puts "Done! #{matches.count} matches"
@@ -6,4 +6,4 @@ def list_checks
6
6
  Intrigue::Ident::CheckFactory.all.map{|x| x.new.generate_checks("x") }.flatten
7
7
  end
8
8
 
9
- list_checks.sort_by{|c| "#{c[:vendor]}"}.each {|c| puts " - #{c[:vendor]} #{c[:product]} #{c[:version]} #{"(dynamic version detection)" if c[:dynamic_version] != nil }"}
9
+ list_checks.sort_by{|c| "#{c[:vendor]}"}.each {|c| puts " - #{c[:vendor]} #{c[:product]}"}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intrigue-ident
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.64'
4
+ version: '0.65'
5
5
  platform: ruby
6
6
  authors:
7
7
  - jcran
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-12 00:00:00.000000000 Z
11
+ date: 2018-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -61,11 +61,50 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - Gemfile
63
63
  - Gemfile.lock
64
- - data/logos/apache.png
64
+ - data/logos/.DS_Store
65
+ - data/logos/acquia.png
66
+ - data/logos/amazon_cloudfront.png
67
+ - data/logos/apache_coyote.png
68
+ - data/logos/apache_tomcat.png
69
+ - data/logos/atlassian_bamboo.png
70
+ - data/logos/atlassian_bitbucket.png
71
+ - data/logos/atlassian_confluence.png
72
+ - data/logos/atlassian_crowd.png
73
+ - data/logos/atlassian_crucible.png
74
+ - data/logos/atlassian_fisheye.png
75
+ - data/logos/atlassian_jira.png
76
+ - data/logos/atlassian_sourcetree.png
77
+ - data/logos/automattic_wordpress.png
78
+ - data/logos/cisco_ssl_vpn.png
79
+ - data/logos/citrix_netscaler_gateway.png
80
+ - data/logos/cloudflare_cdn.png
81
+ - data/logos/drupal.png
82
+ - data/logos/f5_big-ip.png
83
+ - data/logos/f5_big-ip_apm.png
84
+ - data/logos/fastly.png
65
85
  - data/logos/generic.png
66
- - data/logos/oracle_java.png
67
- - data/logos/php.png
68
- - data/logos/varnish.png
86
+ - data/logos/gitlab.png
87
+ - data/logos/ibm_axway_securetransport.png
88
+ - data/logos/lithium.png
89
+ - data/logos/microsoft_asp.net.png
90
+ - data/logos/microsoft_iis.png
91
+ - data/logos/microsoft_outlook_web_access.png
92
+ - data/logos/microsoft_sharepoint.png
93
+ - data/logos/microtik_routeros.png
94
+ - data/logos/mikrotik_routeros.png
95
+ - data/logos/newrelic.png
96
+ - data/logos/nginx.png
97
+ - data/logos/okta.png
98
+ - data/logos/oracle_glassfish.png
99
+ - data/logos/oracle_java_application_server.png
100
+ - data/logos/oracle_java_server_pages.png
101
+ - data/logos/oracle_weblogic.png
102
+ - data/logos/phpmyadmin.png
103
+ - data/logos/tableau.png
104
+ - data/logos/vmware_esxi.png
105
+ - data/logos/vmware_horizon.png
106
+ - data/logos/zendesk.png
107
+ - data/logos/zimbra_server.png
69
108
  - intrigue-ident.gemspec
70
109
  - lib/check_factory.rb
71
110
  - lib/checks/acquia.rb
@@ -143,6 +182,7 @@ files:
143
182
  - lib/checks/tableau.rb
144
183
  - lib/checks/team_city.rb
145
184
  - lib/checks/telerik.rb
185
+ - lib/checks/typo3.rb
146
186
  - lib/checks/varnish.rb
147
187
  - lib/checks/vmware.rb
148
188
  - lib/checks/webmin.rb
Binary file
Binary file
Binary file
Binary file