diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 478e28676..c53000a33 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -292,7 +292,7 @@ - [AWS - KMS Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md) - [AWS - Lambda Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md) - [AWS - Lightsail Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md) - - [AWS - Macie Enum](pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md) + - [AWS - Macie Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md) - [AWS - Mediapackage Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md) - [AWS - MQ Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md) - [AWS - MSK Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md) @@ -415,7 +415,7 @@ - [Az - Azure App Services](pentesting-cloud/azure-security/az-services/az-app-services.md) - [Az - Cloud Shell](pentesting-cloud/azure-security/az-services/az-cloud-shell.md) - [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md) - - [Az - Container Instances](pentesting-cloud/azure-security/az-services/az-container-instances.md) + - [Az - Container Instances, Apps & Jobs](pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md) - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md) - [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md) - [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md) @@ -470,7 +470,7 @@ - [Az - App Services Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md) - [Az - Automation Accounts Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md) - [Az - Container Registry Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md) - - [Az - Container Instances Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md) + - [Az - Container Instances, Apps & Jobs Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-apps-jobs-privesc.md) - [Az - CosmosDB Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md) - [Az - EntraID Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md) - [Az - Conditional Access Policies & MFA Bypass](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md index ab9c12a26..4cffdf811 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md @@ -40,6 +40,6 @@ aws iam get-account-summary ``` ## Riferimenti -- https://aws.amazon.com/organizations/ +- [https://aws.amazon.com/organizations/](https://aws.amazon.com/organizations/) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md index 46302b0d4..567f03a9e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md @@ -4,7 +4,7 @@ ## SQS -Amazon Simple Queue Service (SQS) è presentato come un **servizio di messaggistica completamente gestito**. La sua funzione principale è quella di assistere nella scalabilità e nel disaccoppiamento di microservizi, sistemi distribuiti e applicazioni serverless. Il servizio è progettato per eliminare la necessità di gestire e operare middleware orientato ai messaggi, che può spesso essere complesso e richiedere molte risorse. Questa eliminazione della complessità consente agli sviluppatori di concentrare i loro sforzi su aspetti più innovativi e differenzianti del loro lavoro. +Amazon Simple Queue Service (SQS) è presentato come un **servizio di messaggistica completamente gestito**. La sua funzione principale è quella di assistere nella scalabilità e nel disaccoppiamento di microservizi, sistemi distribuiti e applicazioni serverless. Il servizio è progettato per rimuovere la necessità di gestire e operare middleware orientato ai messaggi, che può spesso essere complesso e richiedere molte risorse. Questa eliminazione della complessità consente agli sviluppatori di concentrare i loro sforzi su aspetti più innovativi e differenzianti del loro lavoro. ### Enumeration ```bash @@ -46,6 +46,6 @@ aws sqs send-message --queue-url --message-body ## Riferimenti -- https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html +- [https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html](https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md b/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md index b5c7313b9..e1dbb9e49 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md +++ b/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md @@ -1,4 +1,4 @@ -# Az - Persistenza dello Storage Queue +# Az - Queue Storage Persistence {{#include ../../../banners/hacktricks-training.md}} @@ -22,8 +22,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## Riferimenti -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md index af40757ab..ed0d73a1e 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md @@ -46,7 +46,7 @@ az storage message update --queue-name \ ``` ### Azioni: `Microsoft.Storage/storageAccounts/queueServices/queues/delete` -Questo permesso consente a un attaccante di eliminare le code all'interno dell'account di archiviazione. Sfruttando questa capacità, un attaccante può rimuovere permanentemente le code e tutti i loro messaggi associati, causando significative interruzioni nei flussi di lavoro e portando a una perdita critica di dati per le applicazioni che dipendono dalle code interessate. Questa azione può anche essere utilizzata per sabotare i servizi rimuovendo componenti essenziali del sistema. +Questo permesso consente a un attaccante di eliminare le code all'interno dell'account di archiviazione. Sfruttando questa capacità, un attaccante può rimuovere permanentemente le code e tutti i loro messaggi associati, causando significative interruzioni ai flussi di lavoro e portando a una perdita critica di dati per le applicazioni che dipendono dalle code interessate. Questa azione può anche essere utilizzata per sabotare i servizi rimuovendo componenti essenziali del sistema. ```bash az storage queue delete --name --account-name ``` @@ -68,8 +68,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## Riferimenti -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md index ee7f99e33..8f0aec23a 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md @@ -30,17 +30,10 @@ az servicebus queue delete --resource-group --namespace-name ``` ### Azioni: `Microsoft.ServiceBus/namespaces/topics/subscriptions/Delete` -Un attaccante con questo permesso può eliminare un'abbonamento di Azure Service Bus. Questa azione rimuove l'abbonamento e tutti i suoi messaggi associati, potenzialmente interrompendo flussi di lavoro, elaborazione dei dati e operazioni di sistema che dipendono dall'abbonamento. +Un attaccante con questo permesso può eliminare un'abbonamento di Azure Service Bus. Questa azione rimuove l'abbonamento e tutti i suoi messaggi associati, potenzialmente interrompendo i flussi di lavoro, l'elaborazione dei dati e le operazioni di sistema che si basano sull'abbonamento. ```bash az servicebus topic subscription delete --resource-group --namespace-name --topic-name --name ``` -### Azioni: `Microsoft.ServiceBus/namespaces/write` & `Microsoft.ServiceBus/namespaces/read` - -Un attaccante con permessi per creare o modificare i namespace di Azure Service Bus può sfruttare questo per interrompere le operazioni, distribuire risorse non autorizzate o esporre dati sensibili. Possono modificare configurazioni critiche come abilitare l'accesso alla rete pubblica, ridurre le impostazioni di crittografia o cambiare gli SKU per degradare le prestazioni o aumentare i costi. Inoltre, potrebbero disabilitare l'autenticazione locale, manipolare le posizioni delle repliche o regolare le versioni TLS per indebolire i controlli di sicurezza, rendendo la misconfigurazione del namespace un rischio significativo post-exploitation. -```bash -az servicebus namespace create --resource-group --name --location -az servicebus namespace update --resource-group --name --tags -``` ### Azioni: `Microsoft.ServiceBus/namespaces/queues/write` (`Microsoft.ServiceBus/namespaces/queues/read`) Un attaccante con permessi per creare o modificare le code di Azure Service Bus (per modificare la coda è necessario anche l'Action:`Microsoft.ServiceBus/namespaces/queues/read`) può sfruttare questo per intercettare dati, interrompere flussi di lavoro o abilitare accessi non autorizzati. Possono alterare configurazioni critiche come l'inoltro di messaggi a endpoint malevoli, regolare il TTL dei messaggi per mantenere o eliminare dati in modo improprio, o abilitare il dead-lettering per interferire con la gestione degli errori. Inoltre, potrebbero manipolare le dimensioni delle code, le durate di blocco o gli stati per interrompere la funzionalità del servizio o eludere la rilevazione, rendendo questo un rischio significativo post-exploitation. @@ -50,14 +43,14 @@ az servicebus queue update --resource-group --namespace-name ``` ### Azioni: `Microsoft.ServiceBus/namespaces/topics/write` (`Microsoft.ServiceBus/namespaces/topics/read`) -Un attaccante con permessi per creare o modificare argomenti (per modificare l'argomento avrai anche bisogno dell'azione: `Microsoft.ServiceBus/namespaces/topics/read`) all'interno di uno spazio dei nomi di Azure Service Bus può sfruttare questo per interrompere i flussi di lavoro dei messaggi, esporre dati sensibili o abilitare azioni non autorizzate. Utilizzando comandi come az servicebus topic update, possono manipolare configurazioni come abilitare il partizionamento per un uso improprio della scalabilità, alterare le impostazioni TTL per mantenere o scartare i messaggi in modo improprio, o disabilitare il rilevamento dei duplicati per eludere i controlli. Inoltre, potrebbero regolare i limiti di dimensione degli argomenti, cambiare lo stato per interrompere la disponibilità, o configurare argomenti espressi per memorizzare temporaneamente i messaggi intercettati, rendendo la gestione degli argomenti un focus critico per la mitigazione post-exploitation. +Un attaccante con permessi per creare o modificare argomenti (per modificare l'argomento è necessario anche l'azione: `Microsoft.ServiceBus/namespaces/topics/read`) all'interno di uno spazio dei nomi di Azure Service Bus può sfruttare questo per interrompere i flussi di lavoro dei messaggi, esporre dati sensibili o abilitare azioni non autorizzate. Utilizzando comandi come az servicebus topic update, possono manipolare configurazioni come abilitare il partizionamento per un uso improprio della scalabilità, modificare le impostazioni TTL per mantenere o scartare i messaggi in modo improprio, o disabilitare il rilevamento dei duplicati per eludere i controlli. Inoltre, potrebbero regolare i limiti di dimensione degli argomenti, cambiare lo stato per interrompere la disponibilità, o configurare argomenti espressi per memorizzare temporaneamente i messaggi intercettati, rendendo la gestione degli argomenti un focus critico per la mitigazione post-exploitation. ```bash az servicebus topic create --resource-group --namespace-name --name az servicebus topic update --resource-group --namespace-name --name ``` ### Azioni: `Microsoft.ServiceBus/namespaces/topics/subscriptions/write` (`Microsoft.ServiceBus/namespaces/topics/subscriptions/read`) -Un attaccante con permessi per creare o modificare le sottoscrizioni (per modificare la sottoscrizione è necessario anche l'azione: `Microsoft.ServiceBus/namespaces/topics/subscriptions/read`) all'interno di un argomento di Azure Service Bus può sfruttare questo per intercettare, reindirizzare o interrompere i flussi di lavoro dei messaggi. Utilizzando comandi come az servicebus topic subscription update, possono manipolare configurazioni come l'abilitazione del dead lettering per deviare i messaggi, inoltrare messaggi a endpoint non autorizzati o modificare la durata TTL e il tempo di blocco per trattenere o interferire con la consegna dei messaggi. Inoltre, possono alterare le impostazioni di stato o il conteggio massimo di consegna per interrompere le operazioni o eludere la rilevazione, rendendo il controllo delle sottoscrizioni un aspetto critico degli scenari di post-exploitation. +Un attaccante con permessi per creare o modificare le sottoscrizioni (per modificare la sottoscrizione avrai anche bisogno dell'azione: `Microsoft.ServiceBus/namespaces/topics/subscriptions/read`) all'interno di un argomento di Azure Service Bus può sfruttare questo per intercettare, reindirizzare o interrompere i flussi di messaggi. Utilizzando comandi come az servicebus topic subscription update, possono manipolare configurazioni come l'abilitazione del dead lettering per deviare i messaggi, inoltrare messaggi a endpoint non autorizzati o modificare la durata TTL e il tempo di blocco per trattenere o interferire con la consegna dei messaggi. Inoltre, possono alterare le impostazioni di stato o il conteggio massimo di consegna per interrompere le operazioni o eludere la rilevazione, rendendo il controllo delle sottoscrizioni un aspetto critico degli scenari di post-exploitation. ```bash az servicebus topic subscription create --resource-group --namespace-name --topic-name --name az servicebus topic subscription update --resource-group --namespace-name --topic-name --name @@ -72,12 +65,12 @@ Dai un'occhiata qui: ## Riferimenti -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes -- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless -- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus -- https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest -- https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) +- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless) +- [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus) +- [https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest](https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest) +- [https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest](https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md index 15896b719..5cf2f9d9a 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md @@ -19,6 +19,16 @@ az sql db create --resource-group --server --name # Update Database az sql db update --resource-group --server --name --max-size +``` +Con queste autorizzazioni (`Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`) puoi ripristinare un database eliminato: +```bash +az sql db restore \ +--dest-name \ +--name \ +--resource-group \ +--server \ +--deleted-time "" + ``` ### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read` @@ -42,7 +52,7 @@ az sql elastic-pool update \ ``` ### `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 consentirgli 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. +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 \ @@ -62,7 +72,7 @@ az sql server connection-policy update \ ``` ### `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. +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 \ @@ -87,4 +97,41 @@ az sql db import --admin-user \ --storage-key \ --storage-uri `https://.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 \ +--server \ +--connection-policy +``` +### `Microsoft.Sql/servers/keys/write` && `Microsoft.Sql/servers/keys/read` + +Con questi permessi, un utente può aggiornare e recuperare le chiavi di crittografia associate a un Azure SQL Server. Queste chiavi sono spesso utilizzate per proteggere 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 \ +--resource-group \ +--server \ +--status +``` {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md deleted file mode 100644 index 465c083bb..000000000 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md +++ /dev/null @@ -1,64 +0,0 @@ -# Az - Azure Container Instances Privesc - -{{#include ../../../banners/hacktricks-training.md}} - -## Azure Container Instances - -Per ulteriori informazioni controlla: - -{{#ref}} -../az-services/az-container-instances.md -{{#endref}} - -### `Microsoft.ContainerInstance/containerGroups/read`, `Microsoft.ContainerInstance/containerGroups/containers/exec/action` - -Queste autorizzazioni consentono all'utente di **eseguire un comando** in un container in esecuzione. Questo può essere utilizzato per **escalare i privilegi** nel container se ha un'identità gestita associata. Ovviamente, è anche possibile accedere al codice sorgente e a qualsiasi altra informazione sensibile memorizzata all'interno del container. - -Per eseguire un `ls` e ottenere l'output è semplice come: -```bash -az container exec --name --resource-group --exec-command 'ls' -``` -È anche possibile **leggere l'output** del container con: -```bash -az container attach --name --resource-group -``` -Oppure ottieni i log con: -```bash -az container logs --name --resource-group -``` -### `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` - -Queste autorizzazioni consentono di **collegare un'identità gestita dall'utente** a un gruppo di contenitori. Questo è molto utile per elevare i privilegi nel contenitore. - -Per collegare un'identità gestita dall'utente a un gruppo di contenitori: -```bash -az rest \ ---method PATCH \ ---url "/subscriptions//resourceGroups//providers/Microsoft.ContainerInstance/containerGroups/?api-version=2021-09-01" \ ---body '{ -"identity": { -"type": "UserAssigned", -"userAssignedIdentities": { -"/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/": {} -} -} -}' \ ---headers "Content-Type=application/json" -``` -### `Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` - -Queste autorizzazioni consentono di **creare o aggiornare un gruppo di contenitori** con un **'identità gestita dall'utente'** ad esso associata. Questo è molto utile per elevare i privilegi nel contenitore. -```bash -az container create \ ---resource-group > \ ---name nginx2 \ ---image mcr.microsoft.com/oss/nginx/nginx:1.9.15-alpine \ ---assign-identity "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" \ ---restart-policy OnFailure \ ---os-type Linux \ ---cpu 1 \ ---memory 1.0 -``` -Inoltre, è anche possibile aggiornare un gruppo di contenitori esistente aggiungendo ad esempio l'argomento **`--command-line`** con una reverse shell. - -{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md index 49e0e8a20..0fbb5b09e 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md @@ -12,7 +12,7 @@ Per ulteriori informazioni controlla: ### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/read` -Un attaccante con questo permesso può visualizzare i messaggi da una Azure Storage Queue. Questo consente all'attaccante di vedere il contenuto dei messaggi senza contrassegnarli come elaborati o alterare il loro stato. Questo potrebbe portare a un accesso non autorizzato a informazioni sensibili, consentendo l'exfiltrazione dei dati o la raccolta di informazioni per ulteriori attacchi. +Un attaccante con questo permesso può visualizzare i messaggi da una Azure Storage Queue. Questo consente all'attaccante di vedere il contenuto dei messaggi senza contrassegnarli come elaborati o alterare il loro stato. Questo potrebbe portare a un accesso non autorizzato a informazioni sensibili, consentendo l'exfiltrazione di dati o la raccolta di informazioni per ulteriori attacchi. ```bash az storage message peek --queue-name --account-name ``` @@ -56,8 +56,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## Riferimenti -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md index 3aa2b366e..289909881 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md @@ -12,9 +12,9 @@ Per ulteriori informazioni controlla: ### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action OR Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action -Queste autorizzazioni ti consentono di ottenere o rigenerare le chiavi per le regole di autorizzazione locali all'interno di uno spazio dei nomi Service Bus. Utilizzando queste chiavi è possibile autenticarsi come lo spazio dei nomi Service Bus, consentendoti di inviare messaggi a qualsiasi coda o argomento, ricevere messaggi da qualsiasi coda o sottoscrizione, o potenzialmente interagire con il sistema in modi che potrebbero interrompere le operazioni, impersonare utenti validi o iniettare dati dannosi nel flusso di messaggi. +Queste autorizzazioni ti consentono di ottenere o rigenerare le chiavi per le regole di autorizzazione locali all'interno di uno spazio dei nomi di Service Bus. Utilizzando queste chiavi è possibile autenticarsi come lo spazio dei nomi di Service Bus, permettendoti di inviare messaggi a qualsiasi coda o argomento, ricevere messaggi da qualsiasi coda o sottoscrizione, o potenzialmente interagire con il sistema in modi che potrebbero interrompere le operazioni, impersonare utenti validi o iniettare dati dannosi nel flusso di messaggi. -Nota che per impostazione predefinita la **`RootManageSharedAccessKey` regola ha il controllo completo** sullo spazio dei nomi Service Bus ed è utilizzata dal `az` cli, tuttavia, potrebbero esistere altre regole con altri valori di chiave. +Nota che per impostazione predefinita la **`RootManageSharedAccessKey` regola ha il controllo completo** sullo spazio dei nomi di Service Bus ed è utilizzata dal `az` cli, tuttavia, potrebbero esistere altre regole con altri valori di chiave. ```bash # List keys az servicebus namespace authorization-rule keys list --resource-group --namespace-name --authorization-rule-name RootManageSharedAccessKey [--authorization-rule-name RootManageSharedAccessKey] @@ -41,7 +41,7 @@ az servicebus namespace authorization-rule update \ ``` ### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action OR Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action -Argomenti e code specifici all'interno di uno spazio dei nomi Service Bus possono avere le proprie regole di autorizzazione, che possono essere utilizzate per controllare l'accesso all'entità. Avere questi permessi consente di **recuperare o rigenerare le chiavi per queste regole di autorizzazione locali**, permettendoti di autenticarti come l'entità e potenzialmente inviare o ricevere messaggi, gestire le iscrizioni o interagire con il sistema in modi che potrebbero interrompere le operazioni, impersonare utenti validi o iniettare dati dannosi nel flusso di messaggistica. +Argomenti e code specifici all'interno di uno spazio dei nomi Service Bus possono avere le proprie regole di autorizzazione, che possono essere utilizzate per controllare l'accesso all'entità. Avere questi permessi ti consente di **recuperare o rigenerare le chiavi per queste regole di autorizzazione locali**, permettendoti di autenticarti come entità e potenzialmente inviare o ricevere messaggi, gestire le iscrizioni o interagire con il sistema in modi che potrebbero interrompere le operazioni, impersonare utenti validi o iniettare dati dannosi nel flusso di messaggi. ```bash # List keys (topics) az servicebus topic authorization-rule keys list --resource-group --namespace-name --topic-name --name @@ -76,7 +76,7 @@ az servicebus topic authorization-rule update --resource-group --nam # In a queue az servicebus queue authorization-rule update --resource-group --namespace-name --queue-name --name --rights Manage Listen Send ``` -### Microsoft.ServiceBus/namespaces/write (& Microsoft.ServiceBus/namespaces/read se viene utilizzato az cli) +### Microsoft.ServiceBus/namespaces/write (& Microsoft.ServiceBus/namespaces/read if az cli is used) Con questi permessi **un attaccante può riattivare "l'autenticazione locale"** con il seguente comando e quindi tutte le chiavi delle politiche condivise funzioneranno. ```bash @@ -84,127 +84,202 @@ az servicebus namespace update --disable-local-auth false -n -- ``` ### Invia messaggi con chiavi (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) -Puoi recuperare il `PrimaryConnectionString`, che funge da credenziale per lo spazio dei nomi del Service Bus. Con questa stringa di connessione, puoi autenticarti completamente come lo spazio dei nomi del Service Bus, permettendoti di inviare messaggi a qualsiasi coda o argomento e potenzialmente interagire con il sistema in modi che potrebbero interrompere le operazioni, impersonare utenti validi o iniettare dati dannosi nel flusso di messaggistica. +Puoi recuperare il `PrimaryConnectionString`, che funge da credenziale per il namespace del Service Bus. Con questa stringa di connessione, puoi autenticarti completamente come il namespace del Service Bus, permettendoti di inviare messaggi a qualsiasi coda o argomento e potenzialmente interagire con il sistema in modi che potrebbero interrompere le operazioni, impersonare utenti validi o iniettare dati dannosi nel flusso di messaggistica. Questo metodo funziona se `--disable-local-auth` è impostato su false. ```python -#You need to install the following libraries -#pip install azure-servicebus -#pip install aiohttp -#pip install azure-identity - import asyncio from azure.servicebus.aio import ServiceBusClient from azure.servicebus import ServiceBusMessage -# Constants NAMESPACE_CONNECTION_STR = "" -TOPIC_NAME = "" +TOPIC_OR_QUEUE_NAME = "" -# Function to send a single message to a Service Bus topic -async def send_individual_message(publisher): -# Prepare a single message with updated content -single_message = ServiceBusMessage("Hacktricks-Training: Single Item") -# Send the message to the topic -await publisher.send_messages(single_message) -print("Sent a single message containing 'Hacktricks-Training'") +async def send_message(): +async with ServiceBusClient.from_connection_string(NAMESPACE_CONNECTION_STR) as client: +async with client.get_topic_sender(topic_name=TOPIC_OR_QUEUE_NAME) as sender: +await sender.send_messages(ServiceBusMessage("Hacktricks-Training: Single Item")) +print("Sent message") -# Function to send multiple messages to a Service Bus topic -async def send_multiple_messages(publisher): -# Generate a collection of messages with updated content -message_list = [ServiceBusMessage(f"Hacktricks-Training: Item {i+1} in list") for i in range(5)] -# Send the entire collection of messages to the topic -await publisher.send_messages(message_list) -print("Sent a list of 5 messages containing 'Hacktricks-Training'") +asyncio.run(send_message()) +``` +Inoltre, puoi inviare messaggi con az rest; in questo caso, devi generare un token sas da utilizzare. +```python +import time, urllib.parse, hmac, hashlib, base64 -# Function to send a grouped batch of messages to a Service Bus topic -async def send_grouped_messages(publisher): -# Send a grouped batch of messages with updated content -async with publisher: -grouped_message_batch = await publisher.create_message_batch() -for i in range(10): -try: -# Append a message to the batch with updated content -grouped_message_batch.add_message(ServiceBusMessage(f"Hacktricks-Training: Item {i+1}")) -except ValueError: -# If batch reaches its size limit, handle by creating another batch -break -# Dispatch the batch of messages to the topic -await publisher.send_messages(grouped_message_batch) -print("Sent a batch of 10 messages containing 'Hacktricks-Training'") +def generate_sas_token(uri, key_name, key, expiry_in_seconds=3600): +expiry = int(time.time() + expiry_in_seconds) +string_to_sign = urllib.parse.quote_plus(uri) + "\n" + str(expiry) +signed_hmac_sha256 = hmac.new(key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256).digest() +signature = urllib.parse.quote_plus(base64.b64encode(signed_hmac_sha256)) +token = f"SharedAccessSignature sr={urllib.parse.quote_plus(uri)}&sig={signature}&se={expiry}&skn={key_name}" +return token -# Main function to execute all tasks -async def execute(): -# Instantiate the Service Bus client with the connection string -async with ServiceBusClient.from_connection_string( -conn_str=NAMESPACE_CONNECTION_STR, -logging_enable=True) as sb_client: -# Create a topic sender for dispatching messages to the topic -publisher = sb_client.get_topic_sender(topic_name=TOPIC_NAME) -async with publisher: -# Send a single message -await send_individual_message(publisher) -# Send multiple messages -await send_multiple_messages(publisher) -# Send a batch of messages -await send_grouped_messages(publisher) +# Replace these with your actual values +resource_uri = "https://.servicebus.windows.net/" +key_name = "" +primary_key = "" -# Run the asynchronous execution -asyncio.run(execute()) -print("Messages Sent") -print("----------------------------") +sas_token = generate_sas_token(resource_uri, key_name, primary_key) +print(sas_token) +``` + +```bash +az rest --method post \ +--uri "https://.servicebus.windows.net//messages" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=https%3A%2F%2F.servicebus.windows.net%2F&sig=&se=&skn=" \ +--body "" ``` ### Ricevi con chiavi (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) -Puoi recuperare il PrimaryConnectionString, che funge da credenziale per il namespace del Service Bus. Utilizzando questa stringa di connessione, puoi ricevere messaggi da qualsiasi coda o sottoscrizione all'interno del namespace, consentendo l'accesso a dati potenzialmente sensibili o critici, abilitando l'exfiltrazione dei dati o interferendo con l'elaborazione dei messaggi e i flussi di lavoro delle applicazioni. +Puoi recuperare il PrimaryConnectionString, che funge da credenziale per il namespace di Service Bus. Utilizzando questa stringa di connessione, puoi ricevere messaggi da qualsiasi coda o sottoscrizione all'interno del namespace, consentendo l'accesso a dati potenzialmente sensibili o critici, abilitando l'esfiltrazione dei dati o interferendo con l'elaborazione dei messaggi e i flussi di lavoro delle applicazioni. Questo metodo funziona se `--disable-local-auth` è impostato su false. ```python -#You need to install the following libraries -#pip install azure-servicebus -#pip install aiohttp -#pip install azure-identity - import asyncio from azure.servicebus.aio import ServiceBusClient -NAMESPACE_CONNECTION_STR = "" -TOPIC_NAME = "" -SUBSCRIPTION_NAME = "" #Topic Subscription +CONN_STR = "" +QUEUE = "" -# Function to receive and process messages from a Service Bus subscription -async def receive_and_process_messages(): -# Create a Service Bus client using the connection string -async with ServiceBusClient.from_connection_string( -conn_str=NAMESPACE_CONNECTION_STR, -logging_enable=True) as servicebus_client: +# For topics/subscriptions, you would use: +# TOPIC = "" +# SUBSCRIPTION = "" -# Get the Subscription Receiver object for the specified topic and subscription -receiver = servicebus_client.get_subscription_receiver( -topic_name=TOPIC_NAME, -subscription_name=SUBSCRIPTION_NAME, -max_wait_time=5 -) - -async with receiver: -# Receive messages with a defined maximum wait time and count -received_msgs = await receiver.receive_messages( -max_wait_time=5, -max_message_count=20 -) -for msg in received_msgs: -print("Received: " + str(msg)) -# Complete the message to remove it from the subscription +async def receive(): +async with ServiceBusClient.from_connection_string(CONN_STR) as client: +# For a queue receiver: +async with client.get_queue_receiver(queue_name=QUEUE, max_wait_time=5) as receiver: +msgs = await receiver.receive_messages(max_wait_time=5, max_message_count=20) +for msg in msgs: +print("Received:", msg) await receiver.complete_message(msg) -# Run the asynchronous message processing function -asyncio.run(receive_and_process_messages()) -print("Message Receiving Completed") -print("----------------------------") +# For a topic/subscription receiver (commented out): +# async with client.get_subscription_receiver(topic_name=TOPIC, subscription_name=SUBSCRIPTION, max_wait_time=5) as receiver: +# msgs = await receiver.receive_messages(max_wait_time=5, max_message_count=20) +# for msg in msgs: +# print("Received:", msg) +# await receiver.complete_message(msg) + +asyncio.run(receive()) +print("Done receiving messages") +``` +Inoltre, puoi inviare messaggi con az rest; in questo caso, devi generare un token sas da utilizzare. +```python +import time, urllib.parse, hmac, hashlib, base64 + +def generate_sas_token(uri, key_name, key, expiry_in_seconds=3600): +expiry = int(time.time() + expiry_in_seconds) +string_to_sign = urllib.parse.quote_plus(uri) + "\n" + str(expiry) +signature = urllib.parse.quote_plus(base64.b64encode( +hmac.new(key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256).digest() +)) +token = f"SharedAccessSignature sr={urllib.parse.quote_plus(uri)}&sig={signature}&se={expiry}&skn={key_name}" +return token + +# Example usage: +resource_uri = "https://.servicebus.windows.net/queue" # For queue +# resource_uri = "https://.servicebus.windows.net//subscriptions/" # For topic subscription +sas_token = generate_sas_token(resource_uri, "", "") +print(sas_token) + +``` +Per una coda puoi ottenere o dare un'occhiata al messaggio (ottenere un messaggio lo rimuoverebbe, mentre dare un'occhiata non lo farà): +```bash +#Get a message +az rest --method post \ +--uri "https://.servicebus.windows.net//messages/head?timeout=60" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#Peek a message +az rest --method get \ +--uri "https://.servicebus.windows.net//messages/head?peekonly=true&timeout=60" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#You can select the meesage changing the field PreviousSequenceNumber +az rest --method get \ +--uri "https://.servicebus.windows.net//messages?timeout=60&PreviousSequenceNumber=&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" +``` +Please provide the text you would like me to translate. +```bash +#Get a message +az rest --method post \ +--uri "https://.servicebus.windows.net//subscriptions//messages/head?timeout=60" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#Peek a message +az rest --method get \ +--uri "https://.servicebus.windows.net//subscriptions//messages/head?timeout=60&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#You can select the meesage changing the field PreviousSequenceNumber +az rest --method get \ +--uri "https://.servicebus.windows.net//subscriptions//messages?timeout=60&PreviousSequenceNumber=&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" +``` +### Invia Messaggi. DataActions: `Microsoft.ServiceBus/namespaces/messages/send/action` + +Puoi utilizzare queste autorizzazioni per inviare messaggi, anche se `--disable-local-auth` è impostato su true. +```python +import asyncio +from azure.identity.aio import DefaultAzureCredential +from azure.servicebus.aio import ServiceBusClient +from azure.servicebus import ServiceBusMessage + +NS = ".servicebus.windows.net" # Your namespace +QUEUE_OR_TOPIC = "" # Your queue name + +async def run(): +credential = DefaultAzureCredential() +async with ServiceBusClient(fully_qualified_namespace=NS, credential=credential) as client: +async with client.get_queue_sender(queue_name=QUEUE) as sender: +await sender.send_messages(ServiceBusMessage("Single Message")) +print("Sent a single message") +await credential.close() + +if __name__ == "__main__": +asyncio.run(run()) +``` +### Ricevi Messaggi. DataActions: `Microsoft.ServiceBus/namespaces/messages/receive/action` + +Puoi utilizzare queste autorizzazioni per ricevere messaggi, anche se `--disable-local-auth` è impostato su true. +```python +import asyncio +from azure.identity.aio import DefaultAzureCredential +from azure.servicebus.aio import ServiceBusClient + +NS = ".servicebus.windows.net" +QUEUE = "" + +# For a topic subscription, uncomment and set these values: +# TOPIC = "" +# SUBSCRIPTION = "" + +async def run(): +credential = DefaultAzureCredential() +async with ServiceBusClient(fully_qualified_namespace=NS, credential=credential) as client: +# Receiving from a queue: +async with client.get_queue_receiver(queue_name=QUEUE, max_wait_time=5) as receiver: +async for msg in receiver: +print("Received from Queue:", msg) +await receiver.complete_message(msg) + +# To receive from a topic subscription, uncomment the code below and comment out the queue receiver above: +# async with client.get_subscription_receiver(topic_name=TOPIC, subscription_name=SUBSCRIPTION, max_wait_time=5) as receiver: +# async for msg in receiver: +# print("Received from Topic Subscription:", msg) +# await receiver.complete_message(msg) + +await credential.close() + +asyncio.run(run()) +print("Done receiving messages") ``` ## Riferimenti -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes -- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless -- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) +- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless) +- [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md index 87507e105..48e9050e7 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md @@ -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 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. +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. ```bash # Change the server password az sql server update \ @@ -26,7 +26,7 @@ az sql server create \ --resource-group \ --location \ --admin-user \ ---admin-password +--admin-password ``` Inoltre, è necessario avere l'accesso pubblico abilitato se si desidera accedere da un endpoint non privato. Per abilitarlo: ```bash @@ -35,6 +35,31 @@ az sql server update \ --resource-group \ --enable-public-network true ``` +Inoltre, con i permessi puoi abilitare l'assegnazione dell'identità, operare con l'identità gestita collegata al server. Ad esempio qui con un'identità gestita che può accedere ad Azure Storage: +```bash +az sql server update \ +--name \ +--resource-group \ +--assign_identity +``` + +```sql +CREATE EXTERNAL DATA SOURCE ManagedIdentity +WITH ( +TYPE = BLOB_STORAGE, +LOCATION = 'https://.blob.core.windows.net/', +CREDENTIAL = ManagedIdentityCredential +); +GO + +SELECT * +FROM OPENROWSET( +BULK 'message.txt', +DATA_SOURCE = 'ManagedIdentity', +SINGLE_CLOB +) AS DataFile; +GO +``` ### `Microsoft.Sql/servers/firewallRules/write` Un attaccante può manipolare le regole del firewall sui server Azure SQL per consentire accessi non autorizzati. Questo può essere sfruttato per aprire il server a indirizzi IP specifici o a interi intervalli di IP, inclusi gli IP pubblici, consentendo l'accesso a attori malevoli. Questa attività di post-sfruttamento può essere utilizzata per eludere i controlli di sicurezza di rete esistenti, stabilire persistenza o facilitare il movimento laterale all'interno dell'ambiente esponendo risorse sensibili. @@ -74,7 +99,7 @@ NOTA: È necessario avere abilitato l'accesso pubblico. ### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read` -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: +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: ```bash az sql server ad-admin create \ --server \ @@ -84,7 +109,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 \ diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md deleted file mode 100644 index 56764121e..000000000 --- a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md +++ /dev/null @@ -1,45 +0,0 @@ -# Az - Container Instances - -{{#include ../../../banners/hacktricks-training.md}} - -## Informazioni di base - -Azure Container Instances (ACI) forniscono un **modo serverless e on-demand** per eseguire **container** nel cloud Azure. Puoi **distribuire** uno o più container in un gruppo con **compute scalabile**, **opzioni di rete** e la flessibilità di connetterti ad **altri servizi Azure** (come Storage, Virtual Networks o Container Registries). - -Poiché sono carichi di lavoro **effimeri**, non è necessario gestire l'infrastruttura VM sottostante: Azure si occupa di questo per te. Tuttavia, da una **prospettiva di sicurezza offensiva**, è fondamentale comprendere come **permessi**, **identità**, **configurazioni di rete** e **log** possano rivelare superfici di attacco e potenziali misconfigurazioni. - -### Configurazioni - -- Per creare un container è possibile utilizzare un'immagine pubblica, un'immagine di container da un Azure Container Registry o un repository esterno, che potrebbe **richiedere di configurare una password** per accedervi. -- Per quanto riguarda la rete, può anche avere un **IP pubblico** o essere **endpoint privati**. -- È anche possibile configurare impostazioni docker comuni come: -- **Variabili di ambiente** -- **Volumi** (anche da Azure Files) -- **Porte** -- **Limiti di CPU e memoria** -- **Politica di riavvio** -- **Esegui come privilegiato** -- **Riga di comando da eseguire** -- ... - -## Enumerazione - -> [!WARNING] -> Quando si enumerano ACI, è possibile rivelare configurazioni sensibili come **variabili di ambiente**, **dettagli di rete** o **identità gestite**. Fai attenzione a registrarle o visualizzarle. -```bash -# List all container instances in the subscription -az container list - -# Show detailed information about a specific container instance -az container show --name --resource-group - -# Fetch logs from a container -az container logs --name --resource-group - -# Execute a command in a running container and get the output -az container exec --name --resource-group --exec-command "ls" - -# Get yaml configuration of the container group -az container export --name --resource-group -``` - diff --git a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md index b5f61e678..42f3cbbf9 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md @@ -4,7 +4,7 @@ ## Informazioni di base -Azure Queue Storage è un servizio nella piattaforma cloud Azure di Microsoft progettato per la messaggistica tra i componenti dell'applicazione, **abilitando la comunicazione asincrona e il disaccoppiamento**. Ti consente di memorizzare un numero illimitato di messaggi, ciascuno fino a 64 KB di dimensione, e supporta operazioni come la creazione e la cancellazione di code, l'aggiunta, il recupero, l'aggiornamento e la cancellazione di messaggi, oltre alla gestione dei metadati e delle politiche di accesso. Sebbene elabori tipicamente i messaggi in un ordine di arrivo (FIFO), non è garantito un FIFO rigoroso. +Azure Queue Storage è un servizio nella piattaforma cloud Azure di Microsoft progettato per la messaggistica tra i componenti dell'applicazione, **abilitando la comunicazione asincrona e il disaccoppiamento**. Ti consente di memorizzare un numero illimitato di messaggi, ciascuno fino a 64 KB di dimensione, e supporta operazioni come la creazione e la cancellazione di code, l'aggiunta, il recupero, l'aggiornamento e la cancellazione di messaggi, oltre alla gestione dei metadati e delle politiche di accesso. Sebbene elabori tipicamente i messaggi in un modo first-in-first-out (FIFO), il FIFO rigoroso non è garantito. ### Enumerazione @@ -84,8 +84,8 @@ $queueMessage.Value ## Riferimenti -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md index f20420d07..8949c287c 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md @@ -8,46 +8,55 @@ Azure Service Bus è un **servizio di messaggistica** basato su cloud progettato ### Concetti Chiave -1. **Code:** il suo scopo è memorizzare i messaggi fino a quando il destinatario è pronto. -- I messaggi sono ordinati, timestamped e memorizzati in modo durevole. +1. **Namespaces:** Un namespace nei sistemi di messaggistica è un contenitore logico che organizza e gestisce componenti di messaggistica, code e argomenti. Fornisce un ambiente isolato in cui le applicazioni possono inviare, ricevere e elaborare messaggi. Le code e gli argomenti condividono la stessa infrastruttura e configurazione all'interno di un namespace di Service Bus, ma operano in modo indipendente senza interagire tra loro. +2. **Queues:** il suo scopo è memorizzare i messaggi fino a quando il destinatario non è pronto. +- I messaggi sono ordinati, timestampati e memorizzati in modo durevole. - Consegnati in modalità pull (recupero su richiesta). - Supporta la comunicazione punto a punto. -2. **Argomenti:** Messaggistica publish-subscribe per la trasmissione. +3. **Topics:** Messaggistica publish-subscribe per la trasmissione. - Più sottoscrizioni indipendenti ricevono copie dei messaggi. - Le sottoscrizioni possono avere regole/filtri per controllare la consegna o aggiungere metadati. - Supporta la comunicazione molti-a-molti. -3. **Namespace:** Un contenitore per tutti i componenti di messaggistica, code e argomenti, è come la tua porzione di un potente cluster Azure, fornendo capacità dedicata e, facoltativamente, estendendosi su tre zone di disponibilità. +L'endpoint/connection string del service bus è: +```bash +https://.servicebus.windows.net:443/ +``` ### Funzioni Avanzate Alcune funzioni avanzate sono: -- **Sessioni di Messaggi**: Garantisce l'elaborazione FIFO e supporta modelli di richiesta-risposta. -- **Auto-Inoltro**: Trasferisce messaggi tra code o argomenti nello stesso namespace. +- **Message Sessions**: Garantisce l'elaborazione FIFO e supporta modelli di richiesta-risposta. +- **Auto-Forwarding**: Trasferisce messaggi tra code o argomenti nello stesso namespace. - **Dead-Lettering**: Cattura messaggi non consegnabili per la revisione. -- **Consegna Programmata**: Ritarda l'elaborazione dei messaggi per compiti futuri. -- **Rinvio dei Messaggi**: Posticipa il recupero dei messaggi fino a quando non è pronto. -- **Transazioni**: Raggruppa operazioni in esecuzione atomica. -- **Filtri e Azioni**: Applica regole per filtrare o annotare i messaggi. -- **Auto-Cancellazione in Idle**: Elimina le code dopo inattività (min: 5 minuti). -- **Rilevamento dei Duplicati**: Rimuove messaggi duplicati durante i reinvii. -- **Cancellazione in Batch**: Elimina in blocco messaggi scaduti o non necessari. +- **Scheduled Delivery**: Ritarda l'elaborazione dei messaggi per compiti futuri. +- **Message Deferral**: Rimanda il recupero dei messaggi fino a quando non è pronto. +- **Transactions**: Raggruppa le operazioni in esecuzione atomica. +- **Filters & Actions**: Applica regole per filtrare o annotare i messaggi. +- **Auto-Delete on Idle**: Elimina le code dopo inattività (min: 5 minuti). +- **Duplicate Detection**: Rimuove messaggi duplicati durante i reinvii. +- **Batch Deletion**: Elimina in blocco messaggi scaduti o non necessari. ### Regola di Autorizzazione / Politica SAS -Le Politiche SAS definiscono i permessi di accesso per le entità del namespace di Azure Service Bus (La più importante), code e argomenti. Ogni politica ha i seguenti componenti: +Le Politiche SAS definiscono i permessi di accesso per le entità del namespace di Azure Service Bus (la più importante), code e argomenti. Ogni politica ha i seguenti componenti: -- **Permessi**: Caselle di controllo per specificare i livelli di accesso: -- Gestire: Concede il pieno controllo sull'entità, inclusa la configurazione e la gestione dei permessi. -- Inviare: Consente di inviare messaggi all'entità. -- Ascoltare: Consente di ricevere messaggi dall'entità. -- **Chiavi Primarie e Secondarie**: Queste sono chiavi crittografiche utilizzate per generare token sicuri per autenticare l'accesso. -- **Stringhe di Connessione Primarie e Secondarie**: Stringhe di connessione preconfigurate che includono l'endpoint e la chiave per un uso facile nelle applicazioni. -- **ID Politica SAS ARM**: Il percorso di Azure Resource Manager (ARM) per la politica per identificazione programmatica. +- **Permissions**: Caselle di controllo per specificare i livelli di accesso: +- Manage: Concede il pieno controllo sull'entità, inclusa la gestione della configurazione e dei permessi. +- Send: Consente l'invio di messaggi all'entità. +- Listen: Consente di ricevere messaggi dall'entità. +- **Primary and Secondary Keys**: Questi sono chiavi crittografiche utilizzate per generare token sicuri per autenticare l'accesso. +- **Primary and Secondary Connection Strings**: Stringhe di connessione preconfigurate che includono l'endpoint e la chiave per un uso facile nelle applicazioni. +- **SAS Policy ARM ID**: Il percorso di Azure Resource Manager (ARM) per la politica per identificazione programmatica. -### Namespace +È importante notare che un namespace ha una singola politica SAS che influisce su ogni entità al suo interno, mentre code e argomenti possono avere le proprie politiche SAS individuali per un controllo più granulare. -sku, regola di autorizzazione, +### "--disable-local-auth" + +Il parametro --disable-local-auth viene utilizzato per controllare se l'autenticazione locale (cioè l'uso delle chiavi di Shared Access Signature (SAS)) è abilitata per il tuo namespace di Service Bus. Ecco cosa devi sapere: + +- Quando impostato su true: L'autenticazione locale utilizzando le chiavi SAS è disabilitata e l'autenticazione di Azure Active Directory (Azure AD) è consentita. +- Quando impostato su false: Sia l'autenticazione SAS (locale) che l'autenticazione di Azure AD sono disponibili e puoi utilizzare stringhe di connessione con chiavi SAS per accedere alle risorse del tuo Service Bus. ### Enumerazione diff --git a/src/pentesting-cloud/azure-security/az-services/az-sql.md b/src/pentesting-cloud/azure-security/az-services/az-sql.md index c4c6b9e00..8d504f404 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-sql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-sql.md @@ -4,92 +4,146 @@ ## Azure SQL -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 è 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 consiste in tre principali offerte: +Azure SQL consiste in quattro offerte principali: -1. **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 schemi di database unici e fornisce raccomandazioni personalizzate e ottimizzazione automatica. -2. **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 del motore di database SQL Server on-premises (Enterprise Edition), 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. -3. **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**: 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 schemi 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. + +### Azure 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. + +#### Rete + +**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. + +**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. + +#### Metodi di autenticazione +Azure SQL supporta vari metodi di autenticazione per garantire l'accesso sicuro al database: + +- **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. + +#### Funzionalità di sicurezza + +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. + +Altre funzionalità di sicurezza che ha il server SQL sono: + +- **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. + +#### Modelli di distribuzione + +Azure SQL Database supporta opzioni di distribuzione flessibili per soddisfare varie esigenze: + +- **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 schemi di utilizzo fluttuanti tra più 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. È costruita sulle ultime tecnologie SQL Server ed elimina la necessità di gestione dell'infrastruttura, rendendola 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. È costruito sulle ultime tecnologie SQL Server ed elimina la necessità di gestione dell'infrastruttura, rendendolo una scelta popolare per le applicazioni basate su cloud. -#### Caratteristiche Chiave +#### Caratteristiche principali -- **Sempre Aggiornato**: Funziona sull'ultima versione stabile di SQL Server e riceve automaticamente nuove funzionalità e patch. +- **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). +- **Flessibilità dei dati**: Supporta dati relazionali e non relazionali (ad es., grafi, JSON, spaziali e XML). -#### Modelli di Acquisto / Livelli di Servizio +#### Rete -- **Basato su vCore**: Scegli computazione, memoria e archiviazione in modo indipendente. Per General Purpose, Business Critical (con alta resilienza e prestazioni per app OLTP), e scala fino a 128 TB di archiviazione. +**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. + +**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. + +#### Funzionalità di sicurezza + +- **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 qualsiasi manomissione venga rilevata. +- **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. + +#### 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. -#### Modelli di Distribuzione +#### Prestazioni scalabili e pool -Azure SQL Database supporta opzioni di distribuzione flessibili per soddisfare varie esigenze: +- **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à. -- **Database Singolo**: -- Un database completamente isolato con le proprie risorse dedicate. -- Ottimo per microservizi o applicazioni che richiedono una singola fonte di dati. -- **Elastic Pool**: -- Consente a più database di condividere risorse all'interno di un pool. -- Economico per applicazioni con modelli di utilizzo fluttuanti tra più database. - -#### 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). -- **Elastic Pools**: 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 General Purpose. 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 +#### 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 Telemetrica**: Supporta il monitoraggio tramite Azure Monitor, Event Hubs o Azure Storage per approfondimenti personalizzati. +- **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 Dall'Incidente e Disponibilità +#### Recupero da disastri e disponibilità -- **Backup Automatici**: SQL Database esegue automaticamente backup completi, differenziali e di log delle transazioni dei database. -- **Ripristino a Punto nel Tempo**: Recupera i database a qualsiasi stato passato all'interno del periodo di retention dei backup. +- **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 dall'incidente raggruppando i database per failover automatico tra le regioni. +- **Gruppi di failover**: Semplifica il recupero da disastri raggruppando i database per failover automatico tra le regioni. ### Azure SQL Managed Instance -**Azure SQL Managed Instance** è un motore di database Platform as a Service (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 minime modifiche. +**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 +#### Livelli di servizio -- **General Purpose**: Opzione economica per applicazioni con requisiti standard di I/O e latenza. +- **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. -#### Caratteristiche di Sicurezza Avanzate +#### Funzionalità di sicurezza avanzate -* **Protezione dalle Minacce**: Avvisi di Protezione Avanzata dalle Minacce per attività sospette e attacchi di SQL injection. Audit per monitorare 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 punto nel tempo. +* **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. ### 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. -#### Caratteristiche Chiave +#### Caratteristiche principali -**Backup Automatico**: Pianifica backup per i database SQL. -**Patch Automatiche**: Automatizza l'installazione degli aggiornamenti di Windows e SQL Server durante una finestra di manutenzione. +**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 for SQL nel portale. -**Flessibilità di Versione/Edizione**: Cambia i metadati della versione o edizione di SQL Server senza ridistribuire la VM. +**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. -#### Caratteristiche di Sicurezza +#### Funzionalità di sicurezza -**Microsoft Defender for SQL**: Approfondimenti e avvisi 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. @@ -99,7 +153,7 @@ Azure SQL Database supporta opzioni di distribuzione flessibili per soddisfare v {{#tab name="az cli"}} ```bash # List Servers -az sql server list # --output table +az sql server list # managed identities are enumerated here too ## List Server Usages az sql server list-usages --name --resource-group ## List Server Firewalls diff --git a/src/pentesting-cloud/gcp-security/gcp-services/gcp-compute-instances-enum/gcp-compute-instance.md b/src/pentesting-cloud/gcp-security/gcp-services/gcp-compute-instances-enum/gcp-compute-instance.md index 0d1bd616f..1cb62acba 100644 --- a/src/pentesting-cloud/gcp-security/gcp-services/gcp-compute-instances-enum/gcp-compute-instance.md +++ b/src/pentesting-cloud/gcp-security/gcp-services/gcp-compute-instances-enum/gcp-compute-instance.md @@ -4,11 +4,11 @@ ## Informazioni di Base -Google Cloud Compute Instances sono **macchine virtuali personalizzabili sull'infrastruttura cloud di Google**, che offrono potenza di calcolo scalabile e on-demand per una vasta gamma di applicazioni. Forniscono funzionalità come distribuzione globale, archiviazione persistente, scelte flessibili del sistema operativo e forti integrazioni di rete e sicurezza, rendendole una scelta versatile per ospitare siti web, elaborare dati e eseguire applicazioni in modo efficiente nel cloud. +Le Google Cloud Compute Instances sono **macchine virtuali personalizzabili sull'infrastruttura cloud di Google**, che offrono potenza di calcolo scalabile e on-demand per una vasta gamma di applicazioni. Forniscono funzionalità come distribuzione globale, archiviazione persistente, scelte flessibili del sistema operativo e forti integrazioni di rete e sicurezza, rendendole una scelta versatile per ospitare siti web, elaborare dati e eseguire applicazioni in modo efficiente nel cloud. ### VM Riservate -Le VM riservate utilizzano **funzionalità di sicurezza basate sull'hardware** offerte dall'ultima generazione di processori AMD EPYC, che includono crittografia della memoria e virtualizzazione crittografata sicura. Queste funzionalità consentono alla VM di proteggere i dati elaborati e memorizzati al suo interno anche dal sistema operativo host e dall'ipervisore. +Le VM riservate utilizzano **funzionalità di sicurezza basate sull'hardware** offerte dalla più recente generazione di processori AMD EPYC, che includono crittografia della memoria e virtualizzazione crittografata sicura. Queste funzionalità consentono alla VM di proteggere i dati elaborati e memorizzati al suo interno anche dal sistema operativo host e dall'ipervisore. Per eseguire una VM riservata potrebbe essere necessario **cambiare** cose come il **tipo** della **macchina**, l'**interfaccia** di rete, l'**immagine del disco di avvio**. @@ -34,11 +34,11 @@ Questo account di servizio ha **ruolo di Editor su tutto il progetto (privilegi E i **perimetri di accesso predefiniti** sono i seguenti: - **https://www.googleapis.com/auth/devstorage.read\_only** -- Accesso in lettura ai bucket :) -- https://www.googleapis.com/auth/logging.write -- https://www.googleapis.com/auth/monitoring.write -- https://www.googleapis.com/auth/servicecontrol -- https://www.googleapis.com/auth/service.management.readonly -- https://www.googleapis.com/auth/trace.append +- [https://www.googleapis.com/auth/logging.write](https://www.googleapis.com/auth/logging.write) +- [https://www.googleapis.com/auth/monitoring.write](https://www.googleapis.com/auth/monitoring.write) +- [https://www.googleapis.com/auth/servicecontrol](https://www.googleapis.com/auth/servicecontrol) +- [https://www.googleapis.com/auth/service.management.readonly](https://www.googleapis.com/auth/service.management.readonly) +- [https://www.googleapis.com/auth/trace.append](https://www.googleapis.com/auth/trace.append) Tuttavia, è possibile **concedere `cloud-platform` con un clic** o specificare **personalizzati**.