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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f91b614544db4600d47b6c438d375db720472ba450931c6fe672291a42b01b5f
|
4
|
+
data.tar.gz: 762f2ff05f40d7aef97379be04a5341aca83312d8ff1f859f26336f9e2da7b8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e839dc08186fbfe8261848d939e187efffa985fd0b2af8d99455dccf147b84c2e31df84cfb0a3e180051079a2f06406a1873059d7f6c42b79524dd4b0fa2e8e
|
7
|
+
data.tar.gz: bfe37dc2199e514692f14838097f37d58bb87260d6671bebe873faccbe10233e53c81d47adcfd12690d14378ef54733c8aaced3c3c1d8046f6c197ec889d1a7c
|
data/Gemfile
CHANGED
data/lib/checks/adobe.rb
CHANGED
@@ -16,7 +16,20 @@ class Adobe < Intrigue::Ident::Check::Base
|
|
16
16
|
:hide => false,
|
17
17
|
:examples => ["https://209.235.70.106:443"],
|
18
18
|
:paths => ["#{url}"]
|
19
|
+
},
|
20
|
+
{
|
21
|
+
:type => "application",
|
22
|
+
:vendor => "Adobe",
|
23
|
+
:product => "Experience MAnager",
|
24
|
+
:version => nil,
|
25
|
+
:match_type => :content_body,
|
26
|
+
:match_content => /AEM/,
|
27
|
+
:match_details => "Adobe Experience Manager",
|
28
|
+
:hide => false,
|
29
|
+
:examples => ["https://www.ford.com/content/dam/login/core/content/login"],
|
30
|
+
:paths => ["#{url}/libs/granite/core/content/login.html"]
|
19
31
|
}
|
32
|
+
|
20
33
|
]
|
21
34
|
end
|
22
35
|
end
|
data/lib/checks/amazon.rb
CHANGED
@@ -8,9 +8,20 @@ class Amazon < Intrigue::Ident::Check::Base
|
|
8
8
|
{
|
9
9
|
:type => "service",
|
10
10
|
:vendor => "Amazon",
|
11
|
-
:product =>"Cloudfront
|
12
|
-
:match_details =>"
|
13
|
-
:version =>
|
11
|
+
:product =>"Cloudfront",
|
12
|
+
:match_details =>"cloudfront cache header",
|
13
|
+
:version => nil,
|
14
|
+
:match_type => :content_headers,
|
15
|
+
:match_content => /via:.*.cloudfront.net \(CloudFront\)/,
|
16
|
+
:hide => false,
|
17
|
+
:paths => ["#{url}"]
|
18
|
+
},
|
19
|
+
{
|
20
|
+
:type => "service",
|
21
|
+
:vendor => "Amazon",
|
22
|
+
:product =>"Cloudfront",
|
23
|
+
:match_details =>"Cloudfront - no configured hostname error condition",
|
24
|
+
:version => nil,
|
14
25
|
:match_type => :content_body,
|
15
26
|
:match_content => /ERROR: The request could not be satisfied/,
|
16
27
|
:hide => true,
|
@@ -19,9 +30,9 @@ class Amazon < Intrigue::Ident::Check::Base
|
|
19
30
|
{
|
20
31
|
:type => "service",
|
21
32
|
:vendor => "Amazon",
|
22
|
-
:product =>"Cloudfront
|
23
|
-
:match_details =>"Cloudfront - no configured hostname",
|
24
|
-
:version =>
|
33
|
+
:product =>"Cloudfront",
|
34
|
+
:match_details =>"Cloudfront - no configured hostname error condition",
|
35
|
+
:version => nil,
|
25
36
|
:match_type => :content_headers,
|
26
37
|
:match_content => /Error from cloudfront/,
|
27
38
|
:hide => true,
|
@@ -30,9 +41,9 @@ class Amazon < Intrigue::Ident::Check::Base
|
|
30
41
|
{
|
31
42
|
:type => "service",
|
32
43
|
:vendor => "Amazon",
|
33
|
-
:product =>"Cloudfront
|
34
|
-
:match_details =>"Cloudfront - 403",
|
35
|
-
:version =>
|
44
|
+
:product =>"Cloudfront",
|
45
|
+
:match_details =>"Cloudfront - 403 error condition",
|
46
|
+
:version => nil,
|
36
47
|
:match_type => :content_body,
|
37
48
|
:match_content => /<h1>403 Forbidden<\/h1><\/center>\n<hr><center>cloudflare/,
|
38
49
|
:hide => true,
|
data/lib/checks/apache.rb
CHANGED
@@ -48,6 +48,20 @@ class Apache < Intrigue::Ident::Check::Base
|
|
48
48
|
:examples => [ "http://15.224.214.203:80" ],
|
49
49
|
:paths => ["#{url}"]
|
50
50
|
},
|
51
|
+
{
|
52
|
+
:type => "application",
|
53
|
+
:vendor => "Apache",
|
54
|
+
:product =>"Sling",
|
55
|
+
:references => ["https://sling.apache.org/"],
|
56
|
+
:match_details =>"Apache Sling™ is a framework for RESTful web-applications based on an extensible content tree. also note that this may be related to apache experience manager",
|
57
|
+
:version => nil,
|
58
|
+
:match_type => :content_body,
|
59
|
+
:match_content => /<address>Apache Sling<\/address>/i,
|
60
|
+
:examples => [
|
61
|
+
"https://assets.microncpg.com/"
|
62
|
+
],
|
63
|
+
:paths => ["#{url}"]
|
64
|
+
},
|
51
65
|
{
|
52
66
|
:type => "application",
|
53
67
|
:vendor => "Apache",
|
data/lib/checks/atlassian.rb
CHANGED
@@ -56,10 +56,13 @@ class Atlassian < Intrigue::Ident::Check::Base
|
|
56
56
|
:match_details =>"Atlassian Jira",
|
57
57
|
:version => nil,
|
58
58
|
:match_type => :content_cookies,
|
59
|
-
:match_content => /atlassian.xsrf.token
|
59
|
+
:match_content => /atlassian.xsrf.token=/i,
|
60
60
|
:dynamic_version => lambda{ |x|
|
61
|
-
_first_body_capture(x,/<
|
61
|
+
_first_body_capture(x,/<meta name="ajs-version-number" content="(.*)">/)
|
62
62
|
},
|
63
|
+
:examples => [
|
64
|
+
"http://jira.understood.org/",
|
65
|
+
"http://jira.londonandpartners.com:80"],
|
63
66
|
:paths => ["#{url}"]
|
64
67
|
}
|
65
68
|
]
|
data/lib/checks/automattic.rb
CHANGED
@@ -5,9 +5,51 @@ module Check
|
|
5
5
|
|
6
6
|
def generate_checks(url)
|
7
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
|
+
},
|
8
49
|
{
|
9
50
|
:type => "application",
|
10
51
|
:vendor => "Automattic",
|
52
|
+
:tags => ["CMS"],
|
11
53
|
:product =>"Wordpress",
|
12
54
|
:match_details =>"Wordpress WP-JSON endpoint",
|
13
55
|
:version => nil,
|
@@ -18,6 +60,7 @@ module Check
|
|
18
60
|
{
|
19
61
|
:type => "application",
|
20
62
|
:vendor => "Automattic",
|
63
|
+
:tags => ["CMS"],
|
21
64
|
:product =>"Wordpress",
|
22
65
|
:match_details =>"Wordpress TinyMCE Editor",
|
23
66
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
@@ -29,6 +72,7 @@ module Check
|
|
29
72
|
{
|
30
73
|
:type => "application",
|
31
74
|
:vendor => "Automattic",
|
75
|
+
:tags => ["CMS"],
|
32
76
|
:product =>"Wordpress",
|
33
77
|
:match_details =>"Wordpress TinyMCE Editor",
|
34
78
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
@@ -40,6 +84,7 @@ module Check
|
|
40
84
|
{
|
41
85
|
:type => "application",
|
42
86
|
:vendor => "Automattic",
|
87
|
+
:tags => ["CMS"],
|
43
88
|
:product =>"Wordpress",
|
44
89
|
:match_details =>"Wordpress TinyMCE Editor",
|
45
90
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
@@ -51,6 +96,7 @@ module Check
|
|
51
96
|
{
|
52
97
|
:type => "application",
|
53
98
|
:vendor => "Automattic",
|
99
|
+
:tags => ["CMS"],
|
54
100
|
:product =>"Wordpress",
|
55
101
|
:match_details =>"Wordpress TinyMCE Editor",
|
56
102
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
@@ -62,6 +108,7 @@ module Check
|
|
62
108
|
{
|
63
109
|
:type => "application",
|
64
110
|
:vendor => "Automattic",
|
111
|
+
:tags => ["CMS"],
|
65
112
|
:product =>"Wordpress",
|
66
113
|
:match_details =>"Wordpress TinyMCE Editor",
|
67
114
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
@@ -73,6 +120,7 @@ module Check
|
|
73
120
|
{
|
74
121
|
:type => "application",
|
75
122
|
:vendor => "Automattic",
|
123
|
+
:tags => ["CMS"],
|
76
124
|
:product =>"Wordpress",
|
77
125
|
:match_details =>"Wordpress TinyMCE Editor",
|
78
126
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
@@ -84,6 +132,7 @@ module Check
|
|
84
132
|
{
|
85
133
|
:type => "application",
|
86
134
|
:vendor => "Automattic",
|
135
|
+
:tags => ["CMS"],
|
87
136
|
:product =>"Wordpress",
|
88
137
|
:match_details =>"Wordpress TinyMCE Editor",
|
89
138
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
@@ -95,6 +144,7 @@ module Check
|
|
95
144
|
{
|
96
145
|
:type => "application",
|
97
146
|
:vendor => "Automattic",
|
147
|
+
:tags => ["CMS"],
|
98
148
|
:product =>"Wordpress",
|
99
149
|
:match_details =>"Wordpress TinyMCE Editor",
|
100
150
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
@@ -106,6 +156,7 @@ module Check
|
|
106
156
|
{
|
107
157
|
:type => "application",
|
108
158
|
:vendor => "Automattic",
|
159
|
+
:tags => ["CMS"],
|
109
160
|
:product =>"Wordpress",
|
110
161
|
:match_details =>"Wordpress TinyMCE Editor",
|
111
162
|
:references => ["https://dcid.me/texts/fingerprinting-web-apps.html"],
|
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
@@ -9,12 +9,19 @@ class Base
|
|
9
9
|
|
10
10
|
private
|
11
11
|
|
12
|
+
def _body(content)
|
13
|
+
return nil unless content["details"]["hidden_response_data"]
|
14
|
+
content["details"]["hidden_response_data"]
|
15
|
+
end
|
16
|
+
|
12
17
|
# matching helpers
|
13
18
|
def _first_body_match(content, regex)
|
19
|
+
return nil unless content["details"]["hidden_response_data"]
|
14
20
|
content["details"]["hidden_response_data"].match(regex)
|
15
21
|
end
|
16
22
|
|
17
23
|
def _first_body_capture(content, regex, filter=[])
|
24
|
+
return nil unless content["details"]["hidden_response_data"]
|
18
25
|
x = content["details"]["hidden_response_data"].match(regex)
|
19
26
|
if x
|
20
27
|
x = x.captures.first.strip
|
@@ -26,10 +33,12 @@ class Base
|
|
26
33
|
end
|
27
34
|
|
28
35
|
def _first_header_match(content, regex)
|
36
|
+
return nil unless content["details"]["headers"]
|
29
37
|
content["details"]["headers"].match(regex).first
|
30
38
|
end
|
31
39
|
|
32
40
|
def _first_header_capture(content,regex, filter=[])
|
41
|
+
return nil unless content["details"]["headers"]
|
33
42
|
x = content["details"]["headers"].join("\n").match(regex)
|
34
43
|
if x
|
35
44
|
x = x.captures.first
|
@@ -41,10 +50,12 @@ class Base
|
|
41
50
|
end
|
42
51
|
|
43
52
|
def _first_cookie_match(content, regex)
|
53
|
+
return nil unless content["details"]["cookies"]
|
44
54
|
content["details"]["cookies"].match(regex).first
|
45
55
|
end
|
46
56
|
|
47
57
|
def _first_cookie_capture(content, regex, filter=[])
|
58
|
+
return nil unless content["details"]["headers"]
|
48
59
|
x = content["details"]["cookies"].match(regex)
|
49
60
|
if x
|
50
61
|
x = x.captures.first.strip
|
data/lib/checks/cisco.rb
CHANGED
@@ -5,6 +5,18 @@ module Check
|
|
5
5
|
|
6
6
|
def generate_checks(url)
|
7
7
|
[
|
8
|
+
{
|
9
|
+
:type => "hardware",
|
10
|
+
:vendor => "Cisco",
|
11
|
+
:product => "Meraki",
|
12
|
+
:match_details => "Meraki logo on an on-prem box",
|
13
|
+
:version => nil,
|
14
|
+
:match_type => :content_body,
|
15
|
+
:match_content => /<img id="header_logo" src="images\/meraki-logo.png"/,
|
16
|
+
:hide => false,
|
17
|
+
:examples => [],
|
18
|
+
:paths => ["#{url}"]
|
19
|
+
},
|
8
20
|
{
|
9
21
|
:type => "application",
|
10
22
|
:vendor => "Cisco",
|
data/lib/checks/citrix.rb
CHANGED
@@ -28,6 +28,20 @@ module Check
|
|
28
28
|
:match_content => /CTXMSAM_LogonFont/,
|
29
29
|
:hide => false,
|
30
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"]
|
31
45
|
}
|
32
46
|
|
33
47
|
]
|
data/lib/checks/cloudflare.rb
CHANGED
@@ -8,7 +8,7 @@ module Check
|
|
8
8
|
{
|
9
9
|
:type => "service",
|
10
10
|
:vendor => "Cloudflare",
|
11
|
-
:product =>"CDN",
|
11
|
+
:product => "CDN",
|
12
12
|
:version => nil,
|
13
13
|
:match_type => :content_cookies,
|
14
14
|
:match_content => /__cfduid/i,
|
@@ -18,7 +18,7 @@ module Check
|
|
18
18
|
{
|
19
19
|
:type => "service",
|
20
20
|
:vendor => "Cloudflare",
|
21
|
-
:product =>"CDN",
|
21
|
+
:product => "CDN",
|
22
22
|
:version => nil,
|
23
23
|
:match_type => :content_headers,
|
24
24
|
:match_content => /cloudflare-nginx/i,
|
@@ -28,11 +28,11 @@ module Check
|
|
28
28
|
{
|
29
29
|
:type => "service",
|
30
30
|
:vendor => "Cloudflare",
|
31
|
-
:product =>"CDN",
|
31
|
+
:product => "CDN",
|
32
32
|
:tags => ["error_page"],
|
33
33
|
:version => nil,
|
34
34
|
:match_type => :content_body,
|
35
|
-
:match_content =>
|
35
|
+
:match_content => /<title>Direct IP access not allowed \| Cloudflare/,
|
36
36
|
:match_details =>"Cloudflare - Direct IP Access",
|
37
37
|
:hide => true,
|
38
38
|
:paths => ["#{url}"]
|
@@ -40,7 +40,7 @@ module Check
|
|
40
40
|
{
|
41
41
|
:type => "service",
|
42
42
|
:vendor => "Cloudflare",
|
43
|
-
:product =>"CDN",
|
43
|
+
:product => "CDN",
|
44
44
|
:match_details =>"Cloudflare Error",
|
45
45
|
:tags => ["error_page"],
|
46
46
|
:version => "",
|
@@ -52,11 +52,11 @@ module Check
|
|
52
52
|
{
|
53
53
|
:type => "service",
|
54
54
|
:vendor => "Cloudflare",
|
55
|
-
:product =>"CDN",
|
55
|
+
:product => "CDN",
|
56
56
|
:match_details =>"Cloudfront Error - Direct IP Access",
|
57
|
-
:version =>
|
57
|
+
:version => nil,
|
58
58
|
:match_type => :content_body,
|
59
|
-
:match_content => /403\ Forbidden<\/h1><\/center>\n<hr><center>cloudflare<\/center
|
59
|
+
:match_content => /403\ Forbidden<\/h1><\/center>\n<hr><center>cloudflare<\/center>/im,
|
60
60
|
:hide => true,
|
61
61
|
:paths => ["#{url}"]
|
62
62
|
}
|
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
|