Files
beef/extensions/metasploit/extension.rb
Brendan Coles 5a7fe2be0e Update style
2019-02-16 10:29:52 +00:00

96 lines
2.5 KiB
Ruby

#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
module BeEF
module Extension
module Metasploit
extend BeEF::API::Extension
@short_name = 'msf'
@full_name = 'Metasploit'
@description = 'Metasploit integration'
# Translates msf exploit options to beef options array
def self.translate_options(msf_options)
callback_host = BeEF::Core::Configuration.instance.get('beef.extension.metasploit.callback_host')
options = []
msf_options.each do |k, v|
next if v['advanced'] == true
next if v['evasion'] == true
v['allowBlank'] = 'true' if v['required'] == false
case v['type']
when 'string', 'address', 'port', 'integer'
v['type'] = 'text'
if k == 'URIPATH'
v['value'] = rand(3**20).to_s(16)
elsif k == 'LHOST'
v['value'] = callback_host
else
v['value'] = v['default']
end
when 'bool'
v['type'] = 'checkbox'
when 'enum'
v['type'] = 'combobox'
v['store_type'] = 'arraystore',
v['store_fields'] = ['enum'],
v['store_data'] = translate_enums(v['enums']),
v['value'] = v['default']
v['valueField'] = 'enum',
v['displayField'] = 'enum',
v['autoWidth'] = true,
v['mode'] = 'local'
end
v['name'] = k
v['label'] = k
options << v
end
options
end
# Translates msf payloads to a beef compatible drop down
def self.translate_payload(payloads)
return unless payloads.key?('payloads')
values = translate_enums(payloads['payloads'])
default_payload = values.include?('generic/shell_bind_tcp') ? 'generic/shell_bind_tcp' : values.first
return unless values.length.positive?
{
'name' => 'PAYLOAD',
'type' => 'combobox',
'ui_label' => 'Payload',
'store_type' => 'arraystore',
'store_fields' => ['payload'],
'store_data' => values,
'valueField' => 'payload',
'displayField' => 'payload',
'mode' => 'local',
'autoWidth' => true,
'defaultPayload' => default_payload,
'reloadOnChange' => true
}
end
# Translates metasploit enums to ExtJS combobox store_data
def self.translate_enums(enums)
enums.map{|e| [e]}
end
end
end
end
require 'msfrpc-client'
require 'extensions/metasploit/rpcclient'
require 'extensions/metasploit/api'
require 'extensions/metasploit/module'
require 'extensions/metasploit/rest/msf'