Files
beef/test/thirdparty/msf/unit/tc_metasploit.rb
jcrew99 486a9bb329 Update copyright 2023 (#2675)
* updated copyright

* reverted gemfile lock changes
2022-12-31 15:36:07 +10:00

144 lines
2.9 KiB
Ruby

#
# Copyright (c) 2006-2023 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
require 'test/unit'
require 'pp'
class TC_Metasploit < Test::Unit::TestCase
def setup
$root_dir="../../../../"
$:.unshift File.join( %w{ ../../../../ } )
require 'core/loader'
end
def teardown
$root_dir = nil
end
#
# Test the api is functional
#
def test_requires
assert_nothing_raised do
require 'msfrpc-client'
end
end
#
# Load the config for testing
#
def load_config
BeEF::Core::Configuration.new("#{$root_dir}/config.yaml")
BeEF::Core::Configuration.instance.load_extensions_config
@config = BeEF::Core::Configuration.instance.get('beef.extension.metasploit')
end
# Create an api instance
def new_api
load_config
require 'extensions/metasploit/extension.rb'
@api = BeEF::Extension::Metasploit::RpcClient.instance
@api.unit_test_init()
end
#
# Verify that the config file has required information
#
def test_config
load_config
assert(@config.key?('user'))
assert(@config.key?('pass'))
assert(@config.key?('port'))
assert(@config.key?('uri'))
assert(@config.key?('callback_host'))
assert(@config.key?('autopwn_url'))
end
#
# Verify that we can create an API instance
#
def test_api_create
assert_nothing_raised do
new_api
end
end
#
# Verify that the login is working
#
def test_login
new_api
assert(@api.login)
end
def test_call
new_api
@api.login
assert(@api.call('core.version'))
end
def test_browser_exploits
new_api
@api.login
exploits = nil
assert_nothing_raised do
exploits = @api.browser_exploits()
end
assert(exploits.length > 5)
end
def test_exploit_info
new_api
@api.login
info = nil
assert_nothing_raised do
info = @api.get_exploit_info('windows/dcerpc/ms03_026_dcom')
end
assert( info['name'].nil? != true)
end
def test_get_options
new_api
@api.login
info = nil
assert_nothing_raised do
info = @api.get_options('windows/dcerpc/ms03_026_dcom')
end
assert( info['RHOST'].nil? != true)
end
def test_payloads
new_api
@api.login
payloads = nil
assert_nothing_raised do
payloads = @api.payloads
end
assert( payloads.length > 5 )
end
def test_launch_exploit
new_api
@api.login
opts = { 'PAYLOAD' => 'windows/meterpreter/bind_tcp', 'URIPATH' => '/test1','SRVPORT' => 8080}
ret = nil
assert_nothing_raised do
ret = @api.launch_exploit('windows/browser/adobe_utilprintf',opts)
end
assert(ret['job_id'] != nil )
end
def test_launch_autopwn
new_api
@api.login
ret = nil
assert_nothing_raised do
ret = @api.launch_autopwn
end
assert(ret['job_id'] != nil )
end
end