diff --git a/config.yaml b/config.yaml index 7159582be..30b5e3a40 100644 --- a/config.yaml +++ b/config.yaml @@ -32,6 +32,7 @@ beef: port: "3000" # if running behind a nat set the public ip address here #public: "" + #public_port: "" dns: "localhost" panel_path: "/ui/panel" hook_file: "/hook.js" diff --git a/core/main/client/net.js b/core/main/client/net.js index 889503569..84c6305f7 100644 --- a/core/main/client/net.js +++ b/core/main/client/net.js @@ -124,7 +124,7 @@ beef.net = { push: function(stream) { //need to implement wait feature here eventually for (var i = 0; i < stream.pc; i++) { - this.request('http', 'GET', this.host, this.port, this.handler, null, stream.get_packet_data(), 10, 'text', null); + this.request(this.port == '443' ? 'https' : 'http', 'GET', this.host, this.port, this.handler, null, stream.get_packet_data(), 10, 'text', null); } }, diff --git a/core/main/handlers/modules/beefjs.rb b/core/main/handlers/modules/beefjs.rb index a43fc5674..0d9572a99 100644 --- a/core/main/handlers/modules/beefjs.rb +++ b/core/main/handlers/modules/beefjs.rb @@ -48,6 +48,15 @@ module Modules hook_session_config['beef_url'].sub!(/0\.0\.0\.0/, req_host) end + # @note if http_port <> public_port in config ini, use the public_port + if hook_session_config['beef_port'] != hook_session_config['beef_public_port'] + hook_session_config['beef_port'] = hook_session_config['beef_public_port'] + hook_session_config['beef_url'].sub!(/#{hook_session_config['beef_port']}/, hook_session_config['beef_public_port']) + if hook_session_config['beef_public_port'] == '443' + hook_session_config['beef_url'].sub!(/http:/, 'https:') + end + end + # @note populate place holders in the beefjs string and set the response body eruby = Erubis::FastEruby.new(beefjs) @body << eruby.evaluate(hook_session_config) diff --git a/core/main/server.rb b/core/main/server.rb index 86ae23e74..d15ad9198 100644 --- a/core/main/server.rb +++ b/core/main/server.rb @@ -29,7 +29,8 @@ module BeEF def initialize @configuration = BeEF::Core::Configuration.instance beef_host = @configuration.get("beef.http.public") || @configuration.get("beef.http.host") - @url = "http://#{beef_host}:#{@configuration.get("beef.http.port")}" + beef_port = @configuration.get("beef.http.public_port") || @configuration.get("beef.http.port") + @url = "http://#{beef_host}:#{beef_port}" @root_dir = File.expand_path('../../../', __FILE__) @command_urls = {} @mounts = {} @@ -44,6 +45,8 @@ module BeEF 'beef_root_dir' => @root_dir, 'beef_host' => @configuration.get('beef.http.host'), 'beef_port' => @configuration.get('beef.http.port'), + 'beef_public' => @configuration.get('beef.http.public'), + 'beef_public_port' => @configuration.get('beef.http.public_port'), 'beef_dns' => @configuration.get('beef.http.dns'), 'beef_hook' => @configuration.get('beef.http.hook_file') }