Path: blob/master/modules/auxiliary/scanner/mssql/mssql_ping.rb
19758 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45class MetasploitModule < Msf::Auxiliary6include Msf::Exploit::Remote::MSSQL7include Msf::Auxiliary::Scanner8include Msf::Auxiliary::Report910def initialize11super(12'Name' => 'MSSQL Ping Utility',13'Description' => 'This module simply queries the MSSQL Browser service for server information.',14'Author' => 'MC',15'License' => MSF_LICENSE16)1718deregister_options('RPORT')19end2021def run_host(ip)22begin23info = mssql_ping(2)24# print_status info.inspect25if info and not info.empty?26info.each do |instance|27if (instance['ServerName'])28print_status("SQL Server information for #{ip}:")29instance.each_pair { |k, v| print_good(" #{k + (" " * (15 - k.length))} = #{v}") }30if instance['tcp']31report_mssql_service(ip, instance)32end33end34end35end36rescue ::Rex::ConnectionError37end38end3940def test_connection(ip, port)41begin42sock = Rex::Socket::Tcp.create(43'PeerHost' => ip,44'PeerPort' => port45)46rescue Rex::ConnectionError47return :down48end49sock.close50return :up51end5253def report_mssql_service(ip, info)54mssql_info = "Version: %s, ServerName: %s, InstanceName: %s, Clustered: %s" % [55info['Version'],56info['ServerName'],57info['InstanceName'],58info['IsClustered']59]60report_service(61:host => ip,62:port => 1434,63:name => "mssql-m",64:proto => "udp",65:info => "TCP: #{info['tcp']}, Servername: #{info['ServerName']}"66)67mssql_tcp_state = (test_connection(ip, info['tcp']) == :up ? "open" : "closed")68report_service(69:host => ip,70:port => info['tcp'],71:name => "mssql",72:info => mssql_info,73:state => mssql_tcp_state74)75end76end777879