risu 1.7.5 → 1.7.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +16 -10
- data/Gemfile.lock +125 -102
- data/LICENSE +2 -1
- data/NEWS.markdown +23 -2
- data/README.markdown +35 -22
- data/Rakefile +4 -4
- data/bin/risu +1 -1
- data/lib/risu.rb +12 -7
- data/lib/risu/base.rb +1 -1
- data/lib/risu/base/post_process_base.rb +2 -3
- data/lib/risu/base/post_process_manager.rb +2 -2
- data/lib/risu/base/schema.rb +3 -3
- data/lib/risu/base/shares_template_helper.rb +37 -3
- data/lib/risu/base/template_base.rb +2 -2
- data/lib/risu/base/template_helper.rb +4 -4
- data/lib/risu/base/template_manager.rb +2 -2
- data/lib/risu/base/templater.rb +1 -1
- data/lib/risu/cli.rb +1 -1
- data/lib/risu/cli/application.rb +7 -6
- data/lib/risu/cli/banner.rb +1 -1
- data/lib/risu/exceptions.rb +1 -1
- data/lib/risu/exceptions/invaliddocument.rb +1 -1
- data/lib/risu/graphs.rb +32 -0
- data/lib/risu/graphs/top_vuln_graph.rb +59 -0
- data/lib/risu/graphs/windows_os_graph.rb +134 -0
- data/lib/risu/models.rb +1 -1
- data/lib/risu/models/attachment.rb +1 -1
- data/lib/risu/models/familyselection.rb +1 -1
- data/lib/risu/models/host.rb +100 -44
- data/lib/risu/models/hostproperty.rb +1 -1
- data/lib/risu/models/individualpluginselection.rb +1 -1
- data/lib/risu/models/item.rb +43 -15
- data/lib/risu/models/patch.rb +1 -1
- data/lib/risu/models/plugin.rb +2 -2
- data/lib/risu/models/pluginspreference.rb +1 -1
- data/lib/risu/models/policy.rb +1 -1
- data/lib/risu/models/reference.rb +4 -3
- data/lib/risu/models/report.rb +2 -2
- data/lib/risu/models/serverpreference.rb +1 -1
- data/lib/risu/models/servicedescription.rb +1 -1
- data/lib/risu/models/version.rb +1 -1
- data/lib/risu/parsers.rb +1 -1
- data/lib/risu/parsers/nessus/nessus_document.rb +7 -1
- data/lib/risu/parsers/nessus/nessus_sax_listener.rb +6 -4
- data/lib/risu/parsers/nessus/postprocess.rb +2 -2
- data/lib/risu/parsers/nessus/postprocess/adobe_acrobat.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/adobe_air.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/adobe_reader.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/apache.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/apache_tomcat.rb +53 -0
- data/lib/risu/parsers/nessus/postprocess/apple_quicktime.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/blackberry_enterprise_server.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/ca_brightstor_arcserve.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/core_ftp.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/db2.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/downgrade_plugins.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/filezilla.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/firefox.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/flash_player.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/flexnet.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/foxit_reader.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/google_chrome.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/hp_system_mgt_homepage.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/java.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/openssh.rb +3 -1
- data/lib/risu/parsers/nessus/postprocess/openssl.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/oracle_database.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/php.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/post_process.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/risk_score.rb +2 -2
- data/lib/risu/parsers/nessus/postprocess/root_cause.rb +12 -7
- data/lib/risu/parsers/nessus/postprocess/servu.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/shockwave.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/sigplus_pro.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/symantec_pcanywhere.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/vlc.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/vmware_esxi.rb +3 -1
- data/lib/risu/parsers/nessus/postprocess/vmware_player.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/vmware_vcenter.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/vmware_vsphere_client.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/windows.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/winscp.rb +1 -1
- data/lib/risu/parsers/nessus/postprocess/wireshark.rb +1 -1
- data/lib/risu/parsers/nexpose/nexpose_document.rb +1 -1
- data/lib/risu/parsers/nexpose/simple_nexpose.rb +3 -3
- data/lib/risu/renderers.rb +1 -1
- data/lib/risu/renderers/csvrenderer.rb +4 -4
- data/lib/risu/renderers/nilrenderer.rb +4 -4
- data/lib/risu/renderers/pdfrenderer.rb +5 -5
- data/lib/risu/template_helpers.rb +32 -0
- data/lib/risu/templates/assets.rb +1 -1
- data/lib/risu/templates/cover_sheet.rb +1 -1
- data/lib/risu/templates/exec_summary.rb +1 -1
- data/lib/risu/templates/executive_summary_detailed.rb +1 -1
- data/lib/risu/templates/exploitablity_summary.rb +1 -1
- data/lib/risu/templates/finding_statistics.rb +1 -1
- data/lib/risu/templates/findings_host.rb +1 -1
- data/lib/risu/templates/findings_summary.rb +1 -1
- data/lib/risu/templates/findings_summary_with_pluginid.rb +1 -1
- data/lib/risu/templates/graphs.rb +1 -1
- data/lib/risu/templates/host_findings_csv.rb +1 -1
- data/lib/risu/templates/host_summary.rb +1 -1
- data/lib/risu/templates/malicious_process_detection.rb +1 -1
- data/lib/risu/templates/missing_root_causes.rb +1 -1
- data/lib/risu/templates/ms_patch_summary.rb +1 -1
- data/lib/risu/templates/ms_update_summary.rb +1 -1
- data/lib/risu/templates/ms_wsus_findings.rb +1 -1
- data/lib/risu/templates/notable.rb +1 -1
- data/lib/risu/templates/notable_detailed.rb +1 -1
- data/lib/risu/templates/pci_compliance.rb +1 -1
- data/lib/risu/templates/stig_findings_summary.rb +2 -2
- data/lib/risu/templates/talking_points.rb +5 -5
- data/lib/risu/templates/technical_findings.rb +1 -1
- data/lib/risu/templates/template.rb +1 -1
- data/lib/risu/templates/top_25.rb +1 -1
- data/lib/risu/version.rb +33 -0
- data/risu.gemspec +21 -20
- metadata +161 -67
- data/Gemfile.ci +0 -12
@@ -0,0 +1,134 @@
|
|
1
|
+
# Copyright (c) 2010-2016 Arxopia LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
#
|
4
|
+
# Redistribution and use in source and binary forms, with or without
|
5
|
+
# modification, are permitted provided that the following conditions are met:
|
6
|
+
#
|
7
|
+
# * Redistributions of source code must retain the above copyright
|
8
|
+
# notice, this list of conditions and the following disclaimer.
|
9
|
+
# * Redistributions in binary form must reproduce the above copyright
|
10
|
+
# notice, this list of conditions and the following disclaimer in the
|
11
|
+
# documentation and/or other materials provided with the distribution.
|
12
|
+
# * Neither the name of the Arxopia LLC nor the names of its contributors
|
13
|
+
# may be used to endorse or promote products derived from this software
|
14
|
+
# without specific prior written permission.
|
15
|
+
#
|
16
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
17
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
19
|
+
# DISCLAIMED. IN NO EVENT SHALL ARXOPIA LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
|
20
|
+
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
21
|
+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
22
|
+
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
23
|
+
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
24
|
+
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
25
|
+
# OF THE POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
|
27
|
+
module Risu
|
28
|
+
module Graphs
|
29
|
+
|
30
|
+
# TopVulnGraph
|
31
|
+
#
|
32
|
+
class TopVulnGraph
|
33
|
+
def graph
|
34
|
+
g = Gruff::Pie.new(GRAPH_WIDTH)
|
35
|
+
g.title = "Windows Operating Systems By Percentage"
|
36
|
+
g.sort = false
|
37
|
+
g.marker_count = 1
|
38
|
+
g.theme = {
|
39
|
+
:colors => Risu::GRAPH_COLORS,
|
40
|
+
:background_colors => %w(white white)
|
41
|
+
}
|
42
|
+
|
43
|
+
nt = Host.os_windows_nt.to_a.count
|
44
|
+
w2k = Host.os_windows_2k.to_a.count
|
45
|
+
xp = Host.os_windows_xp.to_a.count
|
46
|
+
w2k3 = Host.os_windows_2k3.to_a.count
|
47
|
+
vista = Host.os_windows_vista.to_a.count
|
48
|
+
w2k8 = Host.os_windows_2k8.to_a.count
|
49
|
+
w2k12 = Host.os_windows_2k12.to_a.count
|
50
|
+
w7 = Host.os_windows_7.to_a.count
|
51
|
+
w8 = Host.os_windows_8.to_a.count
|
52
|
+
other = (Host.os_windows.os_windows_other).to_a.count
|
53
|
+
|
54
|
+
g.data("NT", nt) if nt >= 1
|
55
|
+
g.data("2000", w2k) if w2k >= 1
|
56
|
+
g.data("XP", xp) if xp >= 1
|
57
|
+
g.data("Server 2003", w2k3) if w2k3 >= 1
|
58
|
+
g.data("Vista", vista) if vista >= 1
|
59
|
+
g.data("Server 2008", w2k8) if w2k8 >= 1
|
60
|
+
g.data("Server 2012", w2k12) if w2k12 >= 1
|
61
|
+
g.data("7", w7) if w7 >= 1
|
62
|
+
g.data("8", w8) if w8 >= 1
|
63
|
+
g.data("Other Windows", other) if other >= 1
|
64
|
+
|
65
|
+
StringIO.new(g.to_blob)
|
66
|
+
end
|
67
|
+
|
68
|
+
def text
|
69
|
+
nt = Host.os_windows_nt.to_a.count
|
70
|
+
w2k = Host.os_windows_2k.to_a.count
|
71
|
+
xp = Host.os_windows_xp.to_a.count
|
72
|
+
w2k3 = Host.os_windows_2k3.to_a.count
|
73
|
+
vista = Host.os_windows_vista.to_a.count
|
74
|
+
w2k8 = Host.os_windows_2k8.to_a.count
|
75
|
+
w2k12 = Host.os_windows_2k12.to_a.count
|
76
|
+
w7 = Host.os_windows_7.to_a.count
|
77
|
+
w8 = Host.os_windows_8.to_a.count
|
78
|
+
other = (Host.os_windows.os_windows_other).to_a.count
|
79
|
+
|
80
|
+
windows_os_count = nt + w2k + xp + w2k3 + vista + w7 + w8 + w2k8 + w2k12 + other
|
81
|
+
|
82
|
+
nt_percent = (nt.to_f / windows_os_count.to_f) * 100
|
83
|
+
w2k_percent = (w2k.to_f / windows_os_count.to_f) * 100
|
84
|
+
xp_percent = (xp.to_f / windows_os_count.to_f) * 100
|
85
|
+
w2k3_percent = (w2k3.to_f / windows_os_count.to_f) * 100
|
86
|
+
vista_percent = (vista.to_f / windows_os_count.to_f) * 100
|
87
|
+
|
88
|
+
w2k8_percent = (w2k8.to_f / windows_os_count.to_f) * 100
|
89
|
+
w7_percent = (w7.to_f / windows_os_count.to_f) * 100
|
90
|
+
w8_percent = (w8.to_f / windows_os_count.to_f) * 100
|
91
|
+
w2k12_percent = (w2k12.to_f / windows_os_count.to_f) * 100
|
92
|
+
|
93
|
+
text = "This graph shows the percentage of the different Microsoft Windows based operating systems " +
|
94
|
+
"found on the #{Report.title} network.\n\n"
|
95
|
+
|
96
|
+
text << "#{nt_percent.round.to_i}% of the network is Windows NT. " if nt_percent >= 1
|
97
|
+
text << "#{w2k_percent.round.to_i}% of the network is Windows 2000. " if w2k_percent >= 1
|
98
|
+
text << "#{xp_percent.round.to_i}% of the network is Windows XP. " if xp_percent >= 1
|
99
|
+
text << "#{w2k3_percent.round.to_i}% of the network is Windows Server 2003. " if w2k3_percent >= 1
|
100
|
+
text << "#{vista_percent.round.to_i}% of the network is Windows Vista. " if vista_percent >= 1
|
101
|
+
text << "#{w2k8_percent.round.to_i}% of the network is Windows Server 2008. " if w2k8_percent >= 1
|
102
|
+
text << "#{w7_percent.round.to_i}% of the network is Windows 7. " if w7_percent >= 1
|
103
|
+
text << "#{w8_percent.round.to_i}% of the network is Windows 8. " if w8_percent >= 1
|
104
|
+
text << "#{w2k12_percent.round.to_i}% of the network is Windows Server 20012. " if w2k12_percent >= 1
|
105
|
+
|
106
|
+
text << "\n\n" << unsupported_os_windows if nt > 0 or w2k > 0
|
107
|
+
|
108
|
+
return text
|
109
|
+
end
|
110
|
+
|
111
|
+
#
|
112
|
+
# @TODO comments
|
113
|
+
#
|
114
|
+
def has_data?
|
115
|
+
nt = Host.os_windows_nt.to_a.size
|
116
|
+
w2k = Host.os_windows_2k.to_a.size
|
117
|
+
xp = Host.os_windows_xp.to_a.size
|
118
|
+
w2k3 = Host.os_windows_2k3.to_a.size
|
119
|
+
vista = Host.os_windows_vista.to_a.size
|
120
|
+
w2k8 = Host.os_windows_2k8.to_a.size
|
121
|
+
w2k12 = Host.os_windows_2k12.to_a.size
|
122
|
+
w7 = Host.os_windows_7.to_a.size
|
123
|
+
w8 = Host.os_windows_8.to_a.size
|
124
|
+
other = (Host.os_windows.os_windows_other).to_a.size
|
125
|
+
|
126
|
+
if nt == 0 && w2k == 0 && xp == 0 && w2k3 == 0 && vista == 0 && w2k8 == 0 && w2k12 == 0 && w7 == 0 && w8 == 0 && other == 0
|
127
|
+
return false
|
128
|
+
else
|
129
|
+
return true
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
data/lib/risu/models.rb
CHANGED
data/lib/risu/models/host.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2010-
|
1
|
+
# Copyright (c) 2010-2016 Arxopia LLC.
|
2
2
|
# All rights reserved.
|
3
3
|
#
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
@@ -157,6 +157,9 @@ module Risu
|
|
157
157
|
|
158
158
|
# Negation query for all hosts with a Windows 2000 based Operating system
|
159
159
|
#
|
160
|
+
#
|
161
|
+
# @TODO update to use rails not syntax
|
162
|
+
#
|
160
163
|
# @return [ActiveRecord::Relation] with the query results
|
161
164
|
def not_os_windows_2k
|
162
165
|
where("os NOT LIKE '%Windows 2000%'")
|
@@ -171,6 +174,9 @@ module Risu
|
|
171
174
|
|
172
175
|
# Negation query for all hosts with a Windows XP based Operating system
|
173
176
|
#
|
177
|
+
#
|
178
|
+
# @TODO update to use rails not syntax
|
179
|
+
#
|
174
180
|
# @return [ActiveRecord::Relation] with the query results
|
175
181
|
def not_os_windows_xp
|
176
182
|
where("os NOT LIKE '%Windows XP%'")
|
@@ -185,6 +191,9 @@ module Risu
|
|
185
191
|
|
186
192
|
# Negation query for all hosts with a Windows Server 2003 based Operating system
|
187
193
|
#
|
194
|
+
#
|
195
|
+
# @TODO update to use rails not syntax
|
196
|
+
#
|
188
197
|
# @return [ActiveRecord::Relation] with the query results
|
189
198
|
def not_os_windows_2k3
|
190
199
|
where("os NOT LIKE '%Windows Server 2003%'")
|
@@ -199,6 +208,9 @@ module Risu
|
|
199
208
|
|
200
209
|
# Negation query for all hosts with a Windows Vista based Operating system
|
201
210
|
#
|
211
|
+
#
|
212
|
+
# @TODO update to use rails not syntax
|
213
|
+
#
|
202
214
|
# @return [ActiveRecord::Relation] with the query results
|
203
215
|
def not_os_windows_vista
|
204
216
|
where("os NOT LIKE '%Windows Vista%'")
|
@@ -213,6 +225,9 @@ module Risu
|
|
213
225
|
|
214
226
|
# Negation query for all hosts with a Windows Server 2008 based Operating system
|
215
227
|
#
|
228
|
+
#
|
229
|
+
# @TODO update to use rails not syntax
|
230
|
+
#
|
216
231
|
# @return [ActiveRecord::Relation] with the query results
|
217
232
|
def not_os_windows_2k8
|
218
233
|
where("os NOT LIKE '%Windows Server 2008%'")
|
@@ -227,6 +242,9 @@ module Risu
|
|
227
242
|
|
228
243
|
# Negation query for all hosts with a Windows Server 2012 based Operating system
|
229
244
|
#
|
245
|
+
#
|
246
|
+
# @TODO update to use rails not syntax
|
247
|
+
#
|
230
248
|
# @return [ActiveRecord::Relation] with the query results
|
231
249
|
def not_os_windows_2k12
|
232
250
|
where("os NOT LIKE '%Windows Server 2012%'")
|
@@ -241,6 +259,9 @@ module Risu
|
|
241
259
|
|
242
260
|
# Negation query for all hosts with a Windows 7 based Operating system
|
243
261
|
#
|
262
|
+
#
|
263
|
+
# @TODO update to use rails not syntax
|
264
|
+
#
|
244
265
|
# @return [ActiveRecord::Relation] with the query results
|
245
266
|
def not_os_windows_7
|
246
267
|
where("os NOT LIKE '%Windows 7%'")
|
@@ -255,11 +276,27 @@ module Risu
|
|
255
276
|
|
256
277
|
# Negation query for all hosts with a Windows 8 based Operating system
|
257
278
|
#
|
279
|
+
# @TODO update to use rails not syntax
|
280
|
+
#
|
258
281
|
# @return [ActiveRecord::Relation] with the query results
|
259
282
|
def not_os_windows_8
|
260
283
|
where("os NOT LIKE '%Windows 8%'")
|
261
284
|
end
|
262
285
|
|
286
|
+
# Queries for hosts with a Windows 10 based Operating System
|
287
|
+
#
|
288
|
+
# @return [ActiveRecord::Relation] with the query results
|
289
|
+
def os_windows_10
|
290
|
+
where("os LIKE '%Windows 10%'")
|
291
|
+
end
|
292
|
+
|
293
|
+
# Negation query for all hosts with a Windows 10 based Operating system
|
294
|
+
#
|
295
|
+
# @return [ActiveRecord::Relation] with the query results
|
296
|
+
def not_os_windows_10
|
297
|
+
where("os NOT LIKE '%Windows 10%'")
|
298
|
+
end
|
299
|
+
|
263
300
|
# Queries for hosts with a Windows Operating System that are not 2000,
|
264
301
|
# XP, 2003, Vista, 2008 or 7
|
265
302
|
#
|
@@ -366,12 +403,12 @@ module Risu
|
|
366
403
|
where("os NOT LIKE '%Mac OS X%'")
|
367
404
|
end
|
368
405
|
|
369
|
-
#@
|
406
|
+
#@TODO comment
|
370
407
|
def os_aix
|
371
408
|
where("os LIKE '%AIX%'")
|
372
409
|
end
|
373
410
|
|
374
|
-
#@
|
411
|
+
#@TODO comment
|
375
412
|
def not_os_aix
|
376
413
|
where("os NOT LIKE '%AIX%'")
|
377
414
|
end
|
@@ -385,6 +422,8 @@ module Risu
|
|
385
422
|
|
386
423
|
# Generates a graph of the high and medium findings count per host
|
387
424
|
#
|
425
|
+
# @deprecated
|
426
|
+
#
|
388
427
|
# @return [StringIO] Binary image object of the results
|
389
428
|
def top_vuln_graph(limit=10)
|
390
429
|
g = Gruff::Bar.new(GRAPH_WIDTH)
|
@@ -398,8 +437,8 @@ module Risu
|
|
398
437
|
|
399
438
|
Item.risks_by_host(limit).to_a.each do |item|
|
400
439
|
ip = Host.find_by_id(item.host_id).name
|
401
|
-
# count = Item.where(:host_id => item.host_id).where("severity IN (?)", [2,3]).count
|
402
440
|
count = Item.where(:host_id => item.host_id).where(:severity => 4).count
|
441
|
+
|
403
442
|
if count > 0
|
404
443
|
g.data(ip, count)
|
405
444
|
end
|
@@ -408,20 +447,20 @@ module Risu
|
|
408
447
|
StringIO.new(g.to_blob)
|
409
448
|
end
|
410
449
|
|
411
|
-
#
|
412
|
-
# @
|
450
|
+
# @deprecated
|
451
|
+
# @TODO comments
|
413
452
|
#
|
414
453
|
def windows_os_graph_has_data?
|
415
|
-
nt = Host.os_windows_nt.to_a.
|
416
|
-
w2k = Host.os_windows_2k.to_a.
|
417
|
-
xp = Host.os_windows_xp.to_a.
|
418
|
-
w2k3 = Host.os_windows_2k3.to_a.
|
419
|
-
vista = Host.os_windows_vista.to_a.
|
420
|
-
w2k8 = Host.os_windows_2k8.to_a.
|
421
|
-
w2k12 = Host.os_windows_2k12.to_a.
|
422
|
-
w7 = Host.os_windows_7.to_a.
|
423
|
-
w8 = Host.os_windows_8.to_a.
|
424
|
-
other = (Host.os_windows.os_windows_other).to_a.
|
454
|
+
nt = Host.os_windows_nt.to_a.size
|
455
|
+
w2k = Host.os_windows_2k.to_a.size
|
456
|
+
xp = Host.os_windows_xp.to_a.size
|
457
|
+
w2k3 = Host.os_windows_2k3.to_a.size
|
458
|
+
vista = Host.os_windows_vista.to_a.size
|
459
|
+
w2k8 = Host.os_windows_2k8.to_a.size
|
460
|
+
w2k12 = Host.os_windows_2k12.to_a.size
|
461
|
+
w7 = Host.os_windows_7.to_a.size
|
462
|
+
w8 = Host.os_windows_8.to_a.size
|
463
|
+
other = (Host.os_windows.os_windows_other).to_a.size
|
425
464
|
|
426
465
|
if nt == 0 && w2k == 0 && xp == 0 && w2k3 == 0 && vista == 0 && w2k8 == 0 && w2k12 == 0 && w7 == 0 && w8 == 0 && other == 0
|
427
466
|
return false
|
@@ -431,20 +470,29 @@ module Risu
|
|
431
470
|
end
|
432
471
|
|
433
472
|
#
|
434
|
-
# @
|
473
|
+
# @deprecated
|
474
|
+
# @TODO comments
|
435
475
|
#
|
436
476
|
def other_os_graph_has_data?
|
437
|
-
linux = Host.os_linux.to_a.
|
438
|
-
osx = Host.os_osx.to_a.
|
439
|
-
freebsd = Host.os_freebsd.to_a.
|
440
|
-
netbsd = Host.os_netbsd.to_a.
|
441
|
-
cisco = Host.os_cisco.to_a.
|
442
|
-
vxworks = Host.os_vxworks.to_a.
|
443
|
-
esx = Host.os_vmware_esx.to_a.
|
444
|
-
aix = Host.os_aix.to_a.
|
445
|
-
other = Host.os_other.to_a.
|
446
|
-
|
447
|
-
if linux == 0 &&
|
477
|
+
linux = Host.os_linux.to_a.size
|
478
|
+
osx = Host.os_osx.to_a.size
|
479
|
+
freebsd = Host.os_freebsd.to_a.size
|
480
|
+
netbsd = Host.os_netbsd.to_a.size
|
481
|
+
cisco = Host.os_cisco.to_a.size
|
482
|
+
vxworks = Host.os_vxworks.to_a.size
|
483
|
+
esx = Host.os_vmware_esx.to_a.size
|
484
|
+
aix = Host.os_aix.to_a.size
|
485
|
+
other = Host.os_other.to_a.size
|
486
|
+
|
487
|
+
if linux == 0 &&
|
488
|
+
osx == 0 &&
|
489
|
+
freebsd == 0 &&
|
490
|
+
netbsd == 0 &&
|
491
|
+
cisco == 0 &&
|
492
|
+
vxworks == 0 &&
|
493
|
+
esx == 0 &&
|
494
|
+
aix == 0 &&
|
495
|
+
other == 0
|
448
496
|
return false
|
449
497
|
else
|
450
498
|
return true
|
@@ -453,6 +501,7 @@ module Risu
|
|
453
501
|
|
454
502
|
# Graphs the percentage of other "non Windows" Operating Systems
|
455
503
|
#
|
504
|
+
# @deprecated
|
456
505
|
# @return [StringIO] Binary image object of the results
|
457
506
|
def other_os_graph
|
458
507
|
g = Gruff::Pie.new(GRAPH_WIDTH)
|
@@ -493,6 +542,7 @@ module Risu
|
|
493
542
|
end
|
494
543
|
|
495
544
|
# Graphs the percentage of Windows Operating Systems
|
545
|
+
# @deprecated
|
496
546
|
#
|
497
547
|
# @return [StringIO] Binary image object of the results
|
498
548
|
def windows_os_graph
|
@@ -530,8 +580,8 @@ module Risu
|
|
530
580
|
StringIO.new(g.to_blob)
|
531
581
|
end
|
532
582
|
|
533
|
-
#
|
534
|
-
#@
|
583
|
+
# @deprecated
|
584
|
+
#@TODO comment
|
535
585
|
#
|
536
586
|
def windows_os_graph_text
|
537
587
|
nt = Host.os_windows_nt.to_a.count
|
@@ -561,6 +611,7 @@ module Risu
|
|
561
611
|
text = "This graph shows the percentage of the different Microsoft Windows based operating systems " +
|
562
612
|
"found on the #{Report.title} network.\n\n"
|
563
613
|
|
614
|
+
# @TODO this should be a table sorted by %
|
564
615
|
text << "#{nt_percent.round.to_i}% of the network is Windows NT. " if nt_percent >= 1
|
565
616
|
text << "#{w2k_percent.round.to_i}% of the network is Windows 2000. " if w2k_percent >= 1
|
566
617
|
text << "#{xp_percent.round.to_i}% of the network is Windows XP. " if xp_percent >= 1
|
@@ -577,7 +628,7 @@ module Risu
|
|
577
628
|
end
|
578
629
|
|
579
630
|
#
|
580
|
-
# @
|
631
|
+
# @TODO comments
|
581
632
|
#
|
582
633
|
def unsupported_os?
|
583
634
|
aix_text = unsupported_os_aix
|
@@ -592,7 +643,8 @@ module Risu
|
|
592
643
|
return true
|
593
644
|
end
|
594
645
|
|
595
|
-
# @
|
646
|
+
# @TODO add plural check
|
647
|
+
# @deprecated
|
596
648
|
#
|
597
649
|
def unsupported_os_text
|
598
650
|
if !unsupported_os?
|
@@ -614,7 +666,8 @@ module Risu
|
|
614
666
|
return unsupported_os_text
|
615
667
|
end
|
616
668
|
|
617
|
-
# @
|
669
|
+
# @TODO comments
|
670
|
+
# @deprecated
|
618
671
|
def unsupported_os_windows
|
619
672
|
win_95_text = ""
|
620
673
|
win_98_text = ""
|
@@ -658,7 +711,8 @@ module Risu
|
|
658
711
|
return "#{win_95_text}#{win_98_text}#{win_me_text}#{win_nt_text}#{win_2000_text}#{win_xp_text}#{win_2003_text}"
|
659
712
|
end
|
660
713
|
|
661
|
-
# @
|
714
|
+
# @TODO comments
|
715
|
+
# @deprecated
|
662
716
|
def unsupported_os_aix
|
663
717
|
text = ""
|
664
718
|
aix = Host.os_aix.where("OS LIKE 'AIX 5.%'")
|
@@ -670,7 +724,8 @@ module Risu
|
|
670
724
|
return text
|
671
725
|
end
|
672
726
|
|
673
|
-
# @
|
727
|
+
# @TODO comments
|
728
|
+
# @deprecated
|
674
729
|
def unsupported_os_freebsd
|
675
730
|
text = ""
|
676
731
|
freebsd = Host.os_freebsd.where("OS LIKE 'FreeBSD 5.%'")
|
@@ -681,8 +736,9 @@ module Risu
|
|
681
736
|
return text
|
682
737
|
end
|
683
738
|
|
684
|
-
# @
|
739
|
+
# @TODO comments
|
685
740
|
#turn the os counts into blocks
|
741
|
+
# @deprecated
|
686
742
|
def other_os_graph_text
|
687
743
|
text = "This graph shows the percentage of the different Non-Windows based operating systems " +
|
688
744
|
"found on the #{Report.title} network.\n\n"
|
@@ -718,7 +774,7 @@ module Risu
|
|
718
774
|
end
|
719
775
|
|
720
776
|
#
|
721
|
-
# @
|
777
|
+
# @TODO comments
|
722
778
|
#
|
723
779
|
def top_n_vulnerable(n)
|
724
780
|
hosts = Item.risks_by_host(Host.count).count
|
@@ -735,24 +791,24 @@ module Risu
|
|
735
791
|
end
|
736
792
|
|
737
793
|
#
|
738
|
-
# @
|
794
|
+
# @TODO comments
|
739
795
|
#
|
740
796
|
def unique_hosts_with_critical
|
741
|
-
hosts = Item.critical_risks_by_host(Host.all.
|
742
|
-
hosts = hosts.sort_by {|
|
797
|
+
hosts = Item.critical_risks_by_host(Host.all.size).size
|
798
|
+
hosts = hosts.sort_by {| _k, v | v}
|
743
799
|
hosts.reverse!
|
744
800
|
end
|
745
801
|
|
746
802
|
#
|
747
|
-
# @
|
803
|
+
# @TODO comments
|
748
804
|
#
|
749
805
|
def unique_hosts_with_high
|
750
|
-
hosts = Item.high_risks_by_host(Host.all.
|
751
|
-
hosts = hosts.sort_by {|
|
806
|
+
hosts = Item.high_risks_by_host(Host.all.size).size
|
807
|
+
hosts = hosts.sort_by {| _k, v | v}
|
752
808
|
hosts.reverse!
|
753
809
|
end
|
754
810
|
|
755
|
-
# @
|
811
|
+
# @TODO
|
756
812
|
def unique_hosts_with_critical_and_high_count
|
757
813
|
hosts = Array.new
|
758
814
|
crit = Item.critical_risks_by_host(Host.all.count)
|