Files
metasploit-gs/lib/msf/core/modules/metadata/maps.rb
T

70 lines
1.6 KiB
Ruby
Raw Normal View History

2018-10-25 17:53:51 -05:00
#
# Core service class that provides storage of module metadata as well as operations on the metadata.
# Note that operations on this metadata are included as separate modules.
#
module Msf::Modules::Metadata::Maps
@mrefs = {}
@mports = {}
@mservs = {}
def all_remote_exploit_maps
2018-11-12 17:31:43 -06:00
return @mrefs, @mports, @mservs if @mrefs && !@mrefs.empty?
2018-10-25 17:53:51 -05:00
2018-11-12 17:31:43 -06:00
mrefs = {}
mports = {}
mservs = {}
2018-10-25 17:53:51 -05:00
2018-11-12 17:31:43 -06:00
get_metadata.each do |exploit|
# expand this in future to be more specific about remote exploits.
next unless exploit.type == "exploit"
fullname = exploit.fullname
2018-11-12 17:31:43 -06:00
exploit.references.each do |reference|
next if reference =~ /^URL/
ref = reference
ref.upcase!
2018-10-25 17:53:51 -05:00
2018-11-12 17:31:43 -06:00
mrefs[ref] ||= {}
mrefs[ref][fullname] = exploit
2018-11-12 17:31:43 -06:00
end
if exploit.rport
rport = exploit.rport
mports[rport.to_i] ||= {}
mports[rport.to_i][fullname] = exploit
2018-11-12 17:31:43 -06:00
end
2018-10-25 17:53:51 -05:00
2018-11-12 17:31:43 -06:00
unless exploit.autofilter_ports.nil? || exploit.autofilter_ports.empty?
exploit.autofilter_ports.each do |rport|
mports[rport.to_i] ||= {}
mports[rport.to_i][fullname] = exploit
2018-10-25 17:53:51 -05:00
end
2018-11-12 17:31:43 -06:00
end
2018-10-25 17:53:51 -05:00
2018-11-12 17:31:43 -06:00
unless exploit.autofilter_services.nil? || exploit.autofilter_services.empty?
exploit.autofilter_services.each do |serv|
mservs[serv] ||= {}
mservs[serv][fullname] = exploit
2018-10-25 17:53:51 -05:00
end
end
2018-11-12 17:31:43 -06:00
2018-10-25 17:53:51 -05:00
end
2018-11-12 17:31:43 -06:00
@mrefs = mrefs
@mports = mports
@mservs = mservs
2018-10-25 17:53:51 -05:00
return @mrefs, @mports, @mservs
end
private
def clear_maps
@mrefs = nil
@mports = nil
@mservs = nil
end
end