mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-30 06:30:35 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
@@ -35,9 +35,19 @@ Inoltre, è necessario avere l'accesso pubblico abilitato se si desidera acceder
|
||||
```bash
|
||||
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.DBforMySQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
Con queste autorizzazioni puoi ripristinare un server MySQL da un backup:
|
||||
```bash
|
||||
az mysql flexible-server restore \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <restore_server_name> \
|
||||
--source-server <server_name> \
|
||||
--yes
|
||||
```
|
||||
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
|
||||
|
||||
Con questo permesso, puoi configurare gli amministratori di Azure Active Directory (AD) per un MySQL Flexible Server. Questo può essere sfruttato impostando se stessi o un altro account come amministratore AD, concedendo il pieno controllo amministrativo sul server MySQL. È importante che il flexible-server abbia identità gestite assegnate a un utente da utilizzare.
|
||||
Con questo permesso, puoi configurare gli amministratori di Azure Active Directory (AD) per un MySQL Flexible Server. Questo può essere sfruttato impostando se stessi o un altro account come amministratore AD, concedendo il pieno controllo amministrativo sul server MySQL. È importante che il flexible-server abbia identità gestite assegnate all'utente da utilizzare.
|
||||
```bash
|
||||
az mysql flexible-server ad-admin create \
|
||||
--resource-group <ResourceGroupName> \
|
||||
|
||||
@@ -30,14 +30,60 @@ az postgres flexible-server update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
Inoltre, con i permessi puoi abilitare l'identità assegnata, operando con l'identità gestita collegata al server. Qui puoi trovare tutte le estensioni supportate dal server flessibile Azure PostgreSQL [https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions](https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions). Per poter utilizzare queste estensioni, alcuni parametri del server (azure.extensions) devono essere modificati. Ad esempio, qui con un'identità gestita che può accedere ad Azure Storage:
|
||||
|
||||
Prima cambiamo i parametri e assicuriamoci che l'identità assegnata sia abilitata:
|
||||
```bash
|
||||
az postgres flexible-server parameter set \
|
||||
--resource-group <YourResourceGroupName> \
|
||||
--server-name <YourServerName> \
|
||||
--name azure.extensions \
|
||||
--value "AZURE_STORAGE"
|
||||
|
||||
az postgres flexible-server identity update \
|
||||
--resource-group <YourResourceGroupName> \
|
||||
--server-name <YourServerName> \
|
||||
--system-assigned Enabled
|
||||
```
|
||||
|
||||
```sql
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS azure_storage;
|
||||
|
||||
CREATE EXTERNAL DATA SOURCE ManagedIdentity
|
||||
|
||||
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
|
||||
|
||||
SELECT *
|
||||
FROM azure_storage.blob_get(
|
||||
'<storage-account>',
|
||||
'<container>',
|
||||
'message.txt',
|
||||
decoder := 'text'
|
||||
) AS t(content text)
|
||||
LIMIT 1;
|
||||
|
||||
```
|
||||
Inoltre, è necessario avere l'accesso pubblico abilitato se si desidera accedere da un endpoint non privato. Per abilitarlo:
|
||||
```bash
|
||||
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.DBforPostgreSQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
Con questi permessi puoi ripristinare un server da un backup con:
|
||||
```bash
|
||||
az postgres flexible-server restore \
|
||||
--resource-group <RESOURCE_GROUP> \
|
||||
--name <NEW_SERVER_NAME> \
|
||||
--source-server <SOURCE_SERVER_NAME> \
|
||||
--restore-time "<ISO8601_TIMESTAMP>" \
|
||||
--yes
|
||||
|
||||
```
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
|
||||
|
||||
Con questo permesso, puoi configurare gli amministratori di Azure Active Directory (AD) per un PostgreSQL Flexible Server. Questo può essere sfruttato impostando se stessi o un altro account come amministratore AD, concedendo il pieno controllo amministrativo sul server PostgreSQL. L'aggiornamento di un principale esistente non è ancora supportato, quindi se ne è stato creato uno, devi prima eliminarlo.
|
||||
Con questo permesso, puoi configurare gli amministratori di Azure Active Directory (AD) per un PostgreSQL Flexible Server. Questo può essere sfruttato impostando se stessi o un altro account come amministratore AD, concedendo il pieno controllo amministrativo sul server PostgreSQL. L'aggiornamento del principale esistente non è ancora supportato, quindi se ne è stato creato uno, devi prima eliminarlo.
|
||||
|
||||
È importante che il flexible-server abbia identità gestite assegnate a un utente da utilizzare.
|
||||
```bash
|
||||
|
||||
@@ -12,7 +12,7 @@ Per ulteriori informazioni su SQL Database controlla:
|
||||
|
||||
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
|
||||
|
||||
Con questi permessi, un utente può eseguire un'escursione di privilegi aggiornando o creando server SQL di Azure e modificando configurazioni critiche, comprese le credenziali amministrative. Questo permesso consente all'utente di aggiornare le proprietà del server, inclusa la password dell'amministratore del server SQL, consentendo accesso non autorizzato o controllo sul server. Possono anche creare nuovi server, potenzialmente introducendo infrastrutture ombra per scopi malevoli. Questo diventa particolarmente critico in ambienti in cui "Microsoft Entra Authentication Only" è disabilitato, poiché possono sfruttare l'autenticazione basata su SQL per ottenere accesso illimitato.
|
||||
Con questi permessi, un utente può eseguire un'escursione dei privilegi aggiornando o creando server SQL di Azure e modificando configurazioni critiche, comprese le credenziali amministrative. Questo permesso consente all'utente di aggiornare le proprietà del server, inclusa la password dell'amministratore del server SQL, consentendo accesso non autorizzato o controllo sul server. Possono anche creare nuovi server, potenzialmente introducendo infrastrutture shadow per scopi malevoli. Questo diventa particolarmente critico in ambienti in cui "Microsoft Entra Authentication Only" è disabilitato, poiché possono sfruttare l'autenticazione basata su SQL per ottenere accesso illimitato.
|
||||
```bash
|
||||
# Change the server password
|
||||
az sql server update \
|
||||
@@ -44,6 +44,11 @@ az sql server update \
|
||||
```
|
||||
|
||||
```sql
|
||||
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
|
||||
WITH IDENTITY = 'Managed Identity';
|
||||
GO
|
||||
|
||||
|
||||
CREATE EXTERNAL DATA SOURCE ManagedIdentity
|
||||
WITH (
|
||||
TYPE = BLOB_STORAGE,
|
||||
@@ -99,7 +104,7 @@ NOTA: È necessario avere abilitato l'accesso pubblico.
|
||||
|
||||
### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
|
||||
|
||||
Con questi permessi puoi effettuare un privesc in un ambiente Azure SQL Server accedendo ai database SQL e recuperando informazioni critiche. Utilizzando il comando qui sotto, un attaccante o un utente autorizzato può impostare se stesso o un altro account come amministratore di Azure AD. Se "Microsoft Entra Authentication Only" è abilitato, puoi accedere al server e alle sue istanze. Ecco il comando per impostare l'amministratore di Azure AD per un server SQL:
|
||||
Con questi permessi puoi eseguire un privesc in un ambiente Azure SQL Server accedendo ai database SQL e recuperando informazioni critiche. Utilizzando il comando qui sotto, un attaccante o un utente autorizzato può impostare se stesso o un altro account come amministratore di Azure AD. Se "Microsoft Entra Authentication Only" è abilitato, puoi accedere al server e alle sue istanze. Ecco il comando per impostare l'amministratore di Azure AD per un server SQL:
|
||||
```bash
|
||||
az sql server ad-admin create \
|
||||
--server <server_name> \
|
||||
@@ -109,7 +114,7 @@ az sql server ad-admin create \
|
||||
```
|
||||
### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read`
|
||||
|
||||
Con queste autorizzazioni, puoi configurare e applicare "Autenticazione solo Microsoft Entra" su un Azure SQL Server, il che potrebbe facilitare l'escalation dei privilegi in determinate situazioni. Un attaccante o un utente autorizzato con queste autorizzazioni può abilitare o disabilitare l'autenticazione solo Azure AD.
|
||||
Con queste autorizzazioni, puoi configurare e applicare "Microsoft Entra Authentication Only" su un Azure SQL Server, il che potrebbe facilitare l'escalation dei privilegi in determinate situazioni. Un attaccante o un utente autorizzato con queste autorizzazioni può abilitare o disabilitare l'autenticazione solo con Azure AD.
|
||||
```bash
|
||||
#Enable
|
||||
az sql server azure-ad-only-auth enable \
|
||||
@@ -121,4 +126,20 @@ az sql server azure-ad-only-auth disable \
|
||||
--server <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
### Microsoft.Sql/servers/databases/dataMaskingPolicies/write
|
||||
Modifica (o disabilita) le politiche di mascheramento dei dati sui tuoi database SQL.
|
||||
```bash
|
||||
az rest --method put \
|
||||
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
|
||||
--body '{
|
||||
"properties": {
|
||||
"dataMaskingState": "Disable"
|
||||
}
|
||||
}'
|
||||
```
|
||||
### Rimuovi la Sicurezza a Livello di Riga
|
||||
Se accedi come admin, puoi rimuovere le politiche dell'admin stesso e di altri utenti.
|
||||
```sql
|
||||
DROP SECURITY POLICY [Name_of_policy];
|
||||
```
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,22 +4,30 @@
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** è un **database NoSQL, relazionale e vettoriale completamente gestito** che offre tempi di risposta in millisecondi a una cifra, scalabilità automatica e disponibilità supportata da SLA con sicurezza di livello enterprise. Consente uno sviluppo più rapido delle app attraverso la distribuzione di dati multi-regione "chiavi in mano", API open-source, SDK per linguaggi popolari e funzionalità di database AI come il supporto vettoriale integrato e l'integrazione senza soluzione di continuità con Azure AI.
|
||||
**Azure Cosmos DB** è un **database NoSQL, relazionale e vettoriale completamente gestito** che offre tempi di risposta a singolo millisecondo, scalabilità automatica e disponibilità supportata da SLA con sicurezza di livello enterprise. Consente uno sviluppo più rapido delle app attraverso la distribuzione dei dati multi-regione "chiavi in mano", API open-source, SDK per linguaggi popolari e funzionalità di database AI come il supporto vettoriale integrato e l'integrazione fluida con Azure AI.
|
||||
|
||||
Azure Cosmos DB fornisce più API di database per modellare dati del mondo reale utilizzando modelli di dati documentali, relazionali, chiave-valore, grafici e a colonne, essendo queste API NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table.
|
||||
Azure Cosmos DB fornisce più API di database per modellare i dati del mondo reale utilizzando modelli di dati documentali, relazionali, chiave-valore, grafico e a colonne, essendo queste API NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table.
|
||||
|
||||
Un aspetto chiave di CosmosDB è l'Azure Cosmos Account. **Azure Cosmos Account** funge da punto di accesso ai database. L'account determina impostazioni chiave come distribuzione globale, livelli di coerenza e l'API specifica da utilizzare, come NoSQL. Attraverso l'account, puoi configurare la replicazione globale per garantire che i dati siano disponibili in più regioni per un accesso a bassa latenza. Inoltre, puoi scegliere un livello di coerenza che bilancia tra prestazioni e accuratezza dei dati, con opzioni che vanno da Strong a Eventual consistency.
|
||||
|
||||
### NoSQL (sql)
|
||||
Azure Cosmos DB supporta **identità assegnate dall'utente** e **identità gestite assegnate dal sistema** che vengono create automaticamente e collegate al ciclo di vita della risorsa, consentendo un'autenticazione sicura basata su token quando ci si connette ad altri servizi, a condizione che questi servizi abbiano le assegnazioni di ruolo appropriate. Tuttavia, Cosmos DB non ha un meccanismo integrato per interrogare direttamente fonti di dati esterne come Azure Blob Storage. A differenza delle funzionalità delle tabelle esterne di SQL Server, Cosmos DB richiede che i dati vengano ingeriti nei suoi contenitori utilizzando strumenti esterni come Azure Data Factory, il Data Migration Tool o script personalizzati prima di poter essere interrogati con le sue capacità di query native.
|
||||
|
||||
### NoSQL
|
||||
L'API NoSQL di Azure Cosmos DB è un'API basata su documenti che utilizza JSON come formato di dati. Fornisce una sintassi di query simile a SQL per interrogare oggetti JSON, rendendola adatta per lavorare con dati strutturati e semi-strutturati. L'endpoint del servizio è:
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
#### Database
|
||||
All'interno di un account, puoi creare uno o più database, che fungono da raggruppamenti logici di contenitori. Un database agisce come un confine per la gestione delle risorse e i permessi degli utenti. I database possono condividere la capacità di throughput provisionata tra i loro contenitori o allocare throughput dedicato a contenitori individuali.
|
||||
All'interno di un account, puoi creare uno o più database, che fungono da raggruppamenti logici di contenitori. Un database agisce come un confine per la gestione delle risorse e dei permessi utente. I database possono condividere la capacità di throughput provisionata tra i loro contenitori o allocare throughput dedicato a contenitori individuali.
|
||||
|
||||
#### Contenitori
|
||||
L'unità fondamentale di archiviazione dei dati è il contenitore, che contiene documenti JSON ed è automaticamente indicizzato per query efficienti. I contenitori sono elastici e scalabili e distribuiti su partizioni, che sono determinate da una chiave di partizione definita dall'utente. La chiave di partizione è fondamentale per garantire prestazioni ottimali e una distribuzione uniforme dei dati. Ad esempio, un contenitore potrebbe memorizzare dati dei clienti, con "customerId" come chiave di partizione.
|
||||
L'unità fondamentale di archiviazione dei dati è il contenitore, che contiene documenti JSON ed è automaticamente indicizzato per query efficienti. I contenitori sono scalabili in modo elastico e distribuiti su partizioni, che sono determinate da una chiave di partizione definita dall'utente. La chiave di partizione è fondamentale per garantire prestazioni ottimali e una distribuzione uniforme dei dati. Ad esempio, un contenitore potrebbe memorizzare dati sui clienti, con "customerId" come chiave di partizione.
|
||||
|
||||
#### Caratteristiche principali
|
||||
**Distribuzione globale**: Abilita o disabilita la Geo-Redundancy per la replica tra regioni e Multi-region Writes per una disponibilità migliorata.
|
||||
**Networking & Sicurezza**: tra endpoint pubblici (tutti/seleziona reti) o privati per la connettività. Connessioni sicure con crittografia TLS 1.2. Supporta CORS (Cross-Origin Resource Sharing) per un accesso controllato alle risorse.
|
||||
**Backup & Ripristino**: da politiche di backup Periodiche, Continue (7 giorni) o Continue (30 giorni) con intervalli e retention configurabili.
|
||||
**Crittografia dei dati**: Chiavi gestite dal servizio predefinite o chiavi gestite dal cliente (CMK) per la crittografia (la selezione della CMK è irreversibile).
|
||||
|
||||
#### Enumerazione
|
||||
|
||||
@@ -42,21 +50,21 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
|
||||
|
||||
|
||||
# CosmoDB (NoSQL)
|
||||
## List the SQL databases under an Azure Cosmos DB account.
|
||||
## List the NoSQL databases under an Azure Cosmos DB account.
|
||||
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
## List the SQL containers under an Azure Cosmos DB SQL database.
|
||||
## List the NoSQL containers under an Azure Cosmos DB NoSQL database.
|
||||
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
## List all SQL role assignments under an Azure Cosmos DB
|
||||
## List all NoSQL role assignments under an Azure Cosmos DB
|
||||
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
## List all SQL role definitions under an Azure Cosmos DB
|
||||
## List all NoSQL role definitions under an Azure Cosmos DB
|
||||
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
|
||||
## List the SQL stored procedures under an Azure Cosmos DB
|
||||
## List the NoSQL stored procedures under an Azure Cosmos DB
|
||||
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
## List the SQL triggers under an Azure Cosmos DB SQL container.
|
||||
## List the NoSQL triggers under an Azure Cosmos DB NoSQL container.
|
||||
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
## List the SQL user defined functions under an Azure Cosmos DB SQL container
|
||||
## List the NoSQL user defined functions under an Azure Cosmos DB NoSQL container
|
||||
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
```
|
||||
@@ -149,7 +157,7 @@ print("All items in the container:")
|
||||
for item in all_items:
|
||||
print(item)
|
||||
```
|
||||
Un altro modo per stabilire una connessione è utilizzare il **DefaultAzureCredential()**. È sufficiente effettuare il login (az login) con l'account che ha i permessi e eseguirlo. In questo caso, deve essere effettuata un'assegnazione di ruolo, dando i permessi necessari (vedi per mor)
|
||||
Un altro modo per stabilire una connessione è utilizzare **DefaultAzureCredential()**. È sufficiente effettuare il login (az login) con l'account che ha i permessi e eseguirlo. In questo caso, deve essere effettuata un'assegnazione di ruolo, dando i permessi necessari (vedi per mor)
|
||||
```python
|
||||
from azure.identity import DefaultAzureCredential
|
||||
from azure.cosmos import CosmosClient
|
||||
@@ -175,7 +183,7 @@ container.create_item(item)
|
||||
print("Document inserted.")
|
||||
```
|
||||
### MongoDB
|
||||
L'API NoSQL di MongoDB è un'API basata su documenti che utilizza BSON (Binary JSON) simile a JSON come formato dei dati. Fornisce un linguaggio di query con capacità di aggregazione, rendendolo adatto per lavorare con dati strutturati, semi-strutturati e non strutturati. L'endpoint del servizio segue tipicamente questo formato:
|
||||
L'API NoSQL di MongoDB è un'API basata su documenti che utilizza BSON (Binary JSON) simile a JSON come formato dei dati. Fornisce un linguaggio di query con capacità di aggregazione, rendendola adatta per lavorare con dati strutturati, semi-strutturati e non strutturati. L'endpoint del servizio segue tipicamente questo formato:
|
||||
```bash
|
||||
mongodb://<hostname>:<port>/<database>
|
||||
```
|
||||
@@ -183,7 +191,18 @@ mongodb://<hostname>:<port>/<database>
|
||||
In MongoDB, puoi creare uno o più database all'interno di un'istanza. Ogni database funge da raggruppamento logico di collezioni e fornisce un confine per l'organizzazione e la gestione delle risorse. I database aiutano a separare e gestire i dati in modo logico, ad esempio per diverse applicazioni o progetti.
|
||||
|
||||
#### Collezioni
|
||||
L'unità fondamentale di archiviazione dei dati in MongoDB è la collezione, che contiene documenti ed è progettata per query efficienti e un design dello schema flessibile. Le collezioni sono elastico scalabili e possono supportare operazioni ad alta capacità attraverso più nodi in un setup distribuito.
|
||||
L'unità fondamentale di archiviazione dei dati in MongoDB è la collezione, che contiene documenti ed è progettata per interrogazioni efficienti e un design dello schema flessibile. Le collezioni sono scalabili in modo elastico e possono supportare operazioni ad alta capacità attraverso più nodi in un'architettura distribuita.
|
||||
|
||||
#### Caratteristiche principali del tipo di unità di richiesta (RU)
|
||||
**Distribuzione globale**: Abilita o disabilita la geo-redundanza per la replica tra regioni e scritture multi-regione per una disponibilità migliorata.
|
||||
**Networking & Sicurezza**: tra endpoint pubblici (tutti/selezionati) o privati per la connettività. Connessioni sicure con crittografia TLS 1.2. Supporta CORS (Cross-Origin Resource Sharing) per un accesso controllato alle risorse.
|
||||
**Backup & Ripristino**: da politiche di backup periodiche, continue (7 giorni, gratuite) o continue (30 giorni, a pagamento) con intervalli e retention configurabili.
|
||||
**Crittografia dei dati**: Chiavi gestite dal servizio predefinite o chiavi gestite dal cliente (CMK) per la crittografia (la selezione di CMK è irreversibile).
|
||||
|
||||
#### Caratteristiche principali del tipo di cluster vCore
|
||||
**Distribuzione globale**: Abilita una replica di lettura in un'altra regione Azure per alta disponibilità e supporto al failover. Configura il nome della replica, la regione e lo storage per shard.
|
||||
**Networking & Sicurezza**: Supporta l'accesso pubblico con IP pubblici assegnati e accesso privato. Limita le connessioni utilizzando regole del firewall: per impostazione predefinita, non sono consentiti IP pubblici.
|
||||
**Connessioni crittografate**: Impone la crittografia TLS per una trasmissione sicura dei dati.
|
||||
|
||||
#### Enumerazione
|
||||
|
||||
|
||||
@@ -6,12 +6,17 @@
|
||||
|
||||
Azure Logic Apps è un servizio basato su cloud fornito da Microsoft Azure che consente agli sviluppatori di **creare e eseguire flussi di lavoro che integrano vari servizi**, fonti di dati e applicazioni. Questi flussi di lavoro sono progettati per **automatizzare i processi aziendali**, orchestrare attività e eseguire integrazioni di dati tra diverse piattaforme.
|
||||
|
||||
Logic Apps offre un designer visivo per creare flussi di lavoro con una **ampia gamma di connettori predefiniti**, che facilita la connessione e l'interazione con vari servizi, come Office 365, Dynamics CRM, Salesforce e molti altri. Puoi anche creare connettori personalizzati per le tue esigenze specifiche.
|
||||
Logic Apps fornisce un designer visivo per creare flussi di lavoro con un **ampia gamma di connettori predefiniti**, che facilita la connessione e l'interazione con vari servizi, come Office 365, Dynamics CRM, Salesforce e molti altri. Puoi anche creare connettori personalizzati per le tue esigenze specifiche.
|
||||
|
||||
Quando crei un Logic App, devi creare o collegare un account di archiviazione esterno che memorizza lo stato del flusso di lavoro, la cronologia delle esecuzioni e gli artefatti. Questo storage può essere configurato con impostazioni diagnostiche per il monitoraggio e può essere protetto con restrizioni di accesso alla rete o integrato in una rete virtuale per controllare il traffico in entrata e in uscita.
|
||||
|
||||
### Identità gestite
|
||||
Logic Apps ha un'**identità gestita assegnata al sistema** legata al suo ciclo di vita. Quando abilitata, riceve un ID Oggetto (principale) unico che può essere utilizzato con Azure RBAC per concedere le autorizzazioni necessarie per accedere ad altri servizi Azure in modo sicuro. Questo elimina la necessità di memorizzare le credenziali nel codice poiché l'identità è autenticata tramite Microsoft Entra ID. Inoltre, puoi anche utilizzare **identità gestite assegnate all'utente**, che possono essere condivise tra più risorse. Queste identità consentono ai flussi di lavoro e ai Logic Apps di interagire in modo sicuro con sistemi esterni, garantendo che i controlli di accesso e le autorizzazioni necessari siano gestiti centralmente attraverso il framework di sicurezza di Azure.
|
||||
|
||||
### Esempi
|
||||
|
||||
- **Automazione dei Data Pipeline**: Logic Apps può automatizzare **i processi di trasferimento e trasformazione dei dati** in combinazione con Azure Data Factory. Questo è utile per creare pipeline di dati scalabili e affidabili che spostano e trasformano i dati tra vari archivi di dati, come Azure SQL Database e Azure Blob Storage, supportando le operazioni di analisi e business intelligence.
|
||||
- **Integrazione con Azure Functions**: Logic Apps può lavorare insieme ad Azure Functions per sviluppare **applicazioni sofisticate e basate su eventi che scalano secondo necessità** e si integrano perfettamente con altri servizi Azure. Un esempio di caso d'uso è utilizzare un Logic App per attivare una Azure Function in risposta a determinati eventi, come cambiamenti in un account di Azure Storage, consentendo un'elaborazione dinamica dei dati.
|
||||
- **Automatizzare i pipeline di dati**: Logic Apps può automatizzare **processi di trasferimento e trasformazione dei dati** in combinazione con Azure Data Factory. Questo è utile per creare pipeline di dati scalabili e affidabili che spostano e trasformano i dati tra vari archivi di dati, come Azure SQL Database e Azure Blob Storage, supportando le operazioni di analisi e business intelligence.
|
||||
- **Integrazione con Azure Functions**: Logic Apps può lavorare insieme ad Azure Functions per sviluppare **applicazioni sofisticate e basate su eventi che scalano secondo necessità** e si integrano perfettamente con altri servizi Azure. Un esempio di caso d'uso è utilizzare un Logic App per attivare una Azure Function in risposta a determinati eventi, come cambiamenti in un account di archiviazione Azure, consentendo un'elaborazione dinamica dei dati.
|
||||
|
||||
### Visualizza un LogicAPP
|
||||
|
||||
@@ -23,7 +28,7 @@ o controllare il codice nella sezione "**Visualizzazione codice dell'app Logic**
|
||||
|
||||
### Protezione SSRF
|
||||
|
||||
Anche se trovi l'**App Logic vulnerabile a SSRF**, non sarai in grado di accedere alle credenziali dai metadati poiché Logic Apps non lo consente.
|
||||
Anche se trovi il **Logic App vulnerabile a SSRF**, non sarai in grado di accedere alle credenziali dai metadati poiché Logic Apps non lo consente.
|
||||
|
||||
Ad esempio, qualcosa del genere non restituirà il token:
|
||||
```bash
|
||||
@@ -38,9 +43,13 @@ Ci sono diverse opzioni di hosting:
|
||||
- **Multi-tenant**: fornisce risorse di calcolo condivise, opera nel cloud pubblico e segue un modello di prezzo pay-per-operation. Questo è ideale per carichi di lavoro leggeri e convenienti.
|
||||
* **Standard**
|
||||
- **Workflow Service Plan**: risorse di calcolo dedicate con integrazione VNET per il networking e addebiti per ogni istanza del piano di servizio workflow. È adatto per carichi di lavoro più esigenti che richiedono un maggiore controllo.
|
||||
- **App Service Environment V3** risorse di calcolo dedicate con piena isolamento e scalabilità. Si integra anche con VNET per il networking e utilizza un modello di prezzo basato sulle istanze di App Service all'interno dell'ambiente. Questo è ideale per applicazioni su scala aziendale che necessitano di alta isolamento.
|
||||
- **App Service Environment V3** risorse di calcolo dedicate con piena isolamento e scalabilità. Si integra anche con VNET per il networking e utilizza un modello di prezzo basato sulle istanze di App Service all'interno dell'ambiente. Questo è ideale per applicazioni su scala enterprise che necessitano di elevato isolamento.
|
||||
- **Hybrid** progettato per l'elaborazione locale e il supporto multi-cloud. Consente risorse di calcolo gestite dal cliente con accesso alla rete locale e utilizza Kubernetes Event-Driven Autoscaling (KEDA).
|
||||
|
||||
### Flussi di lavoro
|
||||
|
||||
I flussi di lavoro in Azure Logic Apps sono i processi automatizzati fondamentali che orchestrano azioni attraverso vari servizi. Un flusso di lavoro inizia con un trigger—un evento o un programma—e poi esegue una serie di azioni, come chiamare API, elaborare dati o interagire con altri servizi Azure. I flussi di lavoro possono essere definiti visivamente utilizzando un designer o tramite codice (definizioni JSON) e sono gestiti tramite comandi come az logic workflow create, az logic workflow show e az logic workflow update. Supportano anche la gestione dell'identità (tramite il sottogruppo di identità) per gestire in modo sicuro permessi e integrazioni con risorse esterne.
|
||||
|
||||
### Enumerazione
|
||||
|
||||
{{#tabs }}
|
||||
@@ -140,13 +149,13 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
|
||||
### Account di Integrazione
|
||||
**Account di Integrazione**, sono una funzionalità di Azure Logic Apps. Gli Account di Integrazione vengono utilizzati per facilitare integrazioni a livello aziendale abilitando capacità B2B avanzate, come EDI, AS2 e gestione degli schemi XML. Gli Account di Integrazione sono un contenitore in Azure che memorizza i seguenti artefatti utilizzati per le Logic Apps:
|
||||
|
||||
* Schemi: Gestisci schemi XML per convalidare e elaborare messaggi nel tuo account di integrazione.
|
||||
* Mappe: Configura trasformazioni basate su XSLT per convertire formati di dati all'interno dei tuoi flussi di lavoro di integrazione.
|
||||
* Schemi: Gestisci gli schemi XML per convalidare e elaborare i messaggi nel tuo account di integrazione.
|
||||
* Mappe: Configura trasformazioni basate su XSLT per convertire i formati di dati all'interno dei tuoi flussi di lavoro di integrazione.
|
||||
* Assemblaggi: Gestisci gli assemblaggi dell'account di integrazione per semplificare la logica e l'elaborazione dei dati.
|
||||
* Certificati: Gestisci certificati per crittografare e firmare messaggi, garantendo comunicazioni sicure.
|
||||
* Partner: Gestisci le informazioni sui partner commerciali per transazioni B2B, abilitando integrazioni senza soluzione di continuità.
|
||||
* Certificati: Gestisci i certificati per crittografare e firmare i messaggi, garantendo comunicazioni sicure.
|
||||
* Partner: Gestisci le informazioni sui partner commerciali per le transazioni B2B, abilitando integrazioni senza soluzione di continuità.
|
||||
* Accordi: Configura regole e impostazioni per lo scambio di dati con i partner commerciali (ad es., EDI, AS2).
|
||||
* Configurazioni Batch: Gestisci configurazioni di elaborazione batch per raggruppare ed elaborare messaggi in modo efficiente.
|
||||
* Configurazioni Batch: Gestisci le configurazioni di elaborazione batch per raggruppare ed elaborare i messaggi in modo efficiente.
|
||||
* RosettaNet PIP: Configura i Processi di Interfaccia Partner RosettaNet (PIP) per standardizzare la comunicazione B2B.
|
||||
|
||||
#### Enumerazione
|
||||
|
||||
@@ -11,14 +11,14 @@ Azure Database for MySQL è un servizio di database relazionale completamente ge
|
||||
- Ideale per applicazioni con carichi di lavoro prevedibili.
|
||||
* **Flexible Server**:
|
||||
- Fornisce maggiore controllo sulla gestione e configurazione del database.
|
||||
- Supporta alta disponibilità (nella stessa zona e ridondante tra zone).
|
||||
- Include scalabilità elastica, gestione delle patch e ottimizzazione dei carichi di lavoro.
|
||||
- Offre funzionalità di arresto/avvio per risparmi sui costi.
|
||||
- Supporta alta disponibilità (nella stessa zona e ridondante per zona).
|
||||
- Include scalabilità elastica, gestione delle patch e ottimizzazione del carico di lavoro.
|
||||
- Offre funzionalità di arresto/avvio per risparmiare sui costi.
|
||||
|
||||
### Key Features
|
||||
* **Server Management**: La funzionalità **ad-admin** consente di gestire gli amministratori di Azure Active Directory (AAD) per i server MySQL, fornendo controllo sull'accesso amministrativo tramite credenziali AAD, mentre la funzionalità **identity** consente l'assegnazione e la gestione delle Identità Gestite di Azure, offrendo autenticazione sicura e senza credenziali per accedere alle risorse Azure.
|
||||
* **Server Management**: La funzionalità **ad-admin** consente di gestire gli amministratori di Azure Entra ID per i server MySQL, fornendo controllo sull'accesso amministrativo tramite credenziali Entra ID. Mysql supporta le Identità Gestite dall'Utente, utilizzate per autenticarsi senza la necessità di credenziali, e possono essere utilizzate da altri servizi.
|
||||
* **Lifecycle Management**: opzioni per avviare o arrestare un server, eliminare un'istanza di server flessibile, riavviare un server per applicare rapidamente le modifiche di configurazione e attendere per garantire che un server soddisfi condizioni specifiche prima di procedere con gli script di automazione.
|
||||
* **Security and Networking**: può gestire le regole del firewall del server per un accesso sicuro al database e scollegare le configurazioni della rete virtuale secondo necessità.
|
||||
* **Security and Networking**: Proteggi il tuo server limitando le connessioni tramite regole del firewall che consentono solo indirizzi IP pubblici specifici, o utilizzando endpoint privati che integrano il tuo server in una rete virtuale. Tutte le connessioni sono protette con crittografia TLS 1.2. I database, i backup e i log sono crittografati a riposo per impostazione predefinita utilizzando chiavi gestite dal servizio o chiavi personalizzate.
|
||||
* **Data Protection and Backup**: include opzioni per gestire i backup del server flessibile per il recupero dei dati, eseguire il geo-restore per recuperare un server in una regione diversa, esportare i backup del server per uso esterno (in Anteprima) e ripristinare un server da un backup a un punto specifico nel tempo.
|
||||
|
||||
### Enumeration
|
||||
@@ -145,7 +145,7 @@ az mysql flexible-server deploy run \
|
||||
../az-post-exploitation/az-mysql-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## Da Fare
|
||||
## Da fare
|
||||
|
||||
* Cercare un modo per accedere con mysql flexible-server ad-admin per verificare se è un metodo di elevazione dei privilegi
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
* **Backup Automatici**: Backup giornalieri integrati con periodi di conservazione configurabili fino a 35 giorni.
|
||||
* **Accesso Basato sui Ruoli**: Controlla i permessi degli utenti e l'accesso amministrativo tramite Azure Active Directory.
|
||||
* **Sicurezza e Rete**: può gestire le regole del firewall del server per un accesso sicuro al database e scollegare le configurazioni della rete virtuale secondo necessità.
|
||||
* **Identità Gestite**: consentono al tuo server di autenticarsi in modo sicuro con altri servizi Azure senza memorizzare credenziali. Consentono di accedere ad altri servizi che sarebbero identità gestite assegnate al sistema e di essere accessibili da altri servizi con altre identità che sono identità gestite assegnate all'utente.
|
||||
|
||||
### Enumerazione
|
||||
|
||||
@@ -106,7 +107,7 @@ az postgres flexible-server execute \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
Oppure
|
||||
Or
|
||||
```bash
|
||||
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
|
||||
```
|
||||
|
||||
@@ -4,148 +4,97 @@
|
||||
|
||||
## Azure SQL
|
||||
|
||||
Azure SQL è una famiglia di prodotti gestiti, sicuri e intelligenti che utilizzano il **motore di database SQL Server nel cloud Azure**. Ciò significa che non devi preoccuparti dell'amministrazione fisica dei tuoi server e puoi concentrarti sulla gestione dei tuoi dati.
|
||||
Azure SQL è una famiglia di prodotti gestiti, sicuri e intelligenti che utilizzano il **motore di database SQL Server nel cloud Azure**. Questo significa che non devi preoccuparti dell'amministrazione fisica dei tuoi server e puoi concentrarti sulla gestione dei tuoi dati.
|
||||
|
||||
Azure SQL è composto da quattro offerte principali:
|
||||
Azure SQL consiste in quattro offerte principali:
|
||||
|
||||
1. **Azure SQL Server**: Azure SQL Server è un servizio di database relazionale gestito che semplifica il deployment e la gestione dei database SQL Server, con funzionalità di sicurezza e prestazioni integrate.
|
||||
2. **Azure SQL Database**: Questo è un **servizio di database completamente gestito**, che ti consente di ospitare database individuali nel cloud Azure. Offre intelligenza integrata che apprende i tuoi modelli di database unici e fornisce raccomandazioni personalizzate e ottimizzazione automatica.
|
||||
3. **Azure SQL Managed Instance**: Questo è per implementazioni su larga scala, a livello di intera istanza SQL Server. Fornisce quasi il 100% di compatibilità con l'ultima versione on-premises di SQL Server (Enterprise Edition) Database Engine, che offre un'implementazione nativa di rete virtuale (VNet) che affronta le comuni preoccupazioni di sicurezza, e un modello di business favorevole per i clienti SQL Server on-premises.
|
||||
4. **Azure SQL Server su Azure VMs**: Questo è Infrastructure as a Service (IaaS) ed è migliore per le migrazioni in cui desideri **controllo sul sistema operativo e sull'istanza SQL Server**, come se fosse un server in esecuzione on-premises.
|
||||
1. **Azure SQL Server**: Un server è necessario per il **deployment e la gestione** dei database SQL Server.
|
||||
2. **Azure SQL Database**: Questo è un **servizio di database completamente gestito**, che ti consente di ospitare database individuali nel cloud Azure.
|
||||
3. **Azure SQL Managed Instance**: Questo è per implementazioni su larga scala, a livello di intera istanza SQL Server.
|
||||
4. **Azure SQL Server su Azure VMs**: Questo è il migliore per architetture in cui desideri **controllo sul sistema operativo** e sull'istanza SQL Server.
|
||||
|
||||
### Azure SQL Server
|
||||
### Caratteristiche di Sicurezza di SQL Server
|
||||
|
||||
Azure SQL Server è un sistema di gestione di database relazionali (RDBMS) che utilizza Transact-SQL per le operazioni sui dati ed è progettato per gestire sistemi a livello enterprise. Offre funzionalità robuste per prestazioni, sicurezza, scalabilità e integrazione con varie applicazioni Microsoft. I database Azure SQL si basano su questo server, poiché sono costruiti su questi server ed è il punto di accesso per gli utenti per accedere ai database.
|
||||
**Accesso di rete:**
|
||||
|
||||
#### Rete
|
||||
- Endpoint pubblico (può limitare l'accesso a reti specifiche).
|
||||
- Endpoint privati.
|
||||
- È anche possibile limitare le connessioni in base ai nomi di dominio.
|
||||
- È anche possibile consentire ai servizi Azure di accedervi (come per utilizzare l'editor di query nel portale o per consentire a una VM Azure di connettersi).
|
||||
|
||||
**Connettività di rete**: Scegli se abilitare l'accesso tramite endpoint pubblico o endpoint privato. Se selezioni Nessun accesso, non vengono creati endpoint fino a quando non è configurato manualmente:
|
||||
- Nessun accesso: Nessun endpoint è configurato, bloccando le connessioni in entrata fino a quando non viene impostato manualmente.
|
||||
- Endpoint pubblico: Consente connessioni dirette tramite Internet pubblico, soggetto a regole del firewall e altre configurazioni di sicurezza.
|
||||
- Endpoint privato: Limita la connettività a una rete privata.
|
||||
**Metodi di autenticazione:**
|
||||
|
||||
**Politica di connessione**: Definisci come i client comunicano con il server del database SQL:
|
||||
- Predefinito: Utilizza una politica di reindirizzamento per tutte le connessioni dei client dall'interno di Azure (eccetto quelle che utilizzano Endpoint Privati) e una politica Proxy per le connessioni dall'esterno di Azure.
|
||||
- Proxy: Instrada tutte le connessioni dei client attraverso il gateway di Azure SQL Database.
|
||||
- Reindirizza: I client si connettono direttamente al nodo che ospita il database.
|
||||
- Autenticazione **solo Entra di Microsoft**: Devi indicare i principi Entra che avranno accesso al servizio.
|
||||
- Autenticazione **sia SQL che Microsoft Entra**: Autenticazione SQL tradizionale con nome utente e password insieme a Microsoft Entra.
|
||||
- Autenticazione **solo SQL**: Consente l'accesso solo tramite utenti del database.
|
||||
|
||||
#### Metodi di autenticazione
|
||||
Azure SQL supporta vari metodi di autenticazione per garantire l'accesso al database:
|
||||
Nota che se è consentita qualsiasi autenticazione SQL, è necessario indicare un utente admin (nome utente + password) e se è selezionata l'autenticazione Entra ID è anche necessario indicare almeno un principio con accesso admin.
|
||||
|
||||
- **Autenticazione solo Microsoft Entra**: Utilizza Microsoft Entra (precedentemente Azure AD) per la gestione centralizzata dell'identità e il single sign-on.
|
||||
- **Autenticazione sia SQL che Microsoft Entra**: Ti consente di utilizzare l'autenticazione SQL tradizionale insieme a Microsoft Entra.
|
||||
- **Autenticazione SQL**: Si basa esclusivamente su nomi utente e password di SQL Server.
|
||||
**Crittografia:**
|
||||
|
||||
#### Funzionalità di sicurezza
|
||||
- Si chiama “Crittografia dei dati trasparente” e crittografa database, backup e log a riposo.
|
||||
- Come sempre, viene utilizzata per impostazione predefinita una chiave gestita da Azure, ma potrebbe essere utilizzata anche una chiave di crittografia gestita dal cliente (CMEK).
|
||||
|
||||
I server SQL hanno **Identità Gestite**. Le identità gestite consentono al tuo server di autenticarsi in modo sicuro con altri servizi Azure senza memorizzare credenziali. Consentono di accedere ad altri servizi che sarebbero Identità gestite assegnate al sistema e possono essere accessibili da altri servizi con altre identità che sono Identità gestite assegnate all'utente. Alcuni dei servizi a cui SQL può accedere sono Azure Storage Account(V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB o Cosmos DB API per MongoDB, ODBC generico, Operazioni in blocco e archiviazione di oggetti compatibile con S3.
|
||||
**Identità Gestite:**
|
||||
|
||||
Altre funzionalità di sicurezza che ha il server SQL sono:
|
||||
- È possibile assegnare identità gestite di sistema e utente.
|
||||
- Utilizzate per accedere alla chiave di crittografia (se viene utilizzata una CMEK) e ad altri servizi dai database.
|
||||
- Se viene assegnata più di una UMI, è possibile indicare quella predefinita da utilizzare.
|
||||
- È possibile configurare un'identità client federata per l'accesso cross-tenant.
|
||||
|
||||
- **Regole del firewall**: Le regole del firewall controllano l'accesso al tuo server limitando o consentendo il traffico. Questa è una funzionalità del database stesso.
|
||||
- **Crittografia dei dati trasparente (TDE)**: TDE crittografa i tuoi database, backup e log a riposo per proteggere i tuoi dati anche se lo storage è compromesso. Può essere fatto con una chiave gestita dal servizio o una chiave gestita dal cliente.
|
||||
- **Microsoft Defender per SQL**: Microsoft Defender per SQL può essere abilitato offrendo valutazioni delle vulnerabilità e protezione avanzata dalle minacce per un server.
|
||||
**Microsoft Defender:**
|
||||
|
||||
#### Modelli di distribuzione
|
||||
- Utile per “mitigare potenziali vulnerabilità del database e rilevare attività anomale”.
|
||||
- Parleremo di Defender in una lezione a parte (può essere abilitato in diversi altri servizi Azure).
|
||||
|
||||
Azure SQL Database supporta opzioni di distribuzione flessibili per soddisfare varie esigenze:
|
||||
**Backup:**
|
||||
- La frequenza dei backup è gestita nelle politiche di retention.
|
||||
|
||||
- **Database singolo**:
|
||||
- Un database completamente isolato con le proprie risorse dedicate.
|
||||
- Ottimo per microservizi o applicazioni che richiedono una singola fonte di dati.
|
||||
- **Pool elastico**:
|
||||
- Consente a più database di condividere risorse all'interno di un pool.
|
||||
- Economico per applicazioni con modelli di utilizzo fluttuanti tra più database.
|
||||
**Database eliminati:**
|
||||
- È possibile ripristinare i DB che sono stati eliminati dai backup esistenti.
|
||||
|
||||
### Azure SQL Database
|
||||
## Azure SQL Database
|
||||
|
||||
**Azure SQL Database** è una **piattaforma di database completamente gestita come servizio (PaaS)** che fornisce soluzioni di database relazionali scalabili e sicure. È costruito sulle ultime tecnologie SQL Server ed elimina la necessità di gestione dell'infrastruttura, rendendolo una scelta popolare per le applicazioni basate su cloud.
|
||||
**Azure SQL Database** è una **piattaforma di database completamente gestita come servizio (PaaS)** che fornisce soluzioni di database relazionali scalabili e sicure. È costruita sulle ultime tecnologie SQL Server ed elimina la necessità di gestione dell'infrastruttura, rendendola una scelta popolare per le applicazioni basate su cloud.
|
||||
|
||||
#### Caratteristiche principali
|
||||
Per creare un database SQL è necessario indicare il server SQL dove sarà ospitato.
|
||||
|
||||
- **Sempre aggiornato**: Funziona sull'ultima versione stabile di SQL Server e riceve automaticamente nuove funzionalità e patch.
|
||||
- **Capacità PaaS**: Alta disponibilità integrata, backup e aggiornamenti.
|
||||
- **Flessibilità dei dati**: Supporta dati relazionali e non relazionali (ad es., grafi, JSON, spaziali e XML).
|
||||
### Caratteristiche di Sicurezza del Database SQL
|
||||
|
||||
#### Rete
|
||||
- **Sempre Aggiornato**: Funziona sull'ultima versione stabile di SQL Server e riceve automaticamente nuove funzionalità e patch.
|
||||
- **Caratteristiche di sicurezza ereditate da SQL Server:**
|
||||
- Autenticazione (SQL e/o Entra ID)
|
||||
- Identità gestite assegnate
|
||||
- Restrizioni di rete
|
||||
- Crittografia
|
||||
- Backup
|
||||
- …
|
||||
- **Ridondanza dei dati:** Le opzioni sono locale, zona, Geo o Geo-Zona ridondante.
|
||||
- **Registro:** Verifica crittograficamente l'integrità dei dati, assicurando che qualsiasi manomissione venga rilevata. Utile per finanziario, medico e qualsiasi organizzazione che gestisce dati sensibili.
|
||||
|
||||
**Connettività di rete**: Scegli se abilitare l'accesso tramite endpoint pubblico o endpoint privato. Se selezioni Nessun accesso, non vengono creati endpoint fino a quando non è configurato manualmente:
|
||||
- Nessun accesso: Nessun endpoint è configurato, bloccando le connessioni in entrata fino a quando non viene impostato manualmente.
|
||||
- Endpoint pubblico: Consente connessioni dirette tramite Internet pubblico, soggetto a regole del firewall e altre configurazioni di sicurezza.
|
||||
- Endpoint privato: Limita la connettività a una rete privata.
|
||||
Un database SQL potrebbe far parte di un **pool elastico**. I pool elastici sono una soluzione economica per gestire più database condividendo risorse di calcolo (eDTUs) e di archiviazione configurabili tra di loro, con prezzi basati esclusivamente sulle risorse allocate piuttosto che sul numero di database.
|
||||
|
||||
**Politica di connessione**: Definisci come i client comunicano con il server del database SQL:
|
||||
- Predefinito: Utilizza una politica di reindirizzamento per tutte le connessioni dei client dall'interno di Azure (eccetto quelle che utilizzano Endpoint Privati) e una politica Proxy per le connessioni dall'esterno di Azure.
|
||||
- Proxy: Instrada tutte le connessioni dei client attraverso il gateway di Azure SQL Database.
|
||||
- Reindirizza: I client si connettono direttamente al nodo che ospita il database.
|
||||
#### Sicurezza a Livello di Colonna (Mascheramento) e Sicurezza a Livello di Riga di Azure SQL
|
||||
|
||||
#### Funzionalità di sicurezza
|
||||
Il **mascheramento dei dati dinamico** di Azure SQL è una funzionalità che aiuta a **proteggere le informazioni sensibili nascondendole** agli utenti non autorizzati. Invece di alterare i dati reali, maschera dinamicamente i dati visualizzati, assicurando che dettagli sensibili come i numeri di carta di credito siano oscurati.
|
||||
|
||||
- **Microsoft Defender per SQL**: può essere abilitato offrendo valutazioni delle vulnerabilità e protezione avanzata dalle minacce.
|
||||
- **Ledger**: verifica crittograficamente l'integrità dei dati, garantendo che eventuali manomissioni vengano rilevate.
|
||||
- **Identità del server**: utilizza identità gestite assegnate dal sistema e dall'utente per abilitare l'accesso centralizzato.
|
||||
- **Gestione delle chiavi di crittografia dei dati trasparenti**: crittografa database, backup e log a riposo senza richiedere modifiche all'applicazione. La crittografia può essere abilitata su ciascun database e, se configurata a livello di database, queste impostazioni sovrascrivono la configurazione a livello di server.
|
||||
- **Always Encrypted**: è un insieme di funzionalità avanzate di protezione dei dati che separa la proprietà dei dati dalla gestione dei dati. Ciò garantisce che gli amministratori o gli operatori con privilegi elevati non possano accedere ai dati sensibili.
|
||||
Il **Mascheramento dei Dati Dinamico** influisce su tutti gli utenti tranne quelli che sono non mascherati (questi utenti devono essere indicati) e sugli amministratori. Ha l'opzione di configurazione che specifica quali utenti SQL sono esenti dal mascheramento dei dati dinamico, con **amministratori sempre esclusi**.
|
||||
|
||||
#### Modelli di acquisto / Livelli di servizio
|
||||
|
||||
- **Basato su vCore**: Scegli computazione, memoria e archiviazione in modo indipendente. Per Scopo Generale, Business Critical (con alta resilienza e prestazioni per app OLTP), e scala fino a 128 TB di archiviazione.
|
||||
- **Basato su DTU**: Raggruppa computazione, memoria e I/O in livelli fissi. Risorse bilanciate per compiti comuni.
|
||||
- Standard: Risorse bilanciate per compiti comuni.
|
||||
- Premium: Alte prestazioni per carichi di lavoro esigenti.
|
||||
|
||||
#### Prestazioni scalabili e pool
|
||||
|
||||
- **Database singoli**: Ogni database è isolato e ha le proprie risorse dedicate di computazione, memoria e archiviazione. Le risorse possono essere scalate dinamicamente (su o giù) senza tempi di inattività (1–128 vCores, 32 GB–4 TB di archiviazione, e fino a 128 TB).
|
||||
- **Pool elastici**: Condividono risorse tra più database in un pool per massimizzare l'efficienza e risparmiare costi. Le risorse possono anche essere scalate dinamicamente per l'intero pool.
|
||||
- **Flessibilità del livello di servizio**: Inizia in piccolo con un database singolo nel livello Scopo Generale. Aggiorna a livelli Business Critical o Hyperscale man mano che le esigenze crescono.
|
||||
- **Opzioni di scalabilità**: Scalabilità dinamica o alternative di autoscalabilità.
|
||||
|
||||
#### Monitoraggio e ottimizzazione integrati
|
||||
|
||||
- **Query Store**: Monitora i problemi di prestazioni, identifica i principali consumatori di risorse e offre raccomandazioni praticabili.
|
||||
- **Ottimizzazione automatica**: Ottimizza proattivamente le prestazioni con funzionalità come indicizzazione automatica e correzioni del piano di query.
|
||||
- **Integrazione della telemetria**: Supporta il monitoraggio tramite Azure Monitor, Event Hubs o Azure Storage per approfondimenti personalizzati.
|
||||
|
||||
#### Recupero da disastri e disponibilità
|
||||
|
||||
- **Backup automatici**: SQL Database esegue automaticamente backup completi, differenziali e di log delle transazioni dei database.
|
||||
- **Ripristino a un punto nel tempo**: Recupera i database a qualsiasi stato passato all'interno del periodo di retention dei backup.
|
||||
- **Geo-Redundancy**
|
||||
- **Gruppi di failover**: Semplifica il recupero da disastri raggruppando i database per failover automatico tra le regioni.
|
||||
La **Sicurezza a Livello di Riga (RLS)** di Azure SQL è una funzionalità che **controlla quali righe un utente può visualizzare o modificare**, assicurando che ogni utente veda solo i dati a lui pertinenti. Creando politiche di sicurezza con filtri o predicati di blocco, le organizzazioni possono applicare un accesso dettagliato a livello di database.
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
**Azure SQL Managed Instance** è un motore di database come servizio (PaaS) che offre quasi il 100% di compatibilità con SQL Server e gestisce automaticamente la maggior parte dei compiti di gestione (ad es., aggiornamenti, patching, backup, monitoraggio). Fornisce una soluzione cloud per migrare i database SQL Server on-premises con modifiche minime.
|
||||
|
||||
#### Livelli di servizio
|
||||
|
||||
- **Scopo Generale**: Opzione economica per applicazioni con requisiti standard di I/O e latenza.
|
||||
- **Business Critical**: Opzione ad alte prestazioni con bassa latenza di I/O per carichi di lavoro critici.
|
||||
|
||||
#### Funzionalità di sicurezza avanzate
|
||||
|
||||
* **Protezione dalle minacce**: Avvisi di protezione avanzata dalle minacce per attività sospette e attacchi di SQL injection. Audit per tracciare e registrare eventi del database per la conformità.
|
||||
* **Controllo degli accessi**: Autenticazione Microsoft Entra per la gestione centralizzata dell'identità. Sicurezza a livello di riga e mascheramento dinamico dei dati per un controllo degli accessi granulare.
|
||||
* **Backup**: Backup automatizzati e manuali con capacità di ripristino a un punto nel tempo.
|
||||
Le **Azure SQL Managed Instances** sono per implementazioni su larga scala, a livello di intera istanza SQL Server. Forniscono quasi il 100% di compatibilità con l'ultima versione di SQL Server on-premises (Enterprise Edition) Database Engine, che offre un'implementazione nativa della rete virtuale (VNet) che affronta le comuni preoccupazioni di sicurezza, e un modello di business favorevole per i clienti SQL Server on-premises.
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
**Azure SQL Virtual Machines** è migliore per le migrazioni in cui desideri **controllo sul sistema operativo e sull'istanza SQL Server**, come se fosse un server in esecuzione on-premises. Può avere diverse dimensioni di macchina e una vasta selezione di versioni e edizioni di SQL Server.
|
||||
Le **Azure SQL Virtual Machines** consentono di **controllare il sistema operativo** e l'istanza SQL Server, poiché una VM verrà avviata nel servizio VM che esegue il server SQL.
|
||||
|
||||
#### Caratteristiche principali
|
||||
Quando viene creata una macchina virtuale SQL, è possibile **selezionare tutte le impostazioni della VM** (come mostrato nella lezione sulla VM) che ospiterà il server SQL.
|
||||
- Questo significa che la VM accederà a alcune VNet, potrebbe avere **Identità Gestite collegate** ad essa, potrebbe avere condivisioni di file montate… rendendo un **pivoting dal SQL** alla VM molto interessante.
|
||||
- Inoltre, è possibile configurare un ID app e un segreto per **consentire al SQL di accedere a un specifico key vault**, che potrebbe contenere informazioni sensibili.
|
||||
|
||||
**Backup automatizzati**: Pianifica backup per i database SQL.
|
||||
**Patch automatiche**: Automatizza l'installazione degli aggiornamenti di Windows e SQL Server durante una finestra di manutenzione.
|
||||
**Integrazione con Azure Key Vault**: Configura automaticamente Key Vault per le VM SQL Server.
|
||||
**Integrazione con Defender for Cloud**: Visualizza le raccomandazioni di Defender per SQL nel portale.
|
||||
**Flessibilità di versione/edizione**: Cambia i metadati della versione o dell'edizione di SQL Server senza ridistribuire la VM.
|
||||
|
||||
#### Funzionalità di sicurezza
|
||||
|
||||
**Microsoft Defender per SQL**: Approfondimenti e avvisi di sicurezza.
|
||||
**Integrazione con Azure Key Vault**: Archiviazione sicura di credenziali e chiavi di crittografia.
|
||||
**Microsoft Entra (Azure AD)**: Autenticazione e controllo degli accessi.
|
||||
È anche possibile configurare cose come **aggiornamenti SQL automatici**, **backup automatici**, **autenticazione Entra ID** e la maggior parte delle funzionalità degli altri servizi SQL.
|
||||
|
||||
## Enumerazione
|
||||
|
||||
@@ -216,6 +165,30 @@ az sql midb show --resource-group <res-grp> --name <name>
|
||||
# Lis all sql VM
|
||||
az sql vm list
|
||||
az sql vm show --resource-group <res-grp> --name <name>
|
||||
|
||||
# List schema by the database
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas?api-version=2021-11-01"
|
||||
|
||||
# Get tables of a database with the schema
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables?api-version=2021-11-01"
|
||||
|
||||
# Get columns of a database
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/columns?api-version=2021-11-01"
|
||||
|
||||
# Get columns of a table
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables/<tableName>/columns?api-version=2021-11-01"
|
||||
|
||||
# Get DataMaskingPolicies of a database
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Sql/servers/getstorageserver/databases/masktest/dataMaskingPolicies/Default?api-version=2021-11-01"
|
||||
|
||||
az rest --method get \
|
||||
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/dataMaskingPolicies/Default/rules?api-version=2021-11-01"
|
||||
|
||||
```
|
||||
{{#endtab}}
|
||||
|
||||
@@ -260,6 +233,31 @@ Get-AzSqlVM
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
Inoltre, se desideri enumerare il Dynamic Data Masking e le politiche a livello di riga all'interno del database, puoi eseguire la query:
|
||||
```sql
|
||||
--Enumerates the masked columns
|
||||
SELECT
|
||||
OBJECT_NAME(mc.object_id) AS TableName,
|
||||
c.name AS ColumnName,
|
||||
mc.masking_function AS MaskingFunction
|
||||
FROM sys.masked_columns AS mc
|
||||
JOIN sys.columns AS c
|
||||
ON mc.object_id = c.object_id
|
||||
AND mc.column_id = c.column_id
|
||||
|
||||
--Enumerates Row level policies
|
||||
SELECT
|
||||
sp.name AS PolicyName,
|
||||
sp.is_enabled,
|
||||
sp.create_date,
|
||||
sp.modify_date,
|
||||
OBJECT_NAME(sp.object_id) AS TableName,
|
||||
sp2.predicate_definition AS PredicateDefinition
|
||||
FROM sys.security_policies AS sp
|
||||
JOIN sys.security_predicates AS sp2
|
||||
ON sp.object_id = sp2.object_id;
|
||||
|
||||
```
|
||||
### Connettersi ed eseguire query SQL
|
||||
|
||||
Potresti trovare una stringa di connessione (contenente credenziali) dall'esempio [enumerando un Az WebApp](az-app-services.md):
|
||||
@@ -298,7 +296,7 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
../az-privilege-escalation/az-sql-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Post Sfruttamento
|
||||
## Post Exploitation
|
||||
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-sql-post-exploitation.md
|
||||
|
||||
Reference in New Issue
Block a user