intrigue-ident 0.1
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 +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +29 -0
- data/ident.rb +269 -0
- data/intrigue-ident.gemspec +22 -0
- data/lib/check_factory.rb +22 -0
- data/lib/checks/akamai.rb +22 -0
- data/lib/checks/amazon.rb +26 -0
- data/lib/checks/aruba.rb +21 -0
- data/lib/checks/asp_net.rb +68 -0
- data/lib/checks/atlassian.rb +55 -0
- data/lib/checks/base.rb +13 -0
- data/lib/checks/chef.rb +31 -0
- data/lib/checks/cisco.rb +33 -0
- data/lib/checks/citrix.rb +24 -0
- data/lib/checks/cloudflare.rb +59 -0
- data/lib/checks/cloudfront.rb +41 -0
- data/lib/checks/cpanel.rb +23 -0
- data/lib/checks/django.rb +22 -0
- data/lib/checks/drupal.rb +26 -0
- data/lib/checks/f5.rb +24 -0
- data/lib/checks/fastly.rb +22 -0
- data/lib/checks/generic.rb +23 -0
- data/lib/checks/gitlab.rb +22 -0
- data/lib/checks/google.rb +23 -0
- data/lib/checks/grafana.rb +22 -0
- data/lib/checks/jenkins.rb +40 -0
- data/lib/checks/joomla.rb +23 -0
- data/lib/checks/limesuvey.rb +22 -0
- data/lib/checks/lithium.rb +30 -0
- data/lib/checks/magento.rb +22 -0
- data/lib/checks/mcafee.rb +22 -0
- data/lib/checks/mediawiki.rb +38 -0
- data/lib/checks/microsoft.rb +69 -0
- data/lib/checks/nagios.rb +22 -0
- data/lib/checks/oracle.rb +38 -0
- data/lib/checks/palo_alto.rb +23 -0
- data/lib/checks/pardot.rb +22 -0
- data/lib/checks/pfsense.rb +25 -0
- data/lib/checks/phpmyadmin.rb +22 -0
- data/lib/checks/rabbitmq.rb +29 -0
- data/lib/checks/spring.rb +31 -0
- data/lib/checks/team_city.rb +22 -0
- data/lib/checks/telerik.rb +25 -0
- data/lib/checks/tomcat.rb +22 -0
- data/lib/checks/varnish.rb +27 -0
- data/lib/checks/wordpress.rb +120 -0
- data/lib/checks/wp_engine.rb +22 -0
- metadata +133 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Grafana < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Grafana",
|
10
|
+
:description => "Grafana",
|
11
|
+
:version => nil,
|
12
|
+
:type => :content_cookies,
|
13
|
+
:content => /grafana_sess/i,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Jenkins < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{ # might need to be its own, but haven't seen it yet outside jenkins
|
9
|
+
:name => "Hudson",
|
10
|
+
:description => "Hudson",
|
11
|
+
:version => nil,
|
12
|
+
:type => :content_headers,
|
13
|
+
:content => /x-hudson/i,
|
14
|
+
:dynamic_version => lambda { |x| x["x-hudson"] },
|
15
|
+
:paths => ["#{uri}"]
|
16
|
+
},
|
17
|
+
{
|
18
|
+
:name => "Jenkins",
|
19
|
+
:description => "Jenkins",
|
20
|
+
:version => nil,
|
21
|
+
:type => :content_headers,
|
22
|
+
:content => /X-Jenkins-Session/i,
|
23
|
+
:paths => ["#{uri}"]
|
24
|
+
},
|
25
|
+
{
|
26
|
+
:name => "Jenkins",
|
27
|
+
:description => "Jenkins",
|
28
|
+
:version => nil,
|
29
|
+
:type => :content_headers,
|
30
|
+
:content => /x-jenkins/i,
|
31
|
+
:dynamic_version => lambda { |x| x["x-jenkins"] },
|
32
|
+
:paths => ["#{uri}"]
|
33
|
+
}
|
34
|
+
]
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Joomla < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Joomla!",
|
10
|
+
:description => "Known Joomla Admin Page",
|
11
|
+
:type => :content_body,
|
12
|
+
:version => nil,
|
13
|
+
:content => /files_joomla/i,
|
14
|
+
:references => ["https://twitter.com/GreyNoiseIO/status/987547246538391552"],
|
15
|
+
:paths => ["#{uri}/administrator/manifests/files/joomla.xml"]
|
16
|
+
}
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class LimeSurvey < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "LimeSurvey",
|
10
|
+
:description => "LimeSurvey",
|
11
|
+
:type => :content_body,
|
12
|
+
:version => nil,
|
13
|
+
:content => /Donate to LimeSurvey/,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Lithium < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Lithum ",
|
10
|
+
:description => "Lithium Community Management",
|
11
|
+
:type => :content_cookies,
|
12
|
+
:version => nil,
|
13
|
+
:content => /LithiumVisitor/i,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
},
|
16
|
+
{
|
17
|
+
:name => "Lithum",
|
18
|
+
:description => "Lithium Community Management",
|
19
|
+
:type => :content_cookies,
|
20
|
+
:version => nil,
|
21
|
+
:content => /LiSESSIONID/i,
|
22
|
+
:paths => ["#{uri}"]
|
23
|
+
}
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Magento < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Magento",
|
10
|
+
:description => "Magento",
|
11
|
+
:type => :content_body,
|
12
|
+
:version => nil,
|
13
|
+
:content => /Mage.Cookies.path/i,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Mcafee < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "McAfee EPolicy Orchestrator",
|
10
|
+
:description => "McAfee EPolicy Orchestrator",
|
11
|
+
:type => :content_body,
|
12
|
+
:version => nil,
|
13
|
+
:content => /McAfee Agent Activity Log/i,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class MediaWiki < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "MediaWiki",
|
10
|
+
:description => "MediaWiki",
|
11
|
+
:type => :content_body,
|
12
|
+
:version => nil,
|
13
|
+
:content => /<a href="\/\/www.mediawiki.org\/">Powered by MediaWiki<\/a>/,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
=begin
|
26
|
+
all_checks = [{
|
27
|
+
:uri => "#{uri}",
|
28
|
+
:checklist => [
|
29
|
+
{
|
30
|
+
:name => "Yoast Wordpress SEO Plugin", # won't be used if we have
|
31
|
+
:description => "Yoast Wordpress SEO Plugin",
|
32
|
+
:type => "content",
|
33
|
+
:content => /<!-- \/ Yoast WordPress SEO plugin. -->/,
|
34
|
+
:test_site => "https://ip-50-62-231-56.ip.secureserver.net",
|
35
|
+
:dynamic_name => lambda{|x| x.scan(/the Yoast WordPress SEO plugin v.* - h/)[0].gsub("the ","").gsub(" - h","") }
|
36
|
+
}
|
37
|
+
]},
|
38
|
+
=end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Microsoft < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Microsoft Forefront TMG",
|
10
|
+
:description => "Microsoft Forefront Threat Management Gateway",
|
11
|
+
:version => nil,
|
12
|
+
:type => :content_cookies,
|
13
|
+
:content => /<title>Microsoft Forefront TMG/,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
},
|
16
|
+
{
|
17
|
+
:name => "Microsoft IIS 8.0",
|
18
|
+
:description => "Microsoft IIS 8.0",
|
19
|
+
:version => nil,
|
20
|
+
:type => :content_body,
|
21
|
+
:content => /<img src=\"iis-8.png\"/,
|
22
|
+
:examples => ["http://66.162.2.18:80"],
|
23
|
+
:paths => ["#{uri}"]
|
24
|
+
},
|
25
|
+
{
|
26
|
+
:name => "Microsoft IIS 8.5",
|
27
|
+
:description => "Microsoft IIS 8.5",
|
28
|
+
:version => nil,
|
29
|
+
:type => :content_body,
|
30
|
+
:content => /<img src=\"iis-85.png\"/,
|
31
|
+
:examples => ["http://103.1.221.151:80"],
|
32
|
+
:paths => ["#{uri}"]
|
33
|
+
},
|
34
|
+
{
|
35
|
+
:name => "Microsoft Outlook Web Access",
|
36
|
+
:description => "Microsoft Outlook Web Access",
|
37
|
+
:version => nil,
|
38
|
+
:type => :content_headers,
|
39
|
+
:content => /x-owa-version/,
|
40
|
+
:dynamic_version => lambda { |x| x["x-owa-version"] },
|
41
|
+
:paths => ["#{uri}"]
|
42
|
+
},
|
43
|
+
{
|
44
|
+
:name => "Microsoft Generic Error - 403",
|
45
|
+
:description => "Microsoft Generic Error - 403",
|
46
|
+
:tags => ["error_page"],
|
47
|
+
:version => nil,
|
48
|
+
:type => :content_body,
|
49
|
+
:hide => true,
|
50
|
+
:content => /403 Forbidden. The server denied the specified Uniform Resource Locator (URL)/,
|
51
|
+
:paths => ["#{uri}"]
|
52
|
+
},
|
53
|
+
{
|
54
|
+
:name => "Microsoft Generic Error - 503",
|
55
|
+
:description => "Microsoft Generic Error - 503",
|
56
|
+
:tags => ["error_page"],
|
57
|
+
:version => nil,
|
58
|
+
:type => :content_body,
|
59
|
+
:hide => true,
|
60
|
+
:content => /HTTP Error 503. The service is unavailable./,
|
61
|
+
:paths => ["#{uri}"]
|
62
|
+
}
|
63
|
+
]
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Nagios < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Nagios",
|
10
|
+
:description => "Nagios",
|
11
|
+
:version => nil,
|
12
|
+
:type => :content_headers,
|
13
|
+
:content => /nagios/i,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Oracle < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Oracle Glassfish",
|
10
|
+
:description => "Oracle / Sun GlassFish Enterprise Server",
|
11
|
+
:url => "",
|
12
|
+
:version => nil,
|
13
|
+
:type => :content_headers,
|
14
|
+
:content => /Sun GlassFish Enterprise Server/,
|
15
|
+
:hide => true,
|
16
|
+
:dynamic_version => lambda { |x| x["server"].match(/Sun GlassFish Enterprise Server v([\d\.])/).captures[0] },
|
17
|
+
:examples => ["http://52.4.12.185/"],
|
18
|
+
:paths => ["#{uri}"]
|
19
|
+
},
|
20
|
+
{
|
21
|
+
:name => "Oracle Glassfish",
|
22
|
+
:description => "Oracle / Sun GlassFish Enterprise Server",
|
23
|
+
:url => "",
|
24
|
+
:version => nil,
|
25
|
+
:type => :content_headers,
|
26
|
+
:content => /GlassFish Server Open Source Edition/,
|
27
|
+
:hide => true,
|
28
|
+
:dynamic_version => lambda { |x| x["server"].match(/GlassFish Server Open Source Edition\s+([\d\.]+)$/).captures[0] },
|
29
|
+
:examples => ["http://52.2.97.57:80"],
|
30
|
+
:paths => ["#{uri}"]
|
31
|
+
}
|
32
|
+
]
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class PaloAlto < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Palo Alto Networks GlobalProtect Portal",
|
10
|
+
:tags => ["tech:vpn"],
|
11
|
+
:description => "Pardot",
|
12
|
+
:version => nil,
|
13
|
+
:type => :content_body,
|
14
|
+
:content => /global-protect\/login.esp/i,
|
15
|
+
:paths => ["#{uri}"]
|
16
|
+
}
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Pardot < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "Pardot",
|
10
|
+
:description => "Pardot",
|
11
|
+
:version => nil,
|
12
|
+
:type => :content_cookies,
|
13
|
+
:content => /pardot/i,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class Pfsense < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "pfSense Firewall",
|
10
|
+
:description => "pfSense is an open source firewall/router " +
|
11
|
+
"computer software distribution based on FreeBSD. It is " +
|
12
|
+
"installed on a physical computer or a virtual machine to" +
|
13
|
+
"make a dedicated firewall/router for a network",
|
14
|
+
:version => nil,
|
15
|
+
:type => :content_body,
|
16
|
+
:content => /Login to pfSense/,
|
17
|
+
:paths => ["#{uri}"]
|
18
|
+
}
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Intrigue
|
2
|
+
module Ident
|
3
|
+
module Check
|
4
|
+
class PhpMyAdmin < Intrigue::Ident::Check::Base
|
5
|
+
|
6
|
+
def generate_checks(uri)
|
7
|
+
[
|
8
|
+
{
|
9
|
+
:name => "PhpMyAdmin",
|
10
|
+
:description => "PhpMyAdmin",
|
11
|
+
:version => nil,
|
12
|
+
:type => :content_cookies,
|
13
|
+
:content => /phpMyAdmin=/i,
|
14
|
+
:paths => ["#{uri}"]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|