Translated ['src/pentesting-cloud/aws-security/aws-services/aws-organiza

This commit is contained in:
Translator
2025-02-17 12:02:24 +00:00
parent fa300a9c9c
commit 3f16cc49cd
16 changed files with 412 additions and 318 deletions

View File

@@ -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)

View File

@@ -10,7 +10,7 @@ Pontos Chave:
- **Criação de Novas Contas**: AWS Organizations permite a criação de novas contas AWS sem cobranças extras.
- **Alocação de Recursos**: Simplifica o processo de alocação de recursos entre as contas.
- **Agrupamento de Contas**: Contas podem ser agrupadas, tornando a gestão mais eficiente.
- **Agrupamento de Contas**: Contas podem ser agrupadas, tornando a gestão mais simplificada.
- **Políticas de Governança**: Políticas podem ser aplicadas a contas ou grupos de contas, garantindo conformidade e governança em toda a organização.
Você pode encontrar mais informações em:
@@ -40,6 +40,6 @@ aws iam get-account-summary
```
## Referências
- https://aws.amazon.com/organizations/
- [https://aws.amazon.com/organizations/](https://aws.amazon.com/organizations/)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## SQS
O Amazon Simple Queue Service (SQS) é apresentado como um **serviço de enfileiramento de mensagens totalmente gerenciado**. Sua função principal é ajudar na escalabilidade e desacoplamento de microsserviços, sistemas distribuídos e aplicações sem servidor. O serviço é projetado para eliminar a necessidade de gerenciar e operar middleware orientado a mensagens, que muitas vezes pode ser complexo e intensivo em recursos. Essa eliminação da complexidade permite que os desenvolvedores direcionem seus esforços para aspectos mais inovadores e diferenciadores de seu trabalho.
O Amazon Simple Queue Service (SQS) é apresentado como um **serviço de enfileiramento de mensagens totalmente gerenciado**. Sua função principal é ajudar na escalabilidade e desacoplamento de microsserviços, sistemas distribuídos e aplicações sem servidor. O serviço é projetado para eliminar a necessidade de gerenciar e operar middleware orientado a mensagens, que pode ser frequentemente complexo e intensivo em recursos. Essa eliminação da complexidade permite que os desenvolvedores direcionem seus esforços para aspectos mais inovadores e diferenciadores de seu trabalho.
### Enumeration
```bash
@@ -46,6 +46,6 @@ aws sqs send-message --queue-url <value> --message-body <value>
## Referências
- 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}}

View File

@@ -22,8 +22,8 @@ az storage queue policy set --name <queue-name> --permissions rwd --expiry 2024-
```
## Referências
- 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}}

View File

@@ -1,8 +1,8 @@
# Az - Queue Storage Pós Exploração
# Az - Queue Storage Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Fila
## Queue
Para mais informações, consulte:
@@ -20,13 +20,13 @@ az storage message peek --queue-name <queue_name> --account-name <storage_accoun
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action`
Com esta permissão, um atacante pode recuperar e processar mensagens de uma Azure Storage Queue. Isso significa que eles podem ler o conteúdo da mensagem e marcá-la como processada, efetivamente ocultando-a de sistemas legítimos. Isso pode levar à exposição de dados sensíveis, interrupções na forma como as mensagens são tratadas ou até mesmo a interrupção de fluxos de trabalho importantes ao tornar as mensagens indisponíveis para seus usuários pretendidos.
Com esta permissão, um atacante pode recuperar e processar mensagens de uma Azure Storage Queue. Isso significa que eles podem ler o conteúdo da mensagem e marcá-la como processada, efetivamente ocultando-a de sistemas legítimos. Isso pode levar à exposição de dados sensíveis, interrupções na forma como as mensagens são tratadas ou até mesmo a interrupção de fluxos de trabalho importantes ao tornar mensagens indisponíveis para seus usuários pretendidos.
```bash
az storage message get --queue-name <queue_name> --account-name <storage_account>
```
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action`
Com essa permissão, um atacante pode adicionar novas mensagens a uma Azure Storage Queue. Isso permite que eles injetem dados maliciosos ou não autorizados na fila, potencialmente acionando ações não intencionais ou interrompendo serviços subsequentes que processam as mensagens.
Com esta permissão, um atacante pode adicionar novas mensagens a uma Azure Storage Queue. Isso permite que eles injetem dados maliciosos ou não autorizados na fila, potencialmente acionando ações não intencionais ou interrompendo serviços subsequentes que processam as mensagens.
```bash
az storage message put --queue-name <queue-name> --content "Injected malicious message" --account-name <storage-account>
```
@@ -52,7 +52,7 @@ az storage queue delete --name <queue-name> --account-name <storage-account>
```
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete`
Com esta permissão, um atacante pode limpar todas as mensagens de uma Azure Storage Queue. Esta ação remove todas as mensagens, interrompendo fluxos de trabalho e causando perda de dados para sistemas dependentes da fila.
Com essa permissão, um atacante pode limpar todas as mensagens de uma Azure Storage Queue. Essa ação remove todas as mensagens, interrompendo fluxos de trabalho e causando perda de dados para sistemas dependentes da fila.
```bash
az storage message clear --queue-name <queue-name> --account-name <storage-account>
```
@@ -68,8 +68,8 @@ az storage queue policy set --name <queue-name> --permissions rwd --expiry 2024-
```
## Referências
- 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}}

View File

@@ -12,13 +12,13 @@ Para mais informações, consulte:
### Ações: `Microsoft.ServiceBus/namespaces/Delete`
Um atacante com esta permissão pode excluir todo um namespace do Azure Service Bus. Esta ação remove o namespace e todos os recursos associados, incluindo filas, tópicos, assinaturas e suas mensagens, causando ampla interrupção e perda permanente de dados em todos os sistemas e fluxos de trabalho dependentes.
Um atacante com esta permissão pode excluir todo um namespace do Azure Service Bus. Esta ação remove o namespace e todos os recursos associados, incluindo filas, tópicos, assinaturas e suas mensagens, causando interrupção generalizada e perda permanente de dados em todos os sistemas e fluxos de trabalho dependentes.
```bash
az servicebus namespace delete --resource-group <ResourceGroupName> --name <NamespaceName>
```
### Ações: `Microsoft.ServiceBus/namespaces/topics/Delete`
Um atacante com essa permissão pode excluir um tópico do Azure Service Bus. Essa ação remove o tópico e todas as suas assinaturas e mensagens associadas, potencialmente causando perda de dados críticos e interrompendo sistemas e fluxos de trabalho que dependem do tópico.
Um atacante com esta permissão pode excluir um tópico do Azure Service Bus. Esta ação remove o tópico e todas as suas assinaturas e mensagens associadas, potencialmente causando perda de dados críticos e interrompendo sistemas e fluxos de trabalho que dependem do tópico.
```bash
az servicebus topic delete --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <TopicName>
```
@@ -30,17 +30,10 @@ az servicebus queue delete --resource-group <ResourceGroupName> --namespace-name
```
### Ações: `Microsoft.ServiceBus/namespaces/topics/subscriptions/Delete`
Um atacante com esta permissão pode excluir uma assinatura do Azure Service Bus. Esta ação remove a assinatura e todas as suas mensagens associadas, potencialmente interrompendo fluxos de trabalho, processamento de dados e operações do sistema que dependem da assinatura.
Um atacante com essa permissão pode excluir uma assinatura do Azure Service Bus. Essa ação remove a assinatura e todas as suas mensagens associadas, potencialmente interrompendo fluxos de trabalho, processamento de dados e operações do sistema que dependem da assinatura.
```bash
az servicebus topic subscription delete --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --topic-name <TopicName> --name <SubscriptionName>
```
### Ações: `Microsoft.ServiceBus/namespaces/write` & `Microsoft.ServiceBus/namespaces/read`
Um atacante com permissões para criar ou modificar namespaces do Azure Service Bus pode explorar isso para interromper operações, implantar recursos não autorizados ou expor dados sensíveis. Eles podem alterar configurações críticas, como habilitar o acesso à rede pública, rebaixar configurações de criptografia ou mudar SKUs para degradar o desempenho ou aumentar custos. Além disso, eles poderiam desabilitar a autenticação local, manipular locais de réplica ou ajustar versões do TLS para enfraquecer os controles de segurança, tornando a má configuração de namespaces um risco significativo de pós-exploração.
```bash
az servicebus namespace create --resource-group <ResourceGroupName> --name <NamespaceName> --location <Location>
az servicebus namespace update --resource-group <ResourceGroupName> --name <NamespaceName> --tags <Key=Value>
```
### Ações: `Microsoft.ServiceBus/namespaces/queues/write` (`Microsoft.ServiceBus/namespaces/queues/read`)
Um atacante com permissões para criar ou modificar filas do Azure Service Bus (para modificar a fila, você também precisará da Ação: `Microsoft.ServiceBus/namespaces/queues/read`) pode explorar isso para interceptar dados, interromper fluxos de trabalho ou permitir acesso não autorizado. Eles podem alterar configurações críticas, como encaminhar mensagens para endpoints maliciosos, ajustar o TTL das mensagens para reter ou excluir dados de forma inadequada, ou habilitar o dead-lettering para interferir no tratamento de erros. Além disso, eles poderiam manipular tamanhos de fila, durações de bloqueio ou status para interromper a funcionalidade do serviço ou evitar detecção, tornando isso um risco significativo de pós-exploração.
@@ -50,14 +43,14 @@ az servicebus queue update --resource-group <ResourceGroupName> --namespace-name
```
### Ações: `Microsoft.ServiceBus/namespaces/topics/write` (`Microsoft.ServiceBus/namespaces/topics/read`)
Um atacante com permissões para criar ou modificar tópicos (para modificar o tópico você também precisará da Ação: `Microsoft.ServiceBus/namespaces/topics/read`) dentro de um namespace do Azure Service Bus pode explorar isso para interromper fluxos de mensagens, expor dados sensíveis ou habilitar ações não autorizadas. Usando comandos como az servicebus topic update, eles podem manipular configurações, como habilitar particionamento para uso indevido de escalabilidade, alterar configurações de TTL para reter ou descartar mensagens de forma inadequada, ou desabilitar a detecção de duplicatas para contornar controles. Além disso, eles poderiam ajustar limites de tamanho de tópicos, mudar o status para interromper a disponibilidade ou configurar tópicos expressos para armazenar temporariamente mensagens interceptadas, tornando a gestão de tópicos um foco crítico para mitigação pós-exploração.
Um atacante com permissões para criar ou modificar tópicos (para modificar o tópico você também precisará da Ação: `Microsoft.ServiceBus/namespaces/topics/read`) dentro de um namespace do Azure Service Bus pode explorar isso para interromper fluxos de mensagens, expor dados sensíveis ou habilitar ações não autorizadas. Usando comandos como az servicebus topic update, eles podem manipular configurações, como habilitar particionamento para uso indevido de escalabilidade, alterar configurações de TTL para reter ou descartar mensagens de forma inadequada, ou desabilitar a detecção de duplicatas para contornar controles. Além disso, eles poderiam ajustar limites de tamanho de tópicos, mudar o status para interromper a disponibilidade, ou configurar tópicos expressos para armazenar temporariamente mensagens interceptadas, tornando a gestão de tópicos um foco crítico para mitigação pós-exploração.
```bash
az servicebus topic create --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <TopicName>
az servicebus topic update --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <TopicName>
```
### Ações: `Microsoft.ServiceBus/namespaces/topics/subscriptions/write` (`Microsoft.ServiceBus/namespaces/topics/subscriptions/read`)
Um atacante com permissões para criar ou modificar assinaturas (para modificar a assinatura, você também precisará da Ação: `Microsoft.ServiceBus/namespaces/topics/subscriptions/read`) dentro de um tópico do Azure Service Bus pode explorar isso para interceptar, redirecionar ou interromper fluxos de mensagens. Usando comandos como az servicebus topic subscription update, eles podem manipular configurações como habilitar dead lettering para desviar mensagens, encaminhar mensagens para endpoints não autorizados ou modificar a duração do TTL e do bloqueio para reter ou interferir na entrega de mensagens. Além disso, eles podem alterar configurações de status ou contagem máxima de entrega para interromper operações ou evitar detecção, tornando o controle de assinaturas um aspecto crítico de cenários de pós-exploração.
Um atacante com permissões para criar ou modificar assinaturas (para modificar a assinatura, você também precisará da Ação: `Microsoft.ServiceBus/namespaces/topics/subscriptions/read`) dentro de um tópico do Azure Service Bus pode explorar isso para interceptar, redirecionar ou interromper fluxos de mensagens. Usando comandos como az servicebus topic subscription update, eles podem manipular configurações, como habilitar dead lettering para desviar mensagens, encaminhar mensagens para endpoints não autorizados ou modificar a duração do TTL e do bloqueio para reter ou interferir na entrega de mensagens. Além disso, eles podem alterar as configurações de status ou contagem máxima de entrega para interromper operações ou evitar detecção, tornando o controle de assinaturas um aspecto crítico de cenários de pós-exploração.
```bash
az servicebus topic subscription create --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --topic-name <TopicName> --name <SubscriptionName>
az servicebus topic subscription update --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --topic-name <TopicName> --name <SubscriptionName>
@@ -72,12 +65,12 @@ Dê uma olhada aqui:
## Referências
- 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}}

View File

@@ -1,10 +1,10 @@
# Az - SQL Database Post Exploitation
# Az - SQL Database Pós-Exploração
{{#include ../../../banners/hacktricks-training.md}}
## SQL Database Post Exploitation
## Pós-Exploração de Banco de Dados SQL
Para mais informações sobre SQL Database, consulte:
Para mais informações sobre Banco de Dados SQL, consulte:
{{#ref}}
../az-services/az-sql.md
@@ -19,6 +19,16 @@ az sql db create --resource-group <resource-group> --server <server-name> --name
# Update Database
az sql db update --resource-group <resource-group> --server <server-name> --name <database-name> --max-size <max-size-in-bytes>
```
Com essas permissões (`Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`), você pode restaurar um banco de dados excluído:
```bash
az sql db restore \
--dest-name <new_database_name> \
--name <original_database_name> \
--resource-group <resource_group> \
--server <server_name> \
--deleted-time "<deleted_time_ISO_format>"
```
### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read`
@@ -87,4 +97,41 @@ az sql db import --admin-user <admin-user> \
--storage-key <storage-account-key> \
--storage-uri `https://<storage-account-name>.blob.core.windows.net/bacpac-container/MyDatabase.bacpac`
```
### `Microsoft.Sql/servers/connectionPolicies/write` && `Microsoft.Sql/servers/connectionPolicies/read`
Com essas permissões, um usuário pode modificar e recuperar as políticas de conexão de um servidor Azure SQL. Essas permissões permitem que alguém altere a forma como os clientes se conectam ao servidor—escolhendo entre métodos como redirecionamento ou proxy—o que pode ser explorado para enfraquecer a segurança, redirecionar o tráfego ou interceptar dados sensíveis se configurado incorretamente.
```bash
az sql server conn-policy update \
--resource-group <resource_group> \
--server <server_name> \
--connection-policy <policy>
```
### `Microsoft.Sql/servers/keys/write` && `Microsoft.Sql/servers/keys/read`
Com essas permissões, um usuário pode atualizar e recuperar chaves de criptografia associadas a um Azure SQL Server. Essas chaves são frequentemente usadas para proteger dados sensíveis por meio de criptografia, portanto, manipulá-las pode comprometer a segurança dos dados, permitindo a descriptografia não autorizada ou alterações na rotação de chaves.
```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`
Esta permissão permite desabilitar o Ledger Digest para um Banco de Dados Azure SQL, o que interrompe o upload periódico de registros de digestão criptográfica para o Azure Blob Storage que verifica a integridade dos dados.
```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`
Esta permissão permite que um usuário autorizado ou atacante ative, desative ou modifique as configurações de Criptografia de Dados Transparente (TDE) em um banco de dados Azure SQL, potencialmente impactando a segurança dos dados ao alterar as configurações de criptografia.
```bash
az sql db tde set \
--database <database-name> \
--resource-group <resource-group-name> \
--server <server-name> \
--status <Enabled|Disabled>
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,64 +0,0 @@
# Az - Azure Container Instances Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Azure Container Instances
Para mais informações, consulte:
{{#ref}}
../az-services/az-container-instances.md
{{#endref}}
### `Microsoft.ContainerInstance/containerGroups/read`, `Microsoft.ContainerInstance/containerGroups/containers/exec/action`
Essas permissões permitem que o usuário **execute um comando** em um contêiner em execução. Isso pode ser usado para **escalar privilégios** no contêiner se ele tiver alguma identidade gerenciada anexada. Claro, também é possível acessar o código-fonte e qualquer outra informação sensível armazenada dentro do contêiner.
Para executar um `ls` e obter a saída é tão simples quanto:
```bash
az container exec --name <container-name> --resource-group <res-group> --exec-command 'ls'
```
Também é possível **ler a saída** do contêiner com:
```bash
az container attach --name <container-name> --resource-group <res-group>
```
Ou obtenha os logs com:
```bash
az container logs --name <container-name> --resource-group <res-group>
```
### `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Essas permissões permitem **anexar uma identidade gerenciada pelo usuário** a um grupo de contêineres. Isso é muito útil para escalar privilégios no contêiner.
Para anexar uma identidade gerenciada pelo usuário a um grupo de contêineres:
```bash
az rest \
--method PATCH \
--url "/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ContainerInstance/containerGroups/<container-name>?api-version=2021-09-01" \
--body '{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-namaged-identity-name>": {}
}
}
}' \
--headers "Content-Type=application/json"
```
### `Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Essas permissões permitem **criar ou atualizar um grupo de contêiner** com uma **identidade gerenciada pelo usuário** anexada a ele. Isso é muito útil para escalar privilégios no contêiner.
```bash
az container create \
--resource-group <res-group>> \
--name nginx2 \
--image mcr.microsoft.com/oss/nginx/nginx:1.9.15-alpine \
--assign-identity "/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-namaged-identity-name>" \
--restart-policy OnFailure \
--os-type Linux \
--cpu 1 \
--memory 1.0
```
Além disso, também é possível atualizar um grupo de contêineres existente adicionando, por exemplo, o argumento **`--command-line`** com um shell reverso.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -20,7 +20,7 @@ az storage message peek --queue-name <queue_name> --account-name <storage_accoun
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action`
Com esta permissão, um atacante pode recuperar e processar mensagens de uma Azure Storage Queue. Isso significa que eles podem ler o conteúdo da mensagem e marcá-la como processada, efetivamente ocultando-a de sistemas legítimos. Isso pode levar à exposição de dados sensíveis, interrupções na forma como as mensagens são tratadas ou até mesmo a interrupção de fluxos de trabalho importantes ao tornar mensagens indisponíveis para seus usuários pretendidos.
Com esta permissão, um atacante pode recuperar e processar mensagens de uma Azure Storage Queue. Isso significa que eles podem ler o conteúdo da mensagem e marcá-la como processada, efetivamente ocultando-a de sistemas legítimos. Isso pode levar à exposição de dados sensíveis, interrupções na forma como as mensagens são tratadas ou até mesmo interromper fluxos de trabalho importantes ao tornar mensagens indisponíveis para seus usuários pretendidos.
```bash
az storage message get --queue-name <queue_name> --account-name <storage_account>
```
@@ -56,8 +56,8 @@ az storage queue policy set --name <queue-name> --permissions rwd --expiry 2024-
```
## Referências
- 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}}

View File

@@ -68,7 +68,7 @@ az servicebus queue authorization-rule create --resource-group <res-group> --nam
>[!WARNING]
>Este comando não responde com as chaves, então você precisa obtê-las com os comandos (e permissões) anteriores para escalar privilégios.
Além disso, com esse comando (e `Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`) se você realizar esta ação através do Azure CLI, é possível atualizar uma regra de autorização existente e conceder mais permissões (caso estivesse faltando algumas) com o seguinte comando:
Além disso, com esse comando (e `Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`) se você realizar esta ação através do Azure CLI, é possível atualizar uma regra de autorização existente e conceder mais permissões (caso estivesse faltando alguma) com o seguinte comando:
```bash
# In a topic
az servicebus topic authorization-rule update --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name> --rights Manage Listen Send
@@ -84,127 +84,202 @@ az servicebus namespace update --disable-local-auth false -n <namespace-name> --
```
### Enviar Mensagens com chaves (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OU Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action)
Você pode recuperar o `PrimaryConnectionString`, que atua como uma credencial para o namespace do Service Bus. Com essa string de conexão, você pode se autenticar completamente como o namespace do Service Bus, permitindo que você envie mensagens para qualquer fila ou tópico e potencialmente interaja com o sistema de maneiras que podem interromper operações, se passar por usuários válidos ou injetar dados maliciosos no fluxo de mensagens.
Você pode recuperar o `PrimaryConnectionString`, que atua como uma credencial para o namespace do Service Bus. Com essa string de conexão, você pode se autenticar completamente como o namespace do Service Bus, permitindo que você envie mensagens para qualquer fila ou tópico e potencialmente interaja com o sistema de maneiras que podem interromper operações, se passar por usuários válidos ou injetar dados maliciosos no fluxo de mensagens. Este método funciona se `--disable-local-auth` estiver definido como 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 = "<PrimaryConnectionString>"
TOPIC_NAME = "<TOPIC_NAME>"
TOPIC_OR_QUEUE_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())
```
Além disso, você pode enviar mensagens com az rest; neste caso, você precisa gerar um token sas para usar.
```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://<namespace>.servicebus.windows.net/<queue_or_topic>"
key_name = "<SharedKeyName>"
primary_key = "<PrimaryKey>"
# 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://<NAMESPACE>.servicebus.windows.net/<queue>/messages" \
--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=https%3A%2F%2F<NAMESPACE>.servicebus.windows.net%2F<TOPIC_OR_QUEUE_NAME>&sig=<SIGNATURE>&se=<EXPIRY>&skn=<KEYNAME>" \
--body "<MESSAGE_BODY>"
```
### Receber com chaves (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OU Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action)
Você pode recuperar o PrimaryConnectionString, que serve como uma credencial para o namespace do Service Bus. Usando essa string de conexão, você pode receber mensagens de qualquer fila ou assinatura dentro do namespace, permitindo acesso a dados potencialmente sensíveis ou críticos, possibilitando a exfiltração de dados ou interferindo no processamento de mensagens e fluxos de trabalho da aplicação.
Você pode recuperar o PrimaryConnectionString, que serve como uma credencial para o namespace do Service Bus. Usando essa string de conexão, você pode receber mensagens de qualquer fila ou assinatura dentro do namespace, permitindo acesso a dados potencialmente sensíveis ou críticos, possibilitando a exfiltração de dados ou interferindo no processamento de mensagens e fluxos de trabalho de aplicativos. Este método funciona se `--disable-local-auth` estiver definido como 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 = "<PrimaryConnectionString>"
TOPIC_NAME = "<TOPIC_NAME>"
SUBSCRIPTION_NAME = "<TOPIC_SUBSCRIPTION_NAME>" #Topic Subscription
CONN_STR = "<PrimaryConnectionString>"
QUEUE = "<QUEUE_NAME>"
# 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 = "<TOPIC_NAME>"
# SUBSCRIPTION = "<TOPIC_SUBSCRIPTION_NAME>"
# 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")
```
Além disso, você pode enviar mensagens com az rest; neste caso, você precisa gerar um token SAS para usar.
```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://<namespace>.servicebus.windows.net/queue" # For queue
# resource_uri = "https://<namespace>.servicebus.windows.net/<topic>/subscriptions/<subscription>" # For topic subscription
sas_token = generate_sas_token(resource_uri, "<KEYNAME>", "<PRIMARY_KEY>")
print(sas_token)
```
Para uma fila, você pode obter ou visualizar a mensagem (obter uma mensagem a removeria, enquanto visualizar não):
```bash
#Get a message
az rest --method post \
--uri "https://<NAMESPACE>.servicebus.windows.net/<QUEUE>/messages/head?timeout=60" \
--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=<URI_ENCODED_RESOURCE>&sig=<SIGNATURE>&se=<EXPIRY>&skn=<KEYNAME>"
#Peek a message
az rest --method get \
--uri "https://<NAMESPACE>.servicebus.windows.net/<QUEUE>/messages/head?peekonly=true&timeout=60" \
--headers "Authorization=SharedAccessSignature sr=<URI_ENCODED_RESOURCE>&sig=<SIGNATURE>&se=<EXPIRY>&skn=<KEYNAME>"
#You can select the meesage changing the field PreviousSequenceNumber
az rest --method get \
--uri "https://<NAMESPACE>.servicebus.windows.net/<ENTITY>/messages?timeout=60&PreviousSequenceNumber=<LAST_SEQUENCE_NUMBER>&api-version=2017-04" \
--headers "Authorization=SharedAccessSignature sr=<URI_ENCODED_RESOURCE>&sig=<SIGNATURE>&se=<EXPIRY>&skn=<KEYNAME>"
```
Por um tópico:
```bash
#Get a message
az rest --method post \
--uri "https://<NAMESPACE>.servicebus.windows.net/<TOPIC>/subscriptions/<SUBSCRIPTION>/messages/head?timeout=60" \
--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=<URI_ENCODED_RESOURCE>&sig=<SIGNATURE>&se=<EXPIRY>&skn=<KEYNAME>"
#Peek a message
az rest --method get \
--uri "https://<NAMESPACE>.servicebus.windows.net/<TOPIC>/subscriptions/<SUBSCRIPTION>/messages/head?timeout=60&api-version=2017-04" \
--headers "Authorization=SharedAccessSignature sr=<URI_ENCODED_RESOURCE>&sig=<SIGNATURE>&se=<EXPIRY>&skn=<KEYNAME>"
#You can select the meesage changing the field PreviousSequenceNumber
az rest --method get \
--uri "https://<NAMESPACE>.servicebus.windows.net/<TOPIC>/subscriptions/<SUBSCRIPTION>/messages?timeout=60&PreviousSequenceNumber=<LAST_SEQUENCE_NUMBER>&api-version=2017-04" \
--headers "Authorization=SharedAccessSignature sr=<URI_ENCODED_RESOURCE>&sig=<SIGNATURE>&se=<EXPIRY>&skn=<KEYNAME>"
```
### Enviar Mensagens. DataActions: `Microsoft.ServiceBus/namespaces/messages/send/action`
Você pode usar essas permissões para enviar mensagens, mesmo que `--disable-local-auth` esteja definido como verdadeiro.
```python
import asyncio
from azure.identity.aio import DefaultAzureCredential
from azure.servicebus.aio import ServiceBusClient
from azure.servicebus import ServiceBusMessage
NS = "<namespace>.servicebus.windows.net" # Your namespace
QUEUE_OR_TOPIC = "<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())
```
### Receber Mensagens. DataActions: `Microsoft.ServiceBus/namespaces/messages/receive/action`
Você pode usar essas permissões para receber mensagens, mesmo que `--disable-local-auth` esteja definido como verdadeiro.
```python
import asyncio
from azure.identity.aio import DefaultAzureCredential
from azure.servicebus.aio import ServiceBusClient
NS = "<namespace>.servicebus.windows.net"
QUEUE = "<QUEUE>"
# For a topic subscription, uncomment and set these values:
# TOPIC = "<TOPIC>"
# SUBSCRIPTION = "<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")
```
## Referências
- https://learn.microsoft.com/pt-br/azure/storage/queues/storage-powershell-how-to-use-queues
- https://learn.microsoft.com/pt-br/rest/api/storageservices/queue-service-rest-api
- https://learn.microsoft.com/pt-br/azure/storage/queues/queues-auth-abac-attributes
- https://learn.microsoft.com/pt-br/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless
- https://learn.microsoft.com/pt-br/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}}

View File

@@ -12,7 +12,7 @@ Para mais informações sobre SQL Database, consulte:
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
Com essas permissões, um usuário pode realizar escalonamento de privilégios ao atualizar ou criar servidores Azure SQL e modificar configurações críticas, incluindo credenciais administrativas. Essa permissão permite que o usuário atualize propriedades do servidor, incluindo a senha do administrador do SQL Server, possibilitando acesso ou controle não autorizado sobre o servidor. Eles também podem criar novos servidores, potencialmente introduzindo infraestrutura sombra para fins maliciosos. Isso se torna particularmente crítico em ambientes onde "Microsoft Entra Authentication Only" está desativado, pois podem explorar a autenticação baseada em SQL para obter acesso irrestrito.
Com essas permissões, um usuário pode realizar escalonamento de privilégios ao atualizar ou criar servidores Azure SQL e modificar configurações críticas, incluindo credenciais administrativas. Essa permissão permite que o usuário atualize propriedades do servidor, incluindo a senha do administrador do SQL Server, possibilitando acesso não autorizado ou controle sobre o servidor. Eles também podem criar novos servidores, potencialmente introduzindo infraestrutura sombra para fins maliciosos. Isso se torna particularmente crítico em ambientes onde "Microsoft Entra Authentication Only" está desativado, pois podem explorar a autenticação baseada em SQL para obter acesso irrestrito.
```bash
# Change the server password
az sql server update \
@@ -26,7 +26,7 @@ az sql server create \
--resource-group <resource_group_name> \
--location <location> \
--admin-user <admin_username> \
--admin-password <admin_password>
--admin-password <admin_passwor d>
```
Além disso, é necessário ter o acesso público habilitado se você quiser acessar a partir de um endpoint não privado. Para habilitá-lo:
```bash
@@ -35,6 +35,31 @@ az sql server update \
--resource-group <resource-group> \
--enable-public-network true
```
Além disso, com as permissões você pode habilitar a identidade atribuída, operando com a identidade gerenciada anexada ao servidor. Por exemplo, aqui com uma identidade gerenciada que pode acessar o Azure Storage:
```bash
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--assign_identity
```
```sql
CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://<storage-account>.blob.core.windows.net/<container>',
CREDENTIAL = ManagedIdentityCredential
);
GO
SELECT *
FROM OPENROWSET(
BULK 'message.txt',
DATA_SOURCE = 'ManagedIdentity',
SINGLE_CLOB
) AS DataFile;
GO
```
### `Microsoft.Sql/servers/firewallRules/write`
Um atacante pode manipular regras de firewall em servidores Azure SQL para permitir acesso não autorizado. Isso pode ser explorado para abrir o servidor para endereços IP específicos ou intervalos inteiros de IP, incluindo IPs públicos, permitindo acesso para atores maliciosos. Esta atividade de pós-exploração pode ser usada para contornar controles de segurança de rede existentes, estabelecer persistência ou facilitar movimento lateral dentro do ambiente ao expor recursos sensíveis.
@@ -74,7 +99,7 @@ NOTA: É necessário ter o acesso público habilitado.
### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
Com essas permissões, você pode privesc em um ambiente Azure SQL Server acessando bancos de dados SQL e recuperando informações críticas. Usando o comando abaixo, um atacante ou usuário autorizado pode se definir ou definir outra conta como administrador do Azure AD. Se "Microsoft Entra Authentication Only" estiver habilitado, você poderá acessar o servidor e suas instâncias. Aqui está o comando para definir o administrador do Azure AD para um servidor SQL:
Com essas permissões, você pode realizar privilege escalation em um ambiente Azure SQL Server acessando bancos de dados SQL e recuperando informações críticas. Usando o comando abaixo, um atacante ou usuário autorizado pode se definir ou definir outra conta como administrador do Azure AD. Se "Microsoft Entra Authentication Only" estiver habilitado, você poderá acessar o servidor e suas instâncias. Aqui está o comando para definir o administrador do Azure AD para um servidor SQL:
```bash
az sql server ad-admin create \
--server <server_name> \

View File

@@ -1,45 +0,0 @@
# Az - Container Instances
{{#include ../../../banners/hacktricks-training.md}}
## Informações Básicas
Azure Container Instances (ACI) fornecem uma **forma sem servidor e sob demanda** de executar **containers** na nuvem Azure. Você pode **implantar** um ou vários containers em um grupo com **computação escalável**, **opções de rede** e a flexibilidade de se conectar a **outros serviços Azure** (como Storage, Virtual Networks ou Container Registries).
Como são cargas de trabalho **efêmeras**, você não precisa gerenciar a infraestrutura subjacente da VM — a Azure cuida disso para você. No entanto, de uma **perspectiva de segurança ofensiva**, é crucial entender como **permissões**, **identidades**, **configurações de rede** e **logs** podem revelar superfícies de ataque e possíveis configurações incorretas.
### Configurações
- Para criar um container, é possível usar uma imagem pública, uma imagem de container de um Azure Container Registry ou um repositório externo, que pode **exigir a configuração de uma senha** para acessá-lo.
- Em relação à rede, ele também pode ter um **IP público** ou ser **endpoints privados**.
- Também é possível configurar configurações comuns do docker, como:
- **Variáveis de ambiente**
- **Volumes** (mesmo de Azure Files)
- **Portas**
- **Limites de CPU e memória**
- **Política de reinício**
- **Executar como privilegiado**
- **Linha de comando para executar**
- ...
## Enumeração
> [!WARNING]
> Ao enumerar ACI, você pode revelar configurações sensíveis, como **variáveis de ambiente**, **detalhes de rede** ou **identidades gerenciadas**. Tenha cuidado ao registrá-las ou exibi-las.
```bash
# List all container instances in the subscription
az container list
# Show detailed information about a specific container instance
az container show --name <container-name> --resource-group <res-group>
# Fetch logs from a container
az container logs --name <container-name> --resource-group <res-group>
# Execute a command in a running container and get the output
az container exec --name <container-name> --resource-group <res-group> --exec-command "ls"
# Get yaml configuration of the container group
az container export --name <container-name> --resource-group <res-group>
```

View File

@@ -4,7 +4,7 @@
## Informações Básicas
Azure Queue Storage é um serviço na plataforma de nuvem Azure da Microsoft projetado para enfileiramento de mensagens entre componentes de aplicação, **permitindo comunicação assíncrona e desacoplamento**. Ele permite armazenar um número ilimitado de mensagens, cada uma com até 64 KB de tamanho, e suporta operações como criar e excluir filas, adicionar, recuperar, atualizar e excluir mensagens, além de gerenciar metadados e políticas de acesso. Embora normalmente processe mensagens de maneira FIFO (first-in-first-out), a FIFO estrita não é garantida.
Azure Queue Storage é um serviço na plataforma de nuvem Azure da Microsoft projetado para enfileiramento de mensagens entre componentes de aplicação, **permitindo comunicação assíncrona e desacoplamento**. Ele permite que você armazene um número ilimitado de mensagens, cada uma com até 64 KB de tamanho, e suporta operações como criar e excluir filas, adicionar, recuperar, atualizar e excluir mensagens, além de gerenciar metadados e políticas de acesso. Embora normalmente processe mensagens em uma ordem de primeiro a entrar, primeiro a sair (FIFO), a FIFO estrita não é garantida.
### Enumeração
@@ -84,8 +84,8 @@ $queueMessage.Value
## Referências
- 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}}

View File

@@ -8,46 +8,55 @@ Azure Service Bus é um **serviço de mensagens** baseado em nuvem projetado par
### Conceitos Chave
1. **Filas:** seu propósito é armazenar mensagens até que o receptor esteja pronto.
- As mensagens são ordenadas, com timestamp e armazenadas de forma durável.
1. **Namespaces:** Um namespace em sistemas de mensagens é um contêiner lógico que organiza e gerencia componentes de mensagens, filas e tópicos. Ele fornece um ambiente isolado onde as aplicações podem enviar, receber e processar mensagens. Filas e tópicos compartilham a mesma infraestrutura e configuração dentro de um namespace do Service Bus, mas operam de forma independente sem interagir entre si.
2. **Filas:** seu propósito é armazenar mensagens até que o receptor esteja pronto.
- As mensagens são ordenadas, carimbadas com data e armazenadas de forma durável.
- Entregues em modo pull (recuperação sob demanda).
- Suporta comunicação ponto a ponto.
2. **Tópicos:** Mensagens de publicação-assinatura para transmissão.
3. **Tópicos:** Mensagens de publicação-assinatura para transmissão.
- Múltiplas assinaturas independentes recebem cópias das mensagens.
- As assinaturas podem ter regras/filtros para controlar a entrega ou adicionar metadados.
- Suporta comunicação muitos-para-muitos.
3. **Namespaces:** Um contêiner para todos os componentes de mensagens, filas e tópicos, é como sua própria fatia de um poderoso cluster Azure, fornecendo capacidade dedicada e, opcionalmente, abrangendo três zonas de disponibilidade.
A string de conexão/ponto de extremidade do service bus é:
```bash
https://<namespace>.servicebus.windows.net:443/
```
### Recursos Avançados
Alguns recursos avançados são:
- **Sessões de Mensagens**: Garante processamento FIFO e suporta padrões de solicitação-resposta.
- **Auto-Encaminhamento**: Transfere mensagens entre filas ou tópicos no mesmo namespace.
- **Message Sessions**: Garante o processamento FIFO e suporta padrões de solicitação-resposta.
- **Auto-Forwarding**: Transfere mensagens entre filas ou tópicos no mesmo namespace.
- **Dead-Lettering**: Captura mensagens não entregáveis para revisão.
- **Entrega Programada**: Retarda o processamento de mensagens para tarefas futuras.
- **Atraso de Mensagens**: Adia a recuperação de mensagens até que esteja pronto.
- **Transações**: Agrupa operações em execução atômica.
- **Filtros & Ações**: Aplica regras para filtrar ou anotar mensagens.
- **Auto-Exclusão em Inatividade**: Exclui filas após inatividade (mínimo: 5 minutos).
- **Detecção de Duplicatas**: Remove mensagens duplicadas durante reenvios.
- **Exclusão em Lote**: Exclui em massa mensagens expiradas ou desnecessárias.
- **Scheduled Delivery**: Retarda o processamento de mensagens para tarefas futuras.
- **Message Deferral**: Adia a recuperação de mensagens até que esteja pronto.
- **Transactions**: Agrupa operações em execução atômica.
- **Filters & Actions**: Aplica regras para filtrar ou anotar mensagens.
- **Auto-Delete on Idle**: Exclui filas após inatividade (mínimo: 5 minutos).
- **Duplicate Detection**: Remove mensagens duplicadas durante reenvios.
- **Batch Deletion**: Exclui em massa mensagens expiradas ou desnecessárias.
### Regra de Autorização / Política SAS
As Políticas SAS definem as permissões de acesso para entidades do Azure Service Bus namespace (A Mais Importante), filas e tópicos. Cada política tem os seguintes componentes:
As Políticas SAS definem as permissões de acesso para entidades do Azure Service Bus namespace (O Mais Importante), filas e tópicos. Cada política tem os seguintes componentes:
- **Permissões**: Caixas de seleção para especificar níveis de acesso:
- Gerenciar: Concede controle total sobre a entidade, incluindo configuração e gerenciamento de permissões.
- Enviar: Permite enviar mensagens para a entidade.
- Ouvir: Permite receber mensagens da entidade.
- **Chaves Primária e Secundária**: Estas são chaves criptográficas usadas para gerar tokens seguros para autenticar o acesso.
- **Strings de Conexão Primária e Secundária**: Strings de conexão pré-configuradas que incluem o endpoint e a chave para fácil uso em aplicações.
- **ID da Política SAS ARM**: O caminho do Azure Resource Manager (ARM) para a política para identificação programática.
- **Permissions**: Caixas de seleção para especificar níveis de acesso:
- Manage: Concede controle total sobre a entidade, incluindo configuração e gerenciamento de permissões.
- Send: Permite o envio de mensagens para a entidade.
- Listen: Permite o recebimento de mensagens da entidade.
- **Primary and Secondary Keys**: Estas são chaves criptográficas usadas para gerar tokens seguros para autenticar o acesso.
- **Primary and Secondary Connection Strings**: Strings de conexão pré-configuradas que incluem o endpoint e a chave para fácil uso em aplicações.
- **SAS Policy ARM ID**: O caminho do Azure Resource Manager (ARM) para a política para identificação programática.
### Namespace
É importante notar que um namespace tem uma única política SAS que afeta cada entidade dentro dele, enquanto filas e tópicos podem ter suas próprias políticas SAS individuais para um controle mais granular.
sku, regra de autorização,
### "--disable-local-auth"
O parâmetro --disable-local-auth é usado para controlar se a autenticação local (ou seja, usando chaves de Shared Access Signature (SAS)) está habilitada para seu namespace do Service Bus. Aqui está o que você precisa saber:
- Quando definido como true: A autenticação local usando chaves SAS é desativada e a autenticação do Azure Active Directory (Azure AD) é permitida.
- Quando definido como false: Tanto a autenticação SAS (local) quanto a autenticação do Azure AD estão disponíveis e você pode usar strings de conexão com chaves SAS para acessar seus recursos do Service Bus.
### Enumeração

View File

@@ -4,30 +4,47 @@
## Azure SQL
Azure SQL é uma família de produtos gerenciados, seguros e inteligentes que utilizam o **motor de banco de dados SQL Server na nuvem Azure**. Isso significa que você não precisa se preocupar com a administração física de seus servidores, e pode se concentrar em gerenciar seus dados.
Azure SQL é uma família de produtos gerenciados, seguros e inteligentes que utilizam o **motor de banco de dados SQL Server na nuvem Azure**. Isso significa que você não precisa se preocupar com a administração física de seus servidores e pode se concentrar em gerenciar seus dados.
Azure SQL consiste em três ofertas principais:
Azure SQL consiste em quatro ofertas principais:
1. **Azure SQL Database**: Este é um **serviço de banco de dados totalmente gerenciado**, que permite hospedar bancos de dados individuais na nuvem Azure. Oferece inteligência embutida que aprende seus padrões únicos de banco de dados e fornece recomendações personalizadas e ajuste automático.
2. **Azure SQL Managed Instance**: Este é para implantações em maior escala, com toda a instância do SQL Server. Oferece quase 100% de compatibilidade com o mais recente SQL Server local (Edição Enterprise), que fornece uma implementação nativa de rede virtual (VNet) que aborda preocupações comuns de segurança, e um modelo de negócios favorável para clientes do SQL Server local.
3. **Azure SQL Server em VMs Azure**: Este é Infraestrutura como Serviço (IaaS) e é melhor para migrações onde você deseja **controle sobre o sistema operacional e a instância do SQL Server**, como se fosse um servidor rodando localmente.
1. **Azure SQL Server**: Azure SQL Server é um serviço de banco de dados relacional gerenciado que simplifica a implantação e o gerenciamento de bancos de dados SQL Server, com recursos de segurança e desempenho integrados.
2. **Azure SQL Database**: Este é um **serviço de banco de dados totalmente gerenciado**, que permite hospedar bancos de dados individuais na nuvem Azure. Oferece inteligência integrada que aprende seus padrões únicos de banco de dados e fornece recomendações personalizadas e ajuste automático.
3. **Azure SQL Managed Instance**: Este é para implantações em maior escala, com toda a instância do SQL Server. Ele fornece quase 100% de compatibilidade com o mais recente motor de banco de dados SQL Server local (Edição Enterprise), que oferece uma implementação nativa de rede virtual (VNet) que aborda preocupações comuns de segurança, e um modelo de negócios favorável para clientes do SQL Server local.
4. **Azure SQL Server em VMs Azure**: Este é Infraestrutura como Serviço (IaaS) e é melhor para migrações onde você deseja **controle sobre o sistema operacional e a instância do SQL Server**, como se fosse um servidor rodando localmente.
### Azure SQL Database
### Azure SQL Server
**Azure SQL Database** é uma **plataforma de banco de dados totalmente gerenciada como serviço (PaaS)** que fornece soluções de banco de dados relacionais escaláveis e seguras. É construída nas mais recentes tecnologias do SQL Server e elimina a necessidade de gerenciamento de infraestrutura, tornando-se uma escolha popular para aplicações baseadas em nuvem.
Azure SQL Server é um sistema de gerenciamento de banco de dados relacional (RDBMS) que utiliza Transact-SQL para operações de dados e é construído para lidar com sistemas de nível empresarial. Oferece recursos robustos para desempenho, segurança, escalabilidade e integração com várias aplicações da Microsoft. Os bancos de dados Azure SQL dependem deste servidor, pois são construídos sobre esses servidores e é o ponto de entrada para o usuário acessar os bancos de dados.
#### Principais Recursos
#### Rede
- **Sempre Atualizado**: Funciona na versão estável mais recente do SQL Server e recebe novos recursos e patches automaticamente.
- **Capacidades PaaS**: Alta disponibilidade embutida, backups e atualizações.
- **Flexibilidade de Dados**: Suporta dados relacionais e não relacionais (por exemplo, gráficos, JSON, espacial e XML).
**Conectividade de Rede**: Escolha se deseja habilitar o acesso via ponto de extremidade público ou ponto de extremidade privado. Se você selecionar Sem acesso, nenhum ponto de extremidade é criado até que seja configurado manualmente:
- Sem acesso: Nenhum ponto de extremidade é configurado, bloqueando conexões de entrada até que seja configurado manualmente.
- Ponto de extremidade público: Permite conexões diretas pela internet pública, sujeitas a regras de firewall e outras configurações de segurança.
- Ponto de extremidade privado: Restringe a conectividade a uma rede privada.
#### Modelos de Compra / Níveis de Serviço
**Política de Conexão**: Defina como os clientes se comunicam com o servidor de banco de dados SQL:
- Padrão: Usa uma política de Redirecionamento para todas as conexões de clientes de dentro do Azure (exceto aquelas usando Pontos de Extremidade Privados) e uma política de Proxy para conexões de fora do Azure.
- Proxy: Roteia todas as conexões de clientes através do gateway do Azure SQL Database.
- Redirecionar: Os clientes se conectam diretamente ao nó que hospeda o banco de dados.
- **Baseado em vCore**: Escolha computação, memória e armazenamento de forma independente. Para Uso Geral, Crítico para Negócios (com alta resiliência e desempenho para aplicativos OLTP), e escala até 128 TB de armazenamento.
- **Baseado em DTU**: Agrupa computação, memória e I/O em níveis fixos. Recursos equilibrados para tarefas comuns.
- Padrão: Recursos equilibrados para tarefas comuns.
- Premium: Alto desempenho para cargas de trabalho exigentes.
#### Métodos de Autenticação
Azure SQL suporta vários métodos de autenticação para proteger o acesso ao banco de dados:
- **Autenticação apenas do Microsoft Entra**: Usa o Microsoft Entra (anteriormente Azure AD) para gerenciamento centralizado de identidade e autenticação única.
- **Autenticação SQL e Microsoft Entra**: Permite usar a autenticação SQL tradicional juntamente com o Microsoft Entra.
- **Autenticação SQL**: Baseia-se exclusivamente em nomes de usuário e senhas do SQL Server.
#### Recursos de Segurança
Os servidores SQL têm **Identidades Gerenciadas**. As identidades gerenciadas permitem que seu servidor autentique de forma segura com outros serviços Azure sem armazenar credenciais. Permite acessar outros serviços que seriam identidade gerenciada atribuída ao sistema e ser acessada por outros serviços com outras identidades, que é identidade gerenciada atribuída ao usuário. Alguns dos serviços que o SQL pode acessar são Azure Storage Account(V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB ou Cosmos DB API para MongoDB, ODBC genérico, Operações em massa e armazenamento de objetos compatível com S3.
Outros recursos de segurança que o servidor SQL possui são:
- **Regras de Firewall**: As regras de firewall controlam o acesso ao seu servidor restringindo ou permitindo tráfego. Este é um recurso dos próprios bancos de dados também.
- **Criptografia de Dados Transparente (TDE)**: TDE criptografa seus bancos de dados, backups e logs em repouso para proteger seus dados mesmo que o armazenamento seja comprometido. Pode ser feito com uma chave gerenciada pelo serviço ou uma chave gerenciada pelo cliente.
- **Microsoft Defender para SQL**: O Microsoft Defender para SQL pode ser habilitado oferecendo avaliações de vulnerabilidade e proteção avançada contra ameaças para um servidor.
#### Modelos de Implantação
@@ -40,29 +57,66 @@ O Azure SQL Database suporta opções de implantação flexíveis para atender a
- Permite que vários bancos de dados compartilhem recursos dentro de um pool.
- Custo-efetivo para aplicações com padrões de uso flutuantes em vários bancos de dados.
### Azure SQL Database
**Azure SQL Database** é uma **plataforma de banco de dados totalmente gerenciada como serviço (PaaS)** que fornece soluções de banco de dados relacionais escaláveis e seguras. É construído nas mais recentes tecnologias do SQL Server e elimina a necessidade de gerenciamento de infraestrutura, tornando-se uma escolha popular para aplicações baseadas em nuvem.
#### Recursos Principais
- **Sempre Atualizado**: Funciona na versão estável mais recente do SQL Server e recebe novos recursos e patches automaticamente.
- **Capacidades PaaS**: Alta disponibilidade, backups e atualizações integrados.
- **Flexibilidade de Dados**: Suporta dados relacionais e não relacionais (por exemplo, gráficos, JSON, espacial e XML).
#### Rede
**Conectividade de Rede**: Escolha se deseja habilitar o acesso via ponto de extremidade público ou ponto de extremidade privado. Se você selecionar Sem acesso, nenhum ponto de extremidade é criado até que seja configurado manualmente:
- Sem acesso: Nenhum ponto de extremidade é configurado, bloqueando conexões de entrada até que seja configurado manualmente.
- Ponto de extremidade público: Permite conexões diretas pela internet pública, sujeitas a regras de firewall e outras configurações de segurança.
- Ponto de extremidade privado: Restringe a conectividade a uma rede privada.
**Política de Conexão**: Defina como os clientes se comunicam com o servidor de banco de dados SQL:
- Padrão: Usa uma política de Redirecionamento para todas as conexões de clientes de dentro do Azure (exceto aquelas usando Pontos de Extremidade Privados) e uma política de Proxy para conexões de fora do Azure.
- Proxy: Roteia todas as conexões de clientes através do gateway do Azure SQL Database.
- Redirecionar: Os clientes se conectam diretamente ao nó que hospeda o banco de dados.
#### Recursos de Segurança
- **Microsoft Defender para SQL**: pode ser habilitado oferecendo avaliações de vulnerabilidade e proteção avançada contra ameaças.
- **Ledger**: verifica criptograficamente a integridade dos dados, garantindo que qualquer adulteração seja detectada.
- **Identidade do Servidor**: usa identidades gerenciadas atribuídas ao sistema e ao usuário para permitir acesso centralizado.
- **Gerenciamento de Chaves de Criptografia de Dados Transparentes**: criptografa bancos de dados, backups e logs em repouso sem exigir alterações no aplicativo. A criptografia pode ser habilitada em cada banco de dados e, se configurada no nível do banco de dados, essas configurações substituem a configuração no nível do servidor.
- **Sempre Criptografado**: é um conjunto de recursos avançados de proteção de dados que separa a propriedade dos dados do gerenciamento dos dados. Isso garante que administradores ou operadores com altos privilégios não possam acessar dados sensíveis.
#### Modelos de Compra / Níveis de Serviço
- **Baseado em vCore**: Escolha computação, memória e armazenamento de forma independente. Para Uso Geral, Crítico para Negócios (com alta resiliência e desempenho para aplicativos OLTP) e escala até 128 TB de armazenamento.
- **Baseado em DTU**: Agrupa computação, memória e I/O em níveis fixos. Recursos equilibrados para tarefas comuns.
- Padrão: Recursos equilibrados para tarefas comuns.
- Premium: Alto desempenho para cargas de trabalho exigentes.
#### Desempenho escalável e pools
- **Bancos de Dados Únicos**: Cada banco de dados é isolado e possui seus próprios recursos dedicados de computação, memória e armazenamento. Os recursos podem ser escalados dinamicamente (para cima ou para baixo) sem tempo de inatividade (1128 vCores, 32 GB4 TB de armazenamento, e até 128 TB).
- **Bancos de Dados Únicos**: Cada banco de dados é isolado e possui seus próprios recursos dedicados de computação, memória e armazenamento. Os recursos podem ser escalados dinamicamente (para cima ou para baixo) sem tempo de inatividade (1128 vCores, 32 GB4 TB de armazenamento e até 128 TB).
- **Pools Elásticos**: Compartilham recursos entre vários bancos de dados em um pool para maximizar a eficiência e economizar custos. Os recursos também podem ser escalados dinamicamente para todo o pool.
- **Flexibilidade de Nível de Serviço**: Comece pequeno com um único banco de dados no nível de Uso Geral. Faça upgrade para os níveis Crítico para Negócios ou Hiperscale à medida que as necessidades crescem.
- **Flexibilidade de Nível de Serviço**: Comece pequeno com um único banco de dados no nível de Uso Geral. Faça upgrade para níveis Críticos para Negócios ou Hiperscale à medida que as necessidades crescem.
- **Opções de Escalonamento**: Escalonamento Dinâmico ou Alternativas de Autoscaling.
#### Monitoramento e Otimização Integrados
- **Query Store**: Rastreia problemas de desempenho, identifica os principais consumidores de recursos e oferece recomendações acionáveis.
- **Query Store**: Acompanha problemas de desempenho, identifica os principais consumidores de recursos e oferece recomendações acionáveis.
- **Ajuste Automático**: Otimiza proativamente o desempenho com recursos como indexação automática e correções de plano de consulta.
- **Integração de Telemetria**: Suporta monitoramento através do Azure Monitor, Event Hubs ou Azure Storage para insights personalizados.
#### Recuperação de Desastres & Disponibilidade
#### Recuperação de Desastres e Disponibilidade
- **Backups automáticos**: O SQL Database realiza automaticamente backups completos, diferenciais e de log de transações dos bancos de dados.
- **Backups automáticos**: O SQL Database realiza automaticamente backups completos, diferenciais e de logs de transações dos bancos de dados.
- **Restauração em um Ponto no Tempo**: Recupera bancos de dados para qualquer estado passado dentro do período de retenção de backup.
- **Geo-Redundância**
- **Grupos de Failover**: Simplifica a recuperação de desastres agrupando bancos de dados para failover automático entre regiões.
### Azure SQL Managed Instance
**Azure SQL Managed Instance** é um motor de banco de dados como serviço (PaaS) que oferece quase 100% de compatibilidade com o SQL Server e lida automaticamente com a maioria das tarefas de gerenciamento (por exemplo, atualização, patching, backups, monitoramento). Ele fornece uma solução em nuvem para migrar bancos de dados SQL Server locais com mínimas alterações.
**Azure SQL Managed Instance** é um motor de banco de dados como serviço (PaaS) que oferece quase 100% de compatibilidade com o SQL Server e lida automaticamente com a maioria das tarefas de gerenciamento (por exemplo, atualização, correção, backups, monitoramento). Ele fornece uma solução em nuvem para migrar bancos de dados SQL Server locais com mínimas alterações.
#### Níveis de Serviço
@@ -72,24 +126,24 @@ O Azure SQL Database suporta opções de implantação flexíveis para atender a
#### Recursos Avançados de Segurança
* **Proteção contra Ameaças**: Alertas de Proteção Avançada contra Ameaças para atividades suspeitas e ataques de injeção SQL. Auditoria para rastrear e registrar eventos de banco de dados para conformidade.
* **Controle de Acesso**: Autenticação Microsoft Entra para gerenciamento centralizado de identidade. Segurança em Nível de Linha e Mascaramento Dinâmico de Dados para controle de acesso granular.
* **Controle de Acesso**: Autenticação Microsoft Entra para gerenciamento centralizado de identidade. Segurança em Nível de Linha e Máscara de Dados Dinâmica para controle de acesso granular.
* **Backups**: Backups automatizados e manuais com capacidade de restauração em um ponto no tempo.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** é melhor para migrações onde você deseja **controle sobre o sistema operacional e a instância do SQL Server**, como se fosse um servidor rodando localmente. Pode ter diferentes tamanhos de máquina e uma ampla seleção de versões e edições do SQL Server.
#### Principais Recursos
#### Recursos Principais
**Backup Automatizado**: Agende backups para bancos de dados SQL.
**Patching Automático**: Automatiza a instalação de atualizações do Windows e do SQL Server durante uma janela de manutenção.
**Correção Automática**: Automatiza a instalação de atualizações do Windows e do SQL Server durante uma janela de manutenção.
**Integração com Azure Key Vault**: Configura automaticamente o Key Vault para VMs do SQL Server.
**Integração com Defender for Cloud**: Visualize recomendações do Defender for SQL no portal.
**Flexibilidade de Versão/Edição**: Altere os metadados da versão ou edição do SQL Server sem redistribuir a VM.
**Integração com Defender for Cloud**: Visualize as recomendações do Defender para SQL no portal.
**Flexibilidade de Versão/Edição**: Altere a versão ou edição do SQL Server sem redistribuir a VM.
#### Recursos de Segurança
**Microsoft Defender for SQL**: Insights e alertas de segurança.
**Microsoft Defender para SQL**: Insights e alertas de segurança.
**Integração com Azure Key Vault**: Armazenamento seguro de credenciais e chaves de criptografia.
**Microsoft Entra (Azure AD)**: Autenticação e controle de acesso.
@@ -99,7 +153,7 @@ O Azure SQL Database suporta opções de implantação flexíveis para atender a
{{#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 <server_name> --resource-group <resource_group>
## List Server Firewalls
@@ -208,7 +262,7 @@ Get-AzSqlVM
### Conectar e executar consultas SQL
Você pode encontrar uma string de conexão (contendo credenciais) no exemplo [enumerando um Az WebApp](az-app-services.md):
Você pode encontrar uma string de conexão (contendo credenciais) do exemplo [enumerando um Az WebApp](az-app-services.md):
```bash
function invoke-sql{
param($query)

View File

@@ -12,7 +12,7 @@ VMs Confidenciais usam **recursos de segurança baseados em hardware** oferecido
Para executar uma VM Confidencial, pode ser necessário **alterar** coisas como o **tipo** da **máquina**, **interface** de rede, **imagem do disco de inicialização**.
### Disco & Criptografia de Disco
### Disco e Criptografia de Disco
É possível **selecionar o disco** a ser usado ou **criar um novo**. Se você selecionar um novo, pode:
@@ -34,11 +34,11 @@ Esta conta de serviço tem **papel de Editor sobre todo o projeto (altos privil
E os **escopos de acesso padrão** são os seguintes:
- **https://www.googleapis.com/auth/devstorage.read\_only** -- Acesso de leitura a buckets :)
- 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)
No entanto, é possível **conceder `cloud-platform` com um clique** ou especificar **personalizados**.
@@ -74,7 +74,7 @@ Quando este **serviço** está **habilitado**, o acesso via **chaves SSH é desa
### Metadados
É possível definir **automação** (userdata no AWS) que são **comandos de shell** que serão executados toda vez que a máquina ligar ou reiniciar.
É possível definir **automação** (userdata no AWS) que são **comandos de shell** que serão executados toda vez que a máquina for ligada ou reiniciada.
É também possível **adicionar valores de chave-valor de metadados extras** que estarão acessíveis a partir do endpoint de metadados. Essas informações são comumente usadas para variáveis de ambiente e scripts de inicialização/desligamento. Isso pode ser obtido usando o **método `describe`** de um comando na seção de enumeração, mas também pode ser recuperado de dentro da instância acessando o endpoint de metadados.
```bash
@@ -94,7 +94,7 @@ https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/
### Criptografia
Uma chave de criptografia gerenciada pelo Google é usada por padrão, mas uma chave de criptografia gerenciada pelo cliente (CMEK) pode ser configurada. Você também pode configurar o que fazer quando o CMEK utilizado for revogado: Notificar ou desligar a VM.
Uma chave de criptografia gerenciada pelo Google é usada por padrão, mas uma chave de criptografia gerenciada pelo cliente (CMEK) pode ser configurada. Você também pode configurar o que fazer quando a CMEK utilizada for revogada: Notificar ou desligar a VM.
<figure><img src="../../../../images/image (329).png" alt=""><figcaption></figcaption></figure>