Skip to content

Commit e5f96bd

Browse files
authored
Land rapid7#18760, Ensure DNS command config loading does not crash msfconsole
2 parents d05b85d + 7ce1310 commit e5f96bd

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

lib/msf/ui/console/driver.rb

+10-10
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,16 @@ def initialize(prompt = DefaultPrompt, prompt_char = DefaultPromptChar, opts = {
8080

8181
# Initialize attributes
8282

83-
dns_resolver = Rex::Proto::DNS::CachedResolver.new
84-
dns_resolver.extend(Rex::Proto::DNS::CustomNameserverProvider)
85-
dns_resolver.load_config
86-
87-
# Defer loading of modules until paths from opts can be added below
88-
framework_create_options = opts.merge({
89-
'DeferModuleLoads' => true,
90-
'CustomDnsResolver' => dns_resolver
91-
}
92-
)
83+
framework_create_options = opts.merge({ 'DeferModuleLoads' => true })
84+
85+
if Msf::FeatureManager.instance.enabled?(Msf::FeatureManager::DNS_FEATURE)
86+
dns_resolver = Rex::Proto::DNS::CachedResolver.new
87+
dns_resolver.extend(Rex::Proto::DNS::CustomNameserverProvider)
88+
dns_resolver.load_config
89+
90+
# Defer loading of modules until paths from opts can be added below
91+
framework_create_options = framework_create_options.merge({ 'CustomDnsResolver' => dns_resolver })
92+
end
9393
self.framework = opts['Framework'] || Msf::Simple::Framework.create(framework_create_options)
9494

9595
if self.framework.datastore['Prompt']

lib/net/dns/resolver.rb

+14-10
Original file line numberDiff line numberDiff line change
@@ -1084,17 +1084,21 @@ def parse_config_file
10841084
self.domain = arr[0]
10851085
self.nameservers = arr[1]
10861086
else
1087-
IO.foreach(@config[:config_file]) do |line|
1088-
line.gsub!(/\s*[;#].*/,"")
1089-
next unless line =~ /\S/
1090-
case line
1091-
when /^\s*domain\s+(\S+)/
1092-
self.domain = $1
1093-
when /^\s*search\s+(.*)/
1094-
self.searchlist = $1.split(" ")
1095-
when /^\s*nameserver\s+(.*)/
1096-
self.nameservers += $1.split(" ")
1087+
begin
1088+
IO.foreach(@config[:config_file]) do |line|
1089+
line.gsub!(/\s*[;#].*/,"")
1090+
next unless line =~ /\S/
1091+
case line
1092+
when /^\s*domain\s+(\S+)/
1093+
self.domain = $1
1094+
when /^\s*search\s+(.*)/
1095+
self.searchlist = $1.split(" ")
1096+
when /^\s*nameserver\s+(.*)/
1097+
self.nameservers += $1.split(" ")
1098+
end
10971099
end
1100+
rescue => e
1101+
@logger.error(e)
10981102
end
10991103
end
11001104
end

0 commit comments

Comments
 (0)