Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql-

This commit is contained in:
Translator 2024-06-17 09:26:31 +00:00
parent dcf5bf8839
commit 162d1cda0b

View file

@ -26,7 +26,7 @@ Inne sposoby wsparcia HackTricks:
Z [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
> **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).\\
> **Microsoft SQL Server** to **system zarządzania bazą danych relacyjnych** opracowany przez firmę Microsoft. Jako serwer baz danych, jest to produkt oprogramowania z podstawową funkcją przechowywania i pobierania danych zgodnie z żądaniem 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
```
@ -36,8 +36,8 @@ Z [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
* **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, choć przechowywane fizycznie w bazie danych Resource, są logicznie prezentowane w schemacie sys każdej bazy danych.
* **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ą odzwierciedlone 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
@ -152,14 +152,14 @@ SELECT * FROM sysusers
```
#### Uzyskaj Uprawnienia
1. **Securable:** Zdefiniowane jako zasoby zarządzane przez SQL Server w celu kontroli dostępu. Są one kategoryzowane jako:
1. **Zabezpieczalne:** Zdefiniowane jako zasoby zarządzane przez SQL Server w celu 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.
2. **Uprawnienie:** Powiązane z securables w SQL Server, 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
3. **Podmiot:** Ten termin odnosi się do podmiotu, któremu udzielono uprawnień do securable. Podmioty obejmują głównie logowania i użytkowników bazy danych. Kontrola dostępu do securables odbywa się poprzez udzielanie lub odmawianie uprawnień lub poprzez uwzględnienie logowań i użytkowników w rolach wyposażonych w prawa dostępu.
2. **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
3. **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ędnienie logowań i użytkowników w rolach wyposażonych w prawa dostępu.
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -207,7 +207,7 @@ sp_configure 'xp_cmdshell', '1'
RECONFIGURE
#One liner
sp_configure 'Show Advanced Options', 1; RECONFIGURE; sp_configure 'xp_cmdshell', 1; RECONFIGURE;
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'
@ -232,7 +232,7 @@ sudo impacket-smbserver share ./ -smb2support
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer
```
{% hint style="warning" %}
Możesz sprawdzić, czy ktoś (oprócz administratorów systemu) ma uprawnienia do uruchamiania tych funkcji MSSQL za pomocą:
Możesz sprawdzić, kto (oprócz administratorów systemu) ma uprawnienia do uruchamiania tych funkcji MSSQL za pomocą:
```sql
Use master;
EXEC sp_helprotect 'xp_dirtree';
@ -291,9 +291,9 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTE
```
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)**
### **Uruchamianie skryptów RCE/Czytanie plików (Python i R)**
MSSQL może umożliwić wykonanie **skryptów w języku Python i/lub R**. Ten kod będzie wykonywany przez **innego użytkownika** niż ten używający **xp\_cmdshell** do wykonywania poleceń.
MSSQL może umożliwić Ci wykonanie **skryptów w języku Python i/lub R**. Ten kod będzie wykonywany przez **innego użytkownika** niż ten używający polecenia **xp\_cmdshell** do wykonywania poleceń.
Przykład próby wykonania **'R'** _"Hellow World!"_ **nie działa**:
@ -315,9 +315,9 @@ 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**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server)**:**
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 [**Rejestrem systemu Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server)**:**
| **Zwykłe** | **Świadome instancji** |
| **Zwykłe** | **Z uwzględnieniem instancji** |
| ---------------------------- | -------------------------------------- |
| sys.xp\_regread | sys.xp\_instance\_regread |
| sys.xp\_regenumvalues | sys.xp\_instance\_regenumvalues |
@ -342,19 +342,19 @@ Dla **więcej przykładów** sprawdź [**oryginalne źródło**](https://blog.wa
### RCE z funkcją zdefiniowaną przez użytkownika MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
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**.
Możliwe jest **załadowanie pliku .NET w MSSQL za pomocą niestandardowych funkcji**. Wymaga to jednak dostępu do `dbo`, więc potrzebne jest połączenie z bazą danych **jako `sa` lub z rolą Administratora**.
[Kliknij w ten link](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp), aby zobaczyć przykład.
### Inne sposoby na RCE
Istnieją inne metody uzyskania wykonania poleceń, takie jak dodawanie [rozszerzonych procedur składowanych](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [Zbiorów CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Zadań Agenta SQL Servera](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) i [skryptów zewnętrznych](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
Istnieją inne metody uzyskania wykonania poleceń, takie jak dodawanie [rozszerzonych procedur składowanych](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [Zbiorów CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Zadań Agenta SQL Servera](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) i [zewnętrznych skryptów](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
## Eskalacja uprawnień MSSQL
### Od db\_owner do sysadmin
### Od db\_owner do sysadmina
Jeśli **zwykły użytkownik** otrzyma 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 w niej mogą **wykonywać** się jako właściciel (**administrator**).
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 w niej mogą **wykonywać** się jako właściciel (**administrator**).
```sql
# Get owners of databases
SELECT suser_sname(owner_sid) FROM sys.databases
@ -445,7 +445,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
## Wyodrębnianie haseł z połączonych serwerów SQL Server
Atakujący może wyodrębnić hasła z połączonych serwerów SQL Server z instancji SQL i uzyskać je w postaci tekstu jawnego, 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](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords)
Atakujący może wyodrębnić hasła do połączonych serwerów SQL Server z instancji SQL i uzyskać je w postaci tekstu jawnego, co umożliwia atakującemu uzyskanie haseł, które mogą być użyte 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](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords)
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.
@ -457,7 +457,7 @@ Po zweryfikowaniu swoich uprawnień, musisz skonfigurować trzy rzeczy, a mianow
Aby zautomatyzować te konfiguracje, [ten repozytorium](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) 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](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
Aby uzyskać więcej informacji, odwołaj się do następujących linków dotyczących tego ataku: [Deszyfrowanie haseł serwera łączeniowego bazy danych MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Rozwiązywanie problemów z dedykowanym połączeniem administratora serwera SQL](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
@ -478,7 +478,7 @@ Prawdopodobnie będziesz w stanie **eskalować do Administratora** korzystając
* `port:1433 !HTTP`
## Odwołania
## Referencje
* [https://stackoverflow.com/questions/18866881/how-to-get-the-list-of-all-database-users](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://www.mssqltips.com/sqlservertip/6828/sql-server-login-user-permissions-fn-my-permissions/)
@ -494,7 +494,7 @@ Prawdopodobnie będziesz w stanie **eskalować do Administratora** korzystając
***
## HackTricks Automatyczne Polecenia
## HackTricks Automatyczne Komendy
```
Protocol_Name: MSSQL #Protocol Abbreviation if there is one.
Port_Number: 1433 #Comma separated if there is more than one.
@ -552,14 +552,14 @@ Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {I
```
<details>
<summary><strong>Zacznij od zera i stań się ekspertem od hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną na HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
</details>