diff --git a/extensions/metasploit/rpcclient.rb b/extensions/metasploit/rpcclient.rb index 7b7eacd25..d024f831d 100644 --- a/extensions/metasploit/rpcclient.rb +++ b/extensions/metasploit/rpcclient.rb @@ -36,10 +36,12 @@ module Metasploit #auto start msfrpcd if (@config['auto_msfrpcd'] || false) launch_msf = '' + msf_os = '' @config['msf_path'].each do |path| if File.exist?(path['path'] + 'msfrpcd') launch_msf = path['path'] + 'msfrpcd' print_info 'Found msfrpcd: ' + launch_msf + msf_os = path['os'] end end if (launch_msf.length > 0) @@ -53,32 +55,35 @@ module Metasploit end msf_url += opts[:host] + ':' + opts[:port].to_s() + opts[:uri] + if msf_os.eql? "win" + print_info 'BeEF auto-connect with metasploit is currently not supported on MS Windows.' + else + child = IO.popen([launch_msf, "-f", argssl, "-P" , @config['pass'], "-U" , @config['user'], "-u" , opts[:uri], "-a" , opts[:host], "-p" , opts[:port].to_s()], 'r+') - child = IO.popen([launch_msf, "-f", argssl, "-P" , @config['pass'], "-U" , @config['user'], "-u" , opts[:uri], "-a" , opts[:host], "-p" , opts[:port].to_s()], 'r+') - - print_info 'Attempt to start msfrpcd, this may take a while. PID: ' + child.pid.to_s + print_info 'Attempt to start msfrpcd, this may take a while. PID: ' + child.pid.to_s - #Give daemon time to launch - #poll and giveup after timeout - retries = @config['auto_msfrpcd_timeout'] - uri = URI(msf_url) - http = Net::HTTP.new(uri.host, uri.port) + #Give daemon time to launch + #poll and giveup after timeout + retries = @config['auto_msfrpcd_timeout'] + uri = URI(msf_url) + http = Net::HTTP.new(uri.host, uri.port) - if opts[:ssl] - http.use_ssl = true - end - if not @config['ssl_verify'] - http.verify_mode = OpenSSL::SSL::VERIFY_NONE - end - headers = { - 'Content-Type' => "binary/message-pack" - } - path = uri.path.empty? ? "/" : uri.path - begin - sleep 1 - code = http.head(path, headers).code.to_i - rescue Exception - retry if (retries -= 1) > 0 + if opts[:ssl] + http.use_ssl = true + end + if not @config['ssl_verify'] + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + end + headers = { + 'Content-Type' => "binary/message-pack" + } + path = uri.path.empty? ? "/" : uri.path + begin + sleep 1 + code = http.head(path, headers).code.to_i + rescue Exception + retry if (retries -= 1) > 0 + end end else print_error 'Please add a custom path for msfrpcd to the config-file.'