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.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/lib/checks/adobe.rb +13 -0
- data/lib/checks/amazon.rb +20 -9
- data/lib/checks/apache.rb +14 -0
- data/lib/checks/atlassian.rb +5 -2
- data/lib/checks/automattic.rb +51 -0
- data/lib/checks/banu.rb +28 -0
- data/lib/checks/base.rb +11 -0
- data/lib/checks/cisco.rb +12 -0
- data/lib/checks/citrix.rb +14 -0
- data/lib/checks/cloudflare.rb +8 -8
- data/lib/checks/craft.rb +25 -0
- data/lib/checks/docuwiki.rb +25 -0
- data/lib/checks/drupal.rb +4 -2
- data/lib/checks/f5.rb +14 -1
- data/lib/checks/generic.rb +19 -4
- data/lib/checks/gitlab.rb +4 -0
- data/lib/checks/google.rb +12 -1
- data/lib/checks/ibm.rb +63 -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/jive.rb +25 -0
- data/lib/checks/joomla.rb +1 -0
- data/lib/checks/jupyter.rb +26 -0
- data/lib/checks/lighttpd.rb +28 -0
- data/lib/checks/mailchimp.rb +25 -0
- data/lib/checks/microsoft.rb +39 -7
- data/lib/checks/openresty.rb +25 -0
- data/lib/checks/oracle.rb +59 -3
- data/lib/checks/pantheon.rb +26 -0
- data/lib/checks/php.rb +12 -1
- data/lib/checks/ruckus_wireless.rb +24 -0
- data/lib/checks/tableau.rb +26 -0
- data/lib/checks/zeit.rb +28 -0
- data/lib/checks/zimbra.rb +24 -0
- data/lib/checks/zscaler.rb +1 -1
- data/lib/intrigue-ident.rb +5 -5
- metadata +19 -2
@@ -0,0 +1,25 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class OpenResty < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "service",
|
10
|
+
:vendor =>"OpenResty",
|
11
|
+
:product =>"OpenResty",
|
12
|
+
:match_details =>"server header for OpenResty",
|
13
|
+
:version => nil,
|
14
|
+
:match_type => :content_headers,
|
15
|
+
:match_content => /server: openresty/i,
|
16
|
+
:examples => ["http://54.164.224.102:80"],
|
17
|
+
:paths => ["#{url}"]
|
18
|
+
}
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/checks/oracle.rb
CHANGED
@@ -5,7 +5,7 @@ module Check
|
|
5
5
|
|
6
6
|
def generate_checks(url)
|
7
7
|
[
|
8
|
-
{
|
8
|
+
{ # TODO are HTTP-server and application-server the same thing?
|
9
9
|
:type => "application",
|
10
10
|
:vendor => "Oracle",
|
11
11
|
:product =>"Application Server",
|
@@ -15,8 +15,10 @@ module Check
|
|
15
15
|
:match_type => :content_headers,
|
16
16
|
:match_content => /server: Oracle-Application-Server/,
|
17
17
|
:hide => false,
|
18
|
-
:dynamic_version => lambda { |x|
|
19
|
-
|
18
|
+
:dynamic_version => lambda { |x|
|
19
|
+
_first_header_capture(x,/server:.*\/(.*) Oracle-HTTP-Server,/) || _first_header_capture(x,/server: Oracle-Application-Server-(.*)/) },
|
20
|
+
:examples => ["https://63.85.74.53:443","https://rss.tomthumb.com:443"],
|
21
|
+
:verify => ["YWxiZXJ0c29ucyNJbnRyaWd1ZTo6RW50aXR5OjpVcmkjaHR0cHM6Ly9yc3MudG9tdGh1bWIuY29tOjQ0Mw=="],
|
20
22
|
:paths => ["#{url}"]
|
21
23
|
},
|
22
24
|
{
|
@@ -47,6 +49,47 @@ module Check
|
|
47
49
|
:examples => ["http://52.2.97.57:80"],
|
48
50
|
:paths => ["#{url}"]
|
49
51
|
},
|
52
|
+
{
|
53
|
+
:type => "application",
|
54
|
+
:vendor => "Oracle",
|
55
|
+
:product =>"Java",
|
56
|
+
:match_details =>"JSESSIONID cookie",
|
57
|
+
:references => ["https://javarevisited.blogspot.com/2012/08/what-is-jsessionid-in-j2ee-web.html"],
|
58
|
+
:version => nil,
|
59
|
+
:match_type => :content_cookies,
|
60
|
+
:match_content => /JSESSIONID=/,
|
61
|
+
:hide => false,
|
62
|
+
:examples => ["https://birdcam.xcelenergy.com:443"],
|
63
|
+
:paths => ["#{url}"]
|
64
|
+
},
|
65
|
+
{ # TODO - this will tell us J2EE versions, see references!!!
|
66
|
+
:type => "application",
|
67
|
+
:vendor => "Oracle",
|
68
|
+
:product =>"Java Application Server",
|
69
|
+
:match_details =>"x-header",
|
70
|
+
:references => ["http://www.ntu.edu.sg/home/ehchua/programming/java/javaservlets.html"],
|
71
|
+
:version => nil,
|
72
|
+
:dynamic_version => lambda { |x| _first_header_capture(x,/^x-powered-by: Servlet\/(.*)JSP.*$/) },
|
73
|
+
:match_type => :content_headers,
|
74
|
+
:match_content => /x-powered-by: Servlet/,
|
75
|
+
:hide => false,
|
76
|
+
:paths => ["#{url}"],
|
77
|
+
:examples => ["http://165.160.15.20/"]
|
78
|
+
},
|
79
|
+
{ # TODO - this will tell us J2EE versions, see references!!!
|
80
|
+
:type => "application",
|
81
|
+
:vendor => "Oracle",
|
82
|
+
:product =>"Java Server Pages",
|
83
|
+
:match_details =>"x-header",
|
84
|
+
:references => ["http://www.ntu.edu.sg/home/ehchua/programming/java/javaservlets.html"],
|
85
|
+
:version => nil,
|
86
|
+
:dynamic_version => lambda { |x| _first_header_capture(x,/^x-powered-by: Servlet\/.*JSP\/(.*)$/) },
|
87
|
+
:match_type => :content_headers,
|
88
|
+
:match_content => /x-powered-by: Servlet\/.*JSP.*/,
|
89
|
+
:hide => false,
|
90
|
+
:paths => ["#{url}"],
|
91
|
+
:examples => ["http://165.160.15.20/"]
|
92
|
+
},
|
50
93
|
{
|
51
94
|
:type => "application",
|
52
95
|
:vendor => "Oracle",
|
@@ -64,6 +107,19 @@ module Check
|
|
64
107
|
:hide => false,
|
65
108
|
:examples => ["https://reset.oxy.com:443"],
|
66
109
|
:paths => ["#{url}"]
|
110
|
+
},
|
111
|
+
{
|
112
|
+
:type => "application",
|
113
|
+
:vendor => "Oracle",
|
114
|
+
:product =>"Weblogic",
|
115
|
+
:match_details =>"weblogic fault / fail",
|
116
|
+
:references => ["https://coderanch.com/t/603067/application-servers/Calling-weblogic-webservice-error"],
|
117
|
+
:version => nil,
|
118
|
+
:match_type => :content_body,
|
119
|
+
:match_content => /<faultcode>env:WebServiceFault/,
|
120
|
+
:hide => false,
|
121
|
+
:examples => ["https://css-ewebsvcs.freddiemac.com:443"],
|
122
|
+
:paths => ["#{url}"]
|
67
123
|
}
|
68
124
|
]
|
69
125
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Pantheon < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "service",
|
10
|
+
:vendor => "Pantheon",
|
11
|
+
:product => "Pantheon",
|
12
|
+
:tags => ["CMS"],
|
13
|
+
:match_details => "x-pantheon-site header",
|
14
|
+
:version => nil,
|
15
|
+
:match_type => :content_headers,
|
16
|
+
:match_content => /x-pantheon-site/,
|
17
|
+
:paths => ["#{url}"]
|
18
|
+
}
|
19
|
+
|
20
|
+
]
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/checks/php.rb
CHANGED
@@ -9,7 +9,7 @@ module Check
|
|
9
9
|
:type => "application",
|
10
10
|
:vendor =>"PHP",
|
11
11
|
:product =>"PHP",
|
12
|
-
:match_details =>"",
|
12
|
+
:match_details =>"x-powered-by header",
|
13
13
|
:version => nil,
|
14
14
|
:match_type => :content_headers,
|
15
15
|
:match_content => /x-powered-by: PHP/i,
|
@@ -18,6 +18,17 @@ module Check
|
|
18
18
|
},
|
19
19
|
:examples => ["http://78.40.183.96:8081"],
|
20
20
|
:paths => ["#{url}"]
|
21
|
+
},
|
22
|
+
{
|
23
|
+
:type => "application",
|
24
|
+
:vendor =>"PHP",
|
25
|
+
:product =>"PHP",
|
26
|
+
:match_details =>"cookie",
|
27
|
+
:version => nil,
|
28
|
+
:match_type => :content_cookies,
|
29
|
+
:match_content => /PHPSESSID=/i,
|
30
|
+
:examples => ["http://107.20.49.246:80"],
|
31
|
+
:paths => ["#{url}"]
|
21
32
|
}
|
22
33
|
]
|
23
34
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class RuckusWireless < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "application",
|
10
|
+
:vendor =>"Ruckus Wireless",
|
11
|
+
:product =>"Admin",
|
12
|
+
:match_details =>"login page for ruckus wireless device",
|
13
|
+
:match_type => :content_body,
|
14
|
+
:match_content => /<title>Ruckus Wireless Admin/i,
|
15
|
+
:examples => [],
|
16
|
+
:paths => ["#{url}"]
|
17
|
+
}
|
18
|
+
]
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Tableau < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "application",
|
10
|
+
:vendor => "Tableau",
|
11
|
+
:product => "Tableau",
|
12
|
+
:match_details => "Tableau Server",
|
13
|
+
:version => nil,
|
14
|
+
:references => ["https://community.tableau.com/thread/165653"],
|
15
|
+
:match_type => :content_body,
|
16
|
+
:match_content => /<meta name="vizportal-config" data-buildId=/i,
|
17
|
+
:examples => ["http://137.154.26.56:80"],
|
18
|
+
:paths => ["#{url}"]
|
19
|
+
}
|
20
|
+
]
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/checks/zeit.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Zeit < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "application",
|
10
|
+
:vendor =>"Zeit",
|
11
|
+
:product =>"Next.js",
|
12
|
+
:match_details =>"x-powered-by header",
|
13
|
+
:references => ["https://zeit.co/blog/next"],
|
14
|
+
:match_type => :content_headers,
|
15
|
+
:match_content => /x-powered-by: Next.js/i,
|
16
|
+
:dynamic_version => lambda { |x|
|
17
|
+
_first_header_capture(x,/sx-powered-by: Next.js\ (.*)/i)
|
18
|
+
},
|
19
|
+
:examples => ["http://static.invisionapp.com:80"],
|
20
|
+
:paths => ["#{url}"]
|
21
|
+
}
|
22
|
+
]
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Zimbra < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(url)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:type => "service",
|
10
|
+
:vendor =>"Zimbra",
|
11
|
+
:product =>"Server",
|
12
|
+
:match_details =>"login page for zimbra",
|
13
|
+
:match_type => :content_body,
|
14
|
+
:match_content => /<title>Zimbra Web Client Sign In/i,
|
15
|
+
:examples => ["https://219.84.198.177:443"],
|
16
|
+
:paths => ["#{url}"]
|
17
|
+
}
|
18
|
+
]
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/checks/zscaler.rb
CHANGED
data/lib/intrigue-ident.rb
CHANGED
@@ -11,7 +11,7 @@ Dir["#{check_folder}/*.rb"].each { |file| require_relative file }
|
|
11
11
|
module Intrigue
|
12
12
|
module Ident
|
13
13
|
|
14
|
-
VERSION=0.
|
14
|
+
VERSION=0.51
|
15
15
|
|
16
16
|
def generate_requests_and_check(url)
|
17
17
|
|
@@ -51,7 +51,7 @@ module Intrigue
|
|
51
51
|
results.compact
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
54
|
+
def check_intrigue_uri_hash(intrigue_uri_data)
|
55
55
|
|
56
56
|
results = []
|
57
57
|
|
@@ -70,7 +70,7 @@ module Intrigue
|
|
70
70
|
|
71
71
|
# call each check, collecting the product if it's a match
|
72
72
|
ggc.last.each do |check|
|
73
|
-
results <<
|
73
|
+
results << _match_uri_hash(check, intrigue_uri_data)
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
@@ -106,7 +106,7 @@ module Intrigue
|
|
106
106
|
}
|
107
107
|
end
|
108
108
|
|
109
|
-
def
|
109
|
+
def _match_uri_hash(check,data)
|
110
110
|
return nil unless check && data
|
111
111
|
|
112
112
|
#puts "Trying to match #{check[:vendor]} #{check[:product]}: #{data["details"]["cookies"][0..10]}"
|
@@ -199,7 +199,7 @@ module Intrigue
|
|
199
199
|
data["details"]["response_data_hash"] = Digest::SHA256.base64digest("#{response.body}")
|
200
200
|
|
201
201
|
# call the actual matcher & return
|
202
|
-
|
202
|
+
_match_uri_hash check, data
|
203
203
|
end
|
204
204
|
|
205
205
|
def _http_request(method, uri_string, credentials=nil, headers={}, data=nil, limit = 10, open_timeout=15, read_timeout=15)
|
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.
|
4
|
+
version: '0.51'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jcran
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -71,13 +71,16 @@ files:
|
|
71
71
|
- lib/checks/aruba.rb
|
72
72
|
- lib/checks/atlassian.rb
|
73
73
|
- lib/checks/automattic.rb
|
74
|
+
- lib/checks/banu.rb
|
74
75
|
- lib/checks/base.rb
|
75
76
|
- lib/checks/chef.rb
|
76
77
|
- lib/checks/cisco.rb
|
77
78
|
- lib/checks/citrix.rb
|
78
79
|
- lib/checks/cloudflare.rb
|
79
80
|
- lib/checks/cpanel.rb
|
81
|
+
- lib/checks/craft.rb
|
80
82
|
- lib/checks/django.rb
|
83
|
+
- lib/checks/docuwiki.rb
|
81
84
|
- lib/checks/drupal.rb
|
82
85
|
- lib/checks/f5.rb
|
83
86
|
- lib/checks/fastly.rb
|
@@ -88,13 +91,21 @@ files:
|
|
88
91
|
- lib/checks/groovy.rb
|
89
92
|
- lib/checks/heroku.rb
|
90
93
|
- lib/checks/hp.rb
|
94
|
+
- lib/checks/ibm.rb
|
95
|
+
- lib/checks/ivanti.rb
|
96
|
+
- lib/checks/jamf.rb
|
97
|
+
- lib/checks/jekyll.rb
|
91
98
|
- lib/checks/jenkins.rb
|
99
|
+
- lib/checks/jive.rb
|
92
100
|
- lib/checks/jobvite.rb
|
93
101
|
- lib/checks/joomla.rb
|
102
|
+
- lib/checks/jupyter.rb
|
103
|
+
- lib/checks/lighttpd.rb
|
94
104
|
- lib/checks/limesuvey.rb
|
95
105
|
- lib/checks/lithium.rb
|
96
106
|
- lib/checks/lotus.rb
|
97
107
|
- lib/checks/magento.rb
|
108
|
+
- lib/checks/mailchimp.rb
|
98
109
|
- lib/checks/mcafee.rb
|
99
110
|
- lib/checks/mediawiki.rb
|
100
111
|
- lib/checks/microsoft.rb
|
@@ -102,8 +113,10 @@ files:
|
|
102
113
|
- lib/checks/new_relic.rb
|
103
114
|
- lib/checks/nginx.rb
|
104
115
|
- lib/checks/okta.rb
|
116
|
+
- lib/checks/openresty.rb
|
105
117
|
- lib/checks/oracle.rb
|
106
118
|
- lib/checks/palo_alto.rb
|
119
|
+
- lib/checks/pantheon.rb
|
107
120
|
- lib/checks/pardot.rb
|
108
121
|
- lib/checks/pfsense.rb
|
109
122
|
- lib/checks/php.rb
|
@@ -111,12 +124,16 @@ files:
|
|
111
124
|
- lib/checks/pivotal.rb
|
112
125
|
- lib/checks/rabbitmq.rb
|
113
126
|
- lib/checks/restlet.rb
|
127
|
+
- lib/checks/ruckus_wireless.rb
|
114
128
|
- lib/checks/sailpoint.rb
|
129
|
+
- lib/checks/tableau.rb
|
115
130
|
- lib/checks/team_city.rb
|
116
131
|
- lib/checks/telerik.rb
|
117
132
|
- lib/checks/varnish.rb
|
118
133
|
- lib/checks/vmware.rb
|
119
134
|
- lib/checks/wp_engine.rb
|
135
|
+
- lib/checks/zeit.rb
|
136
|
+
- lib/checks/zimbra.rb
|
120
137
|
- lib/checks/zscaler.rb
|
121
138
|
- lib/intrigue-ident.rb
|
122
139
|
- util/check.rb
|