risu 1.7.5 → 1.7.6
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 +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)
|