Path: blob/master/modules/auxiliary/admin/oracle/sid_brute.rb
19591 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45require 'English'6class MetasploitModule < Msf::Auxiliary7include Msf::Auxiliary::Report8include Msf::Exploit::Remote::TNS910def initialize(info = {})11super(12update_info(13info,14'Name' => 'Oracle TNS Listener SID Brute Forcer',15'Description' => %q{16This module simply attempts to discover the protected SID.17},18'Author' => [ 'MC' ],19'License' => MSF_LICENSE,20'References' => [21[ 'URL', 'http://web.archive.org/web/20110322124810/http://www.metasploit.com:80/users/mc/' ],22[ 'URL', 'http://www.red-database-security.com/scripts/sid.txt' ],23],24'DisclosureDate' => '2009-01-07',25'Notes' => {26'Stability' => [CRASH_SAFE],27'SideEffects' => [],28'Reliability' => []29}30)31)3233register_options(34[35Opt::RPORT(1521),36OptString.new('SLEEP', [ false, 'Sleep() amount between each request.', '1' ]),37OptString.new('SIDFILE', [ false, 'The file that contains a list of sids.', File.join(Msf::Config.install_root, 'data', 'wordlists', 'sid.txt') ]),38]39)40end4142def run43s = datastore['SLEEP']44list = datastore['SIDFILE']4546print_status("Starting brute force on #{rhost}, using sids from #{list}...")4748fd = ::File.open(list, 'rb').each do |sid|49login = "(DESCRIPTION=(CONNECT_DATA=(SID=#{sid})(CID=(PROGRAM=)(HOST=MSF)(USER=)))(ADDRESS=(PROTOCOL=tcp)(HOST=#{rhost})(PORT=#{rport})))"50pkt = tns_packet(login)5152begin53connect54rescue ::Interrupt55raise $ERROR_INFO56rescue StandardError => e57print_error(e.to_s)58disconnect59break60end6162sock.put(pkt)63select(nil, nil, nil, s.to_i)64res = sock.get_once65disconnect6667next unless res && res.to_s !~ /ERROR_STACK/6869report_note(70host: rhost,71port: rport,72type: 'oracle_sid',73data: {74:port => rport,75:sid => sid.strip76},77update: :unique_data78)79print_good("#{rhost}:#{rport} Found SID '#{sid.strip}'")80end8182print_status('Done with brute force...')83ensure84fd.close unless fd.nil?85end86end878889