From dd3b635a48dc2387be96b501611eec6c9abbb9c9 Mon Sep 17 00:00:00 2001 From: Jack Walker Date: Tue, 7 Jul 2020 14:47:05 +1000 Subject: [PATCH] Re-commiting h4sh5's reverted changes. --- core/main/handlers/browserdetails.rb | 12 ++++++++++++ extensions/network/rest/network.rb | 6 ++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/main/handlers/browserdetails.rb b/core/main/handlers/browserdetails.rb index f4ad33ca4..df6021068 100644 --- a/core/main/handlers/browserdetails.rb +++ b/core/main/handlers/browserdetails.rb @@ -29,6 +29,7 @@ module BeEF # validate hook session value session_id = get_param(@data, 'beefhook') + print_debug "[INIT] Processing Browser Details for session #{session_id}" (self.err_msg "session id is invalid"; return) if not BeEF::Filters.is_valid_hook_session_id?(session_id) hooked_browser = HB.where(:session => session_id).first return if not hooked_browser.nil? # browser is already registered with framework @@ -404,6 +405,17 @@ module BeEF self.err_msg "Invalid value for 'browser.window.size.width' returned from the hook browser's initial connection." end + # store and log IP details of host + print_debug("Hooked browser [id:#{zombie.id}] has IP [ip: #{zombie.ip}]") + + if os_name != nil and os_version != nil + BeEF::Core::Models::NetworkHost.create(:hooked_browser => zombie, :ip => zombie.ip, :ntype => 'Host', :os => os_name + "-" + os_version) + elsif os_name != nil + BeEF::Core::Models::NetworkHost.create(:hooked_browser => zombie, :ip => zombie.ip, :ntype => 'Host', :os => os_name) + else + BeEF::Core::Models::NetworkHost.create(:hooked_browser => zombie, :ip => zombie.ip, :ntype => 'Host') + end + # get and store the yes|no value for browser capabilities capabilities = [ 'browser.capabilities.vbscript', diff --git a/extensions/network/rest/network.rb b/extensions/network/rest/network.rb index 1e905c0d6..96270c4e4 100644 --- a/extensions/network/rest/network.rb +++ b/extensions/network/rest/network.rb @@ -13,6 +13,7 @@ module BeEF config = BeEF::Core::Configuration.instance @nh = BeEF::Core::Models::NetworkHost @ns = BeEF::Core::Models::NetworkService + @hb = BeEF::Core::Models::HookedBrowser # Require a valid API token from a valid IP address halt 401 unless params[:token] == config.get('beef.api_token') @@ -69,7 +70,8 @@ module BeEF begin id = params[:id] - hosts = @nh.where(hooked_browser_id: id).distinct.order(:id) + hooked_browser = @hb.where(session: id).distinct + hosts = @nh.where(hooked_browser: hooked_browser).distinct.order(:hooked_browser) count = hosts.length result = {} @@ -121,7 +123,7 @@ module BeEF host = @nh.find(id) raise InvalidParamError, 'id' if host.nil? - halt 404 if host.empty? + halt 404 if host.nil? host.to_h.to_json rescue InvalidParamError => e