From ae1fa3e9580b6e4e85c804fc403b278cc9de253c Mon Sep 17 00:00:00 2001 From: Brendan Coles Date: Wed, 9 Sep 2015 07:36:45 +0000 Subject: [PATCH] Rescue missing SSL cert/key files --- extensions/proxy/proxy.rb | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/extensions/proxy/proxy.rb b/extensions/proxy/proxy.rb index 0db574a80..8a4b7cea2 100644 --- a/extensions/proxy/proxy.rb +++ b/extensions/proxy/proxy.rb @@ -3,7 +3,7 @@ # Browser Exploitation Framework (BeEF) - http://beefproject.com # See the file 'doc/COPYING' for copying permission # -require 'openssl'; +require 'openssl' module BeEF module Extension @@ -20,12 +20,30 @@ module BeEF @conf = BeEF::Core::Configuration.instance @proxy_server = TCPServer.new(@conf.get('beef.extension.proxy.address'), @conf.get('beef.extension.proxy.port')) + # setup proxy for SSL/TLS ssl_context = OpenSSL::SSL::SSLContext.new - ssl_context.cert = OpenSSL::X509::Certificate.new(File.open(@conf.get('beef.extension.proxy.cert'))); - ssl_context.key = OpenSSL::PKey::RSA.new(File.open(@conf.get('beef.extension.proxy.key'))); + #ssl_context.ssl_version = :TLSv1_2 - ssl_server = OpenSSL::SSL::SSLServer.new(@proxy_server, ssl_context); - ssl_server.start_immediately = false; + # load certificate + begin + cert_file = @conf.get('beef.extension.proxy.cert') + cert = File.open(cert_file) + ssl_context.cert = OpenSSL::X509::Certificate.new(cert) + rescue + print_error "[Proxy] Could not load SSL certificate '#{cert_file}'" + end + + # load key + begin + key_file = @conf.get('beef.extension.proxy.key') + key = File.open(key_file) + ssl_context.key = OpenSSL::PKey::RSA.new(key) + rescue + print_error "[Proxy] Could not load SSL key '#{key_file}'" + end + + ssl_server = OpenSSL::SSL::SSLServer.new(@proxy_server, ssl_context) + ssl_server.start_immediately = false loop do ssl_socket = ssl_server.accept