Path: blob/master/test/thirdparty/msf/unit/tc_metasploit.rb
1873 views
#1# Copyright (c) 2006-2026 Wade Alcorn - [email protected]2# Browser Exploitation Framework (BeEF) - https://beefproject.com3# See the file 'doc/COPYING' for copying permission4#5require 'test/unit'6require 'pp'78class TC_Metasploit < Test::Unit::TestCase910def setup11$root_dir="../../../../"12$:.unshift File.join( %w{ ../../../../ } )13require 'core/loader'14end1516def teardown17$root_dir = nil18end1920#21# Test the api is functional22#23def test_requires24assert_nothing_raised do25require 'msfrpc-client'26end27end2829#30# Load the config for testing31#32def load_config33BeEF::Core::Configuration.new("#{$root_dir}/config.yaml")34BeEF::Core::Configuration.instance.load_extensions_config35@config = BeEF::Core::Configuration.instance.get('beef.extension.metasploit')36end3738# Create an api instance39def new_api40load_config41require 'extensions/metasploit/extension.rb'42@api = BeEF::Extension::Metasploit::RpcClient.instance43@api.unit_test_init()44end4546#47# Verify that the config file has required information48#49def test_config50load_config51assert(@config.key?('user'))52assert(@config.key?('pass'))53assert(@config.key?('port'))54assert(@config.key?('uri'))55assert(@config.key?('callback_host'))56assert(@config.key?('autopwn_url'))57end5859#60# Verify that we can create an API instance61#62def test_api_create63assert_nothing_raised do64new_api65end66end6768#69# Verify that the login is working70#71def test_login72new_api73assert(@api.login)74end7576def test_call77new_api78@api.login79assert(@api.call('core.version'))80end8182def test_browser_exploits83new_api84@api.login85exploits = nil86assert_nothing_raised do87exploits = @api.browser_exploits()88end89assert(exploits.length > 5)90end9192def test_exploit_info93new_api94@api.login95info = nil96assert_nothing_raised do97info = @api.get_exploit_info('windows/dcerpc/ms03_026_dcom')98end99assert( info['name'].nil? != true)100end101102def test_get_options103new_api104@api.login105info = nil106assert_nothing_raised do107info = @api.get_options('windows/dcerpc/ms03_026_dcom')108end109assert( info['RHOST'].nil? != true)110end111112def test_payloads113new_api114@api.login115payloads = nil116assert_nothing_raised do117payloads = @api.payloads118end119assert( payloads.length > 5 )120end121122def test_launch_exploit123new_api124@api.login125opts = { 'PAYLOAD' => 'windows/meterpreter/bind_tcp', 'URIPATH' => '/test1','SRVPORT' => 8080}126ret = nil127assert_nothing_raised do128ret = @api.launch_exploit('windows/browser/adobe_utilprintf',opts)129end130assert(ret['job_id'] != nil )131end132133def test_launch_autopwn134new_api135@api.login136ret = nil137assert_nothing_raised do138ret = @api.launch_autopwn139end140assert(ret['job_id'] != nil )141end142end143144145