class Risu::Parsers::Nessus::PostProcess::PostProcess
Public Class Methods
new()
click to toggle source
# File lib/risu/parsers/nessus/postprocess/post_process.rb, line 29 def initialize @name = "" @plugin_id = -1 @plugin_ids = [] @plugin_name = "" @item_name = "" end
Public Instance Methods
calculate_severity(current_severity, severity)
click to toggle source
# File lib/risu/parsers/nessus/postprocess/post_process.rb, line 131 def calculate_severity current_severity, severity if severity > current_severity return severity else return current_severity end end
create_item(host_id, severity)
click to toggle source
# File lib/risu/parsers/nessus/postprocess/post_process.rb, line 96 def create_item(host_id, severity) item = Item.new item.host_id = host_id item.plugin_id = @plugin_id item.plugin_output = nil item.port = 0 item.severity = severity item.plugin_name = @item_name item.save end
create_plugin()
click to toggle source
Creates a rollup plugin
# File lib/risu/parsers/nessus/postprocess/post_process.rb, line 61 def create_plugin plugin = Plugin.find_by_id(@plugin_id) newest_plugin = newest_plugin() if newest_plugin == nil return end if plugin == nil plugin = Plugin.new end plugin.id = @plugin_id plugin.plugin_name = @plugin_name plugin.family_name = "Risu Rollup Plugins" plugin.description = @description #newest_plugin.description || "" plugin.plugin_version = newest_plugin.plugin_version || "" plugin.plugin_publication_date = newest_plugin.plugin_publication_date plugin.plugin_modification_date = newest_plugin.plugin_modification_date plugin.vuln_publication_date = newest_plugin.vuln_publication_date plugin.cvss_vector = newest_plugin.cvss_vector || "" plugin.cvss_base_score = newest_plugin.cvss_base_score plugin.cvss_temporal_score = newest_plugin.cvss_temporal_score plugin.cvss_temporal_vector = newest_plugin.cvss_temporal_vector plugin.risk_factor = newest_plugin.risk_factor plugin.solution = newest_plugin.solution plugin.synopsis = newest_plugin.synopsis plugin.plugin_type = "Rollup" plugin.rollup = true plugin.save end
has_findings()
click to toggle source
# File lib/risu/parsers/nessus/postprocess/post_process.rb, line 110 def has_findings @plugin_ids.each do |plugin_id| if Item.where(:plugin_id => plugin_id) return true end end return false end
has_host_findings?(host_id)
click to toggle source
# File lib/risu/parsers/nessus/postprocess/post_process.rb, line 120 def has_host_findings? host_id @plugin_ids.each do |plugin_id| if Item.where(:plugin_id => plugin_id).where(:host_id => host_id).count >= 1 return true end end return false end
newest_plugin()
click to toggle source
NOTE: looks like its working
# File lib/risu/parsers/nessus/postprocess/post_process.rb, line 39 def newest_plugin newest = DateTime.new(0001, 01, 01) newest_plugin = nil @plugin_ids.uniq.each do |id| plugin = Plugin.find_by_id(id) if plugin == nil || plugin.plugin_modification_date == nil next end if plugin.plugin_modification_date >= newest newest = plugin.plugin_modification_date if plugin.plugin_modification_date != nil newest_plugin = plugin end end return newest_plugin end
run()
click to toggle source
# File lib/risu/parsers/nessus/postprocess/post_process.rb, line 140 def run if !has_findings() return end #Create the dummy plugin create_plugin() Host.all.each do |host| if !has_host_findings?(host.id) next end finding_severity = 0 @plugin_ids.each do |plugin_id| Item.where(:plugin_id => plugin_id).each do |item| severity = item.severity item.real_severity = severity item.severity = -1 item.save finding_severity = calculate_severity(finding_severity, severity) end end create_item(host.id, finding_severity) end end