<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ako želite da vidite **vašu kompaniju oglašenu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
Pronađite najvažnije ranjivosti kako biste ih brže popravili. Intruder prati vašu površinu napada, pokreće proaktivne pretnje, pronalazi probleme u celokupnom tehnološkom skupu, od API-ja do veb aplikacija i cloud sistema. [**Isprobajte ga besplatno**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) danas.
> **Microsoft SQL Server** je **relacioni sistem za upravljanje bazama podataka** razvijen od strane Microsoft-a. Kao serverska baza podataka, to je softverski proizvod sa osnovnom funkcijom skladištenja i dohvatanja podataka po zahtevu drugih softverskih aplikacija - koje mogu raditi ili na istom računaru ili na drugom računaru preko mreže (uključujući i Internet).\
* **master baza podataka**: Ova baza podataka je ključna jer sadrži sve detalje na nivou sistema za instancu SQL Servera.
* **msdb baza podataka**: SQL Server Agent koristi ovu bazu podataka za upravljanje zakazivanjem upozorenja i poslova.
* **model baza podataka**: Služi kao šablon za svaku novu bazu podataka na SQL Server instanci, gde se sve promene poput veličine, kolacije, modela oporavka i drugih, ogledaju u novo kreiranim bazama podataka.
* **Resource baza podataka**: Baza podataka samo za čitanje koja sadrži sistemski objekte koji dolaze sa SQL Serverom. Ovi objekti, iako su fizički smešteni u Resource bazi podataka, logički su prikazani u sys šemi svake baze podataka.
* **tempdb baza podataka**: Služi kao privremeno skladište za privremene objekte ili privremene rezultate.
Ako **nemate****poverenje**, možete pokušati da ih pogodite. Možete koristiti nmap ili metasploit. Budite oprezni, možete **blokirati naloge** ako nekoliko puta neuspešno pokušate prijavljivanje koristeći postojeće korisničko ime.
To determine the version of the MSSQL server, you can use the following methods:
Da biste odredili verziju MSSQL servera, možete koristiti sledeće metode:
- **Banner Grabbing**: Retrieve the server version from the banner message returned by the server when connecting to the default port (1433).
- **Banner Grabbing**: Preuzmite verziju servera iz poruke banera koju server vraća prilikom povezivanja na podrazumevani port (1433).
- **SQL Server Discovery**: Use tools like `nmap` or `Metasploit` to scan for open MSSQL ports and gather version information.
- **Otkrivanje SQL Servera**: Koristite alate poput `nmap` ili `Metasploit` za skeniranje otvorenih MSSQL portova i prikupljanje informacija o verziji.
###### Service Enumeration
###### Nabrajanje servisa
Once you have identified the MSSQL server, you can proceed with service enumeration to gather more information about the server.
Kada ste identifikovali MSSQL server, možete nastaviti sa nabrajanjem servisa kako biste prikupili više informacija o serveru.
- **Default Port (1433)**: Check if the default MSSQL port (1433) is open and accessible.
- **Podrazumevani port (1433)**: Proverite da li je podrazumevani MSSQL port (1433) otvoren i dostupan.
- **Named Pipes (445)**: Check if the server is listening on the named pipes port (445).
- **Imenovane cevi (445)**: Proverite da li server osluškuje na portu imenovanih cevi (445).
- **UDP Port (1434)**: Check if the server is listening on the UDP port (1434) used for SQL Server Browser service.
- **UDP port (1434)**: Proverite da li server osluškuje na UDP portu (1434) koji se koristi za SQL Server Browser servis.
- **SQL Server Browser Service**: Determine if the SQL Server Browser service is running and accessible.
- **SQL Server Browser servis**: Utvrdite da li SQL Server Browser servis radi i da li je dostupan.
###### User Enumeration
###### Nabrajanje korisnika
To enumerate users on the MSSQL server, you can use the following methods:
Da biste nabrojali korisnike na MSSQL serveru, možete koristiti sledeće metode:
- **SQL Injection**: Exploit SQL injection vulnerabilities to extract user information from the database.
- **SQL Injection**: Iskoristite ranjivosti SQL injectiona kako biste izvukli informacije o korisnicima iz baze podataka.
- **Brute-Force**: Use brute-force attacks to guess usernames and passwords.
- **Brute-Force**: Koristite napade brute-force da biste pogađali korisnička imena i lozinke.
- **Default Accounts**: Check for default accounts that may exist on the MSSQL server.
- **Podrazumevani nalozi**: Proverite da li postoje podrazumevani nalozi na MSSQL serveru.
###### Database Enumeration
###### Nabrajanje baza podataka
To enumerate databases on the MSSQL server, you can use the following methods:
Da biste nabrojali baze podataka na MSSQL serveru, možete koristiti sledeće metode:
- **SQL Injection**: Exploit SQL injection vulnerabilities to extract database names from the server.
- **SQL Injection**: Iskoristite ranjivosti SQL injectiona kako biste izvukli imena baza podataka sa servera.
- **Default Databases**: Check for default databases that may exist on the MSSQL server.
- **Podrazumevane baze podataka**: Proverite da li postoje podrazumevane baze podataka na MSSQL serveru.
- **Information Schema**: Query the `INFORMATION_SCHEMA` table to retrieve a list of databases.
- **Informaciona šema**: Upitajte tabelu `INFORMATION_SCHEMA` da biste dobili listu baza podataka.
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!'
2.**Dozvola:** Povezana sa SQL Server securables, dozvole poput ALTER, CONTROL i CREATE mogu biti dodeljene principalu. Upravljanje dozvolama se odvija na dva nivoa:
3.**Principal:** Ovaj termin se odnosi na entitet kojem je dodeljena dozvola za securable. Principali uglavnom uključuju prijave i korisnike baze podataka. Kontrola pristupa securables se vrši dodeljivanjem ili odbijanjem dozvola ili uključivanjem prijava i korisnika u uloge opremljene pravima pristupa.
Napomena da biste mogli izvršavati komande, neophodno je ne samo da imate **omogućenu****`xp_cmdshell`** opciju, već i da imate **dozvolu za izvršavanje uskladištene procedure `xp_cmdshell`**. Možete saznati ko (osim sysadmina) može koristiti **`xp_cmdshell`** sa:
[**Pročitajte ovaj post**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **da biste pronašli više informacija o tome kako zloupotrebiti ovu funkcionalnost:**
Da biste pisali fajlove koristeći `MSSQL`, **potrebno je omogućiti** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), što zahteva administratorske privilegije, a zatim izvršiti neke uskladištene procedure za kreiranje fajla:
Podrazumevano, `MSSQL` omogućava čitanje fajlova sa bilo koje lokacije u operativnom sistemu na koju nalog ima pristup za čitanje. Možemo koristiti sledeći SQL upit:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
Ovaj vektor koristi greške u SQL upitima kako bi otkrio ranjivosti u Microsoft SQL Serveru. Upit pokušava podeliti broj sa nulom, što rezultuje greškom i otkriva da li je baza podataka podložna SQL Injection napadu.
MSSQL vam omogućava izvršavanje **skripti u Pythonu i/ili R-u**. Ovaj kod će biti izvršen od strane **drugog korisnika** od onog koji koristi **xp\_cmdshell** za izvršavanje komandi.
Microsoft SQL Server pruža **više proširenih uskladištenih procedura** koje vam omogućavaju da komunicirate ne samo sa mrežom, već i sa sistemom datoteka i čak [**Windows registrom**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
EXECUTE master.sys.xp_instance_regwrite 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLSERVER\SQLServerAgent\MyNewKey', 'MyNewValue', 'REG_SZ', 'Now you see me!';
Moguće je **učitati .NET dll unutar MSSQL sa prilagođenim funkcijama**. Međutim, to **zahteva pristup `dbo`** pa vam je potrebna veza sa bazom podataka **kao `sa` ili sa administratorskom ulogom**.
Postoje i druge metode za izvršavanje komandi, kao što su dodavanje [proširenih uskladištenih procedura](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR skupova](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server Agent poslova](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) i [spoljnih skripti](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
Pronađite najvažnije ranjivosti kako biste ih brže popravili. Intruder prati vašu površinu napada, pokreće proaktivne skenove pretnji, pronalazi probleme u celokupnom tehnološkom skupu, od API-ja do veb aplikacija i sistemima u oblaku. [**Isprobajte besplatno**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) danas.
Ako se **običnom korisniku** dodeli uloga **`db_owner`** nad **bazom podataka koju poseduje admin** korisnik (kao što je **`sa`**), a ta baza podataka je konfigurisana kao **`trustworthy`**, taj korisnik može zloupotrebiti ove privilegije za **povećanje privilegija** jer se u toj bazi mogu kreirati **uskladištene procedure** koje se mogu **izvršiti** kao vlasnik (**admin**).
SQL Server ima posebnu dozvolu, nazvanu **`IMPERSONATE`**, koja **omogućava izvršnom korisniku da preuzme dozvole drugog korisnika** ili prijavljivanje dok se kontekst ne resetuje ili sesija ne završi.
Ako možete preuzeti identitet korisnika, čak i ako nije sysadmin, trebali biste provjeriti **da li korisnik ima pristup** drugim **bazama podataka** ili povezanim serverima.
## Izvlačenje lozinki iz SQL Server Linked Servers
Napadač može izvući lozinke za SQL Server Linked Servers iz SQL instanci i dobiti ih u čistom tekstu, omogućavajući napadaču lozinke koje se mogu koristiti za sticanje većeg uticaja na cilj.
Skripta za izvlačenje i dešifrovanje lozinki koje su sačuvane za Linked Servers može se pronaći [ovde](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
Da biste automatizovali ove konfiguracije, [ovaj repozitorijum](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ima potrebne skripte.
Osim što ima powershell skriptu za svaki korak konfiguracije, repozitorijum takođe ima kompletnu skriptu koja kombinuje konfiguracijske skripte i izvlačenje i dešifrovanje lozinki.
Za dodatne informacije, pogledajte sledeće veze u vezi ovog napada:
[Dešifrovanje lozinki za MSSQL Database Link Server](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Rešavanje problema sa SQL Server Dedicated Administrator Connection](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
Pronađite najvažnije ranjivosti kako biste ih brže popravili. Intruder prati vašu površinu napada, pokreće proaktivne pretnje, pronalazi probleme u celokupnom tehnološkom sklopu, od API-ja do veb aplikacija i cloud sistema. [**Isprobajte besplatno**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) danas.
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).
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.