mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-10 23:00:49 -08:00
Translated ['src/pentesting-cloud/azure-security/az-persistence/az-queue
This commit is contained in:
@@ -425,8 +425,8 @@
|
||||
- [Az - Management Groups, Subscriptions & Resource Groups](pentesting-cloud/azure-security/az-services/az-management-groups-subscriptions-and-resource-groups.md)
|
||||
- [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql.md)
|
||||
- [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql.md)
|
||||
- [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue-enum.md)
|
||||
- [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus-enum.md)
|
||||
- [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue.md)
|
||||
- [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus.md)
|
||||
- [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md)
|
||||
- [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md)
|
||||
- [Az - Storage Accounts & Blobs](pentesting-cloud/azure-security/az-services/az-storage.md)
|
||||
@@ -489,6 +489,7 @@
|
||||
- [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md)
|
||||
- [Az - Automation Accounts Persistence](pentesting-cloud/azure-security/az-persistence/az-automation-accounts-persistence.md)
|
||||
- [Az - Cloud Shell Persistence](pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md)
|
||||
- [Az - Queue SQL Persistence](pentesting-cloud/azure-security/az-persistence/az-sql-persistance.md)
|
||||
- [Az - Queue Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md)
|
||||
- [Az - VMs Persistence](pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md)
|
||||
- [Az - Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-storage-persistence.md)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
Para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-queue-enum.md
|
||||
../az-services/az-queue.md
|
||||
{{#endref}}
|
||||
|
||||
### Ações: `Microsoft.Storage/storageAccounts/queueServices/queues/write`
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# Az - SQL Persistence
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## SQL
|
||||
|
||||
Para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-sql.md
|
||||
{{#endref}}
|
||||
|
||||
### Técnicas Comuns de Persistência
|
||||
|
||||
- Comprometer credenciais SQL ou criar um usuário SQL (habilitando a autenticação SQL, se necessário)
|
||||
- Atribuir um usuário comprometido como administrador do Entra ID (habilitando a autenticação do Entra ID, se necessário)
|
||||
- Backdoor na VM (se a VM SQL for utilizada)
|
||||
- Criar uma regra de FW para manter o acesso ao banco de dados SQL
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
@@ -1,4 +1,4 @@
|
||||
# Az - Queue Storage Post Exploitation
|
||||
# Az - Queue Storage Pós Exploração
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
Para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-queue-enum.md
|
||||
../az-services/az-queue.md
|
||||
{{#endref}}
|
||||
|
||||
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/read`
|
||||
@@ -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 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>
|
||||
```
|
||||
### 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 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.
|
||||
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.
|
||||
```bash
|
||||
az storage message clear --queue-name <queue-name> --account-name <storage-account>
|
||||
```
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
Para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-servicebus-enum.md
|
||||
../az-services/az-servicebus.md
|
||||
{{#endref}}
|
||||
|
||||
### 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 interrupção generalizada 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 ampla interrupção e perda permanente de dados em todos os sistemas e fluxos de trabalho dependentes.
|
||||
```bash
|
||||
az servicebus namespace delete --resource-group <ResourceGroupName> --name <NamespaceName>
|
||||
```
|
||||
@@ -24,7 +24,7 @@ az servicebus topic delete --resource-group <ResourceGroupName> --namespace-name
|
||||
```
|
||||
### Ações: `Microsoft.ServiceBus/namespaces/queues/Delete`
|
||||
|
||||
Um atacante com esta permissão pode excluir uma fila do Azure Service Bus. Esta ação remove a fila e todas as mensagens dentro dela, potencialmente causando perda de dados críticos e interrompendo sistemas e fluxos de trabalho dependentes da fila.
|
||||
Um atacante com essa permissão pode excluir uma fila do Azure Service Bus. Essa ação remove a fila e todas as mensagens dentro dela, potencialmente causando perda de dados críticos e interrompendo sistemas e fluxos de trabalho dependentes da fila.
|
||||
```bash
|
||||
az servicebus queue delete --resource-group <ResourceGroupName> --namespace-name <NamespaceName> --name <QueueName>
|
||||
```
|
||||
@@ -43,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 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.
|
||||
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.
|
||||
```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>
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
Para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-queue-enum.md
|
||||
../az-services/az-queue.md
|
||||
{{#endref}}
|
||||
|
||||
### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/read`
|
||||
|
||||
Um atacante com esta permissão pode visualizar mensagens de uma Azure Storage Queue. Isso permite que o atacante veja o conteúdo das mensagens sem marcá-las como processadas ou alterar seu estado. Isso pode levar ao acesso não autorizado a informações sensíveis, permitindo a exfiltração de dados ou a coleta de inteligência para ataques futuros.
|
||||
Um atacante com esta permissão pode visualizar mensagens de uma Azure Storage Queue. Isso permite que o atacante veja o conteúdo das mensagens sem marcá-las como processadas ou alterar seu estado. Isso pode levar ao acesso não autorizado a informações sensíveis, possibilitando a exfiltração de dados ou a coleta de inteligência para ataques futuros.
|
||||
```bash
|
||||
az storage message peek --queue-name <queue_name> --account-name <storage_account>
|
||||
```
|
||||
@@ -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 interromper 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 as mensagens indisponíveis para seus usuários pretendidos.
|
||||
```bash
|
||||
az storage message get --queue-name <queue_name> --account-name <storage_account>
|
||||
```
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
Para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
../az-services/az-servicebus-enum.md
|
||||
../az-services/az-servicebus.md
|
||||
{{#endref}}
|
||||
|
||||
### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action OU Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action
|
||||
@@ -31,7 +31,7 @@ az servicebus namespace authorization-rule create --authorization-rule-name "myR
|
||||
>[!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/authorizationRules/read`) se você executar esta ação através da 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/authorizationRules/read`) se você executar 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:
|
||||
```bash
|
||||
az servicebus namespace authorization-rule update \
|
||||
--resource-group <MyResourceGroup> \
|
||||
@@ -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
|
||||
@@ -82,13 +82,14 @@ Com essas permissões **um atacante pode reabilitar "autenticação local"** com
|
||||
```bash
|
||||
az servicebus namespace update --disable-local-auth false -n <namespace-name> --resource-group <res-group>
|
||||
```
|
||||
### Enviar Mensagens com chaves (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OU Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action)
|
||||
### Enviar Mensagens com chaves (Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action OU Microsoft.ServiceBus/namespaces/[queues|topics]/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. Este método funciona se `--disable-local-auth` estiver definido como false.
|
||||
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 (então a autenticação local está habilitada).
|
||||
```python
|
||||
import asyncio
|
||||
from azure.servicebus.aio import ServiceBusClient
|
||||
from azure.servicebus import ServiceBusMessage
|
||||
# pip install azure-servicebus
|
||||
|
||||
NAMESPACE_CONNECTION_STR = "<PrimaryConnectionString>"
|
||||
TOPIC_OR_QUEUE_NAME = "<TOPIC_OR_QUEUE_NAME>"
|
||||
@@ -129,12 +130,13 @@ az rest --method post \
|
||||
--body "<MESSAGE_BODY>"
|
||||
|
||||
```
|
||||
### Receber com chaves (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OU Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action)
|
||||
### Receber com chaves (Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action OU Microsoft.ServiceBus/namespaces/[queues|topics]/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 de aplicativos. Este método funciona se `--disable-local-auth` estiver definido como false.
|
||||
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. Este método funciona se `--disable-local-auth` estiver definido como false.
|
||||
```python
|
||||
import asyncio
|
||||
from azure.servicebus.aio import ServiceBusClient
|
||||
# pip install azure-servicebus
|
||||
|
||||
CONN_STR = "<PrimaryConnectionString>"
|
||||
QUEUE = "<QUEUE_NAME>"
|
||||
@@ -162,7 +164,7 @@ 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.
|
||||
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
|
||||
|
||||
@@ -224,13 +226,15 @@ import asyncio
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
from azure.servicebus.aio import ServiceBusClient
|
||||
from azure.servicebus import ServiceBusMessage
|
||||
# pip install azure-servicebus
|
||||
|
||||
NS = "<namespace>.servicebus.windows.net" # Your namespace
|
||||
QUEUE_OR_TOPIC = "<QUEUE_OR_TOPIC>" # Your queue name
|
||||
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_topic_sender(topic_name=TOPIC) as sender: # Use this to send the message to a topic
|
||||
async with client.get_queue_sender(queue_name=QUEUE) as sender:
|
||||
await sender.send_messages(ServiceBusMessage("Single Message"))
|
||||
print("Sent a single message")
|
||||
@@ -246,6 +250,7 @@ Você pode usar essas permissões para receber mensagens, mesmo que `--disable-l
|
||||
import asyncio
|
||||
from azure.identity.aio import DefaultAzureCredential
|
||||
from azure.servicebus.aio import ServiceBusClient
|
||||
# pip install azure-servicebus
|
||||
|
||||
NS = "<namespace>.servicebus.windows.net"
|
||||
QUEUE = "<QUEUE>"
|
||||
|
||||
@@ -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 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 de maneira FIFO (primeiro a entrar, primeiro a sair), 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 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 em uma ordem de primeiro a entrar, primeiro a sair (FIFO), a FIFO estrita não é garantida.
|
||||
|
||||
### Enumeração
|
||||
|
||||
@@ -6,15 +6,15 @@
|
||||
|
||||
Azure Service Bus é um **serviço de mensagens** baseado em nuvem projetado para permitir uma **comunicação confiável entre diferentes partes de uma aplicação ou aplicações separadas**. Ele atua como um intermediário seguro, garantindo que as mensagens sejam entregues com segurança, mesmo que o remetente e o receptor não estejam operando simultaneamente. Ao desacoplar sistemas, permite que as aplicações funcionem de forma independente enquanto ainda trocam dados ou instruções. É particularmente útil para cenários que exigem balanceamento de carga entre vários trabalhadores, entrega confiável de mensagens ou coordenação complexa, como processamento de tarefas em ordem ou gerenciamento seguro de acesso.
|
||||
|
||||
### Conceitos Chave
|
||||
### Key Concepts
|
||||
|
||||
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.
|
||||
2. **Queues:** 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) para um consumidor.
|
||||
- Pode ser configurado para que, quando a mensagem for compartilhada, ela seja automaticamente excluída ou em modo “Peek lock”, onde o consumidor precisa reconhecer que pode ser excluída. Caso contrário, a mensagem retornará à fila.
|
||||
- Suporta comunicação ponto a ponto.
|
||||
3. **Tópicos:** Mensagens de publicação-assinatura para transmissão.
|
||||
3. **Topics:** Mensagens de publicação-assinatura para transmissão.
|
||||
- Múltiplas assinaturas independentes recebem cópias das mensagens.
|
||||
- Cada assinatura é como uma fila dentro do tópico.
|
||||
- As assinaturas podem ter regras/filtros para controlar a entrega ou adicionar metadados.
|
||||
@@ -42,7 +42,7 @@ Alguns recursos avançados são:
|
||||
|
||||
O parâmetro **`--disable-local-auth`** do az cli é usado para controlar se a **autenticação local** (permitindo o uso de chaves de Shared Access Signature (SAS)) está habilitada para seu namespace do Service Bus.
|
||||
|
||||
- Quando disable está definido como **true**: A autenticação local usando chaves SAS está desativada e a autenticação do Entrad ID é permitida.
|
||||
- Quando disable está definido como **true**: A autenticação local usando chaves SAS é desativada e a autenticação do Entrad ID é permitida.
|
||||
- Quando disable está definido como **false (padrão)**: Tanto a autenticação local SAS quanto a autenticação do Entra ID estão disponíveis e você pode usar strings de conexão com chaves SAS para acessar seus recursos do Service Bus.
|
||||
|
||||
### Regra de Autorização / Política SAS
|
||||
@@ -54,7 +54,7 @@ As Políticas SAS definem as permissões de acesso para entidades do Azure Servi
|
||||
- Send: Permite o envio de mensagens para a entidade.
|
||||
- Listen: Permite o recebimento de mensagens da entidade.
|
||||
- **Chaves Primárias e Secundárias**: Estas são chaves criptográficas usadas para gerar tokens seguros para autenticar o acesso.
|
||||
- **Strings de Conexão Primárias e Secundárias**: Strings de conexão pré-configuradas que incluem o endpoint e a chave para fácil uso em aplicações.
|
||||
- **Strings de Conexão Primárias e Secundárias**: Strings de conexão pré-configuradas que incluem o endpoint e a chave para fácil uso em aplicativos.
|
||||
- **SAS Policy ARM ID**: O caminho do Azure Resource Manager (ARM) para a política para identificação programática.
|
||||
|
||||
É 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.
|
||||
@@ -25,7 +25,7 @@ Azure SQL consiste em quatro ofertas principais:
|
||||
**Métodos de Autenticação:**
|
||||
|
||||
- Autenticação **somente Entra** da Microsoft: Você precisa indicar os princípios Entra que terão acesso ao serviço.
|
||||
- Autenticação **tanto SQL quanto Microsoft Entra**: Autenticação SQL tradicional com nome de usuário e senha juntamente com Microsoft Entra.
|
||||
- Autenticação **tanto SQL quanto Entra** da Microsoft: Autenticação SQL tradicional com nome de usuário e senha junto com Entra da Microsoft.
|
||||
- Autenticação **somente SQL**: Permitir acesso apenas via usuários de banco de dados.
|
||||
|
||||
Observe que, se qualquer autenticação SQL for permitida, um usuário administrador (nome de usuário + senha) precisa ser indicado e, se a autenticação Entra ID for selecionada, também é necessário indicar pelo menos um princípio com acesso de administrador.
|
||||
@@ -37,8 +37,8 @@ Observe que, se qualquer autenticação SQL for permitida, um usuário administr
|
||||
**Identidades Gerenciadas:**
|
||||
|
||||
- É possível atribuir MIs gerenciadas pelo sistema e pelo usuário.
|
||||
- Usado para acessar a chave de criptografia (se um CMEK for usado) e outros serviços dos bancos de dados.
|
||||
- Se mais de um UMI for atribuído, é possível indicar o padrão a ser usado.
|
||||
- Usado para acessar a chave de criptografia (se uma CMEK for usada) e outros serviços dos bancos de dados.
|
||||
- Se mais de uma UMI for atribuída, é possível indicar a padrão a ser usada.
|
||||
- É possível configurar uma identidade de cliente federada para acesso entre locatários.
|
||||
|
||||
**Microsoft Defender:**
|
||||
@@ -54,14 +54,14 @@ Observe que, se qualquer autenticação SQL for permitida, um usuário administr
|
||||
|
||||
## 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 aplicativos baseados em nuvem.
|
||||
**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 com as mais recentes tecnologias do SQL Server e elimina a necessidade de gerenciamento de infraestrutura, tornando-se uma escolha popular para aplicativos baseados em nuvem.
|
||||
|
||||
Para criar um banco de dados SQL, é necessário indicar o servidor SQL onde ele será hospedado.
|
||||
|
||||
### Recursos de Segurança do Banco de Dados SQL
|
||||
|
||||
- **Sempre Atualizado**: Executa na versão estável mais recente do SQL Server e recebe novos recursos e patches automaticamente.
|
||||
- **Recursos de segurança herdados do SQL Server:**
|
||||
- **Recursos de segurança do SQL Server herdados:**
|
||||
- Autenticação (SQL e/ou Entra ID)
|
||||
- Identidades Gerenciadas atribuídas
|
||||
- Restrições de rede
|
||||
@@ -77,20 +77,20 @@ Um banco de dados SQL pode fazer parte de um **Pool Elástico**. Pools elástico
|
||||
|
||||
O mascaramento de dados dinâmico do **Azure SQL** é um recurso que ajuda a **proteger informações sensíveis ocultando-as** de usuários não autorizados. Em vez de alterar os dados reais, ele mascara dinamicamente os dados exibidos, garantindo que detalhes sensíveis, como números de cartão de crédito, sejam ocultados.
|
||||
|
||||
O **Mascaramento de Dados Dinâmico** afeta todos os usuários, exceto aqueles que estão desmascarados (esses usuários precisam ser indicados) e administradores. Ele possui a opção de configuração que especifica quais usuários SQL estão isentos do mascaramento dinâmico de dados, com **administradores sempre excluídos**.
|
||||
O **Mascaramento de Dados Dinâmico** afeta todos os usuários, exceto aqueles que são desmascarados (esses usuários precisam ser indicados) e administradores. Ele possui a opção de configuração que especifica quais usuários SQL estão isentos do mascaramento dinâmico de dados, com **administradores sempre excluídos**.
|
||||
|
||||
A **Segurança em Nível de Linha (RLS)** do Azure SQL é um recurso que **controla quais linhas um usuário pode visualizar ou modificar**, garantindo que cada usuário veja apenas os dados relevantes para ele. Ao criar políticas de segurança com predicados de filtro ou bloqueio, as organizações podem impor acesso granular no nível do banco de dados.
|
||||
|
||||
### Azure SQL Managed Instance
|
||||
|
||||
As **Instâncias Gerenciadas do Azure SQL** são para implantações em maior escala, abrangendo toda a instância do SQL Server. Elas oferecem 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.
|
||||
**Azure SQL Managed Instances** são para implantações em maior escala, abrangendo toda a instância do SQL Server. Ele fornece quase 100% de compatibilidade com o SQL Server mais recente no 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 no local.
|
||||
|
||||
### Azure SQL Virtual Machines
|
||||
|
||||
As **Máquinas Virtuais do Azure SQL** permitem **controlar o sistema operacional** e a instância do SQL Server, já que uma VM será criada no serviço de VM executando o SQL Server.
|
||||
**Azure SQL Virtual Machines** permite **controlar o sistema operacional** e a instância do SQL Server, já que uma VM será criada no serviço de VM executando o servidor SQL.
|
||||
|
||||
Quando uma Máquina Virtual SQL é criada, é possível **selecionar todas as configurações da VM** (como mostrado na lição de VM) que hospedarão o SQL Server.
|
||||
- Isso significa que a VM acessará algumas VNet(s), pode ter **Identidades Gerenciadas anexadas** a ela, pode ter compartilhamentos de arquivos montados… tornando um **pivotamento do SQL** para a VM super interessante.
|
||||
Quando uma Máquina Virtual SQL é criada, é possível **selecionar todas as configurações da VM** (como mostrado na lição da VM) que hospedarão o servidor SQL.
|
||||
- Isso significa que a VM acessará algumas VNet(s), pode ter **Identidades Gerenciadas anexadas** a ela, pode ter compartilhamentos de arquivos montados… tornando um **pivoting do SQL** para a VM super interessante.
|
||||
- Além disso, é possível configurar um ID de aplicativo e segredo para **permitir que o SQL acesse um cofre de chaves específico**, que pode conter informações sensíveis.
|
||||
|
||||
Também é possível configurar coisas como **atualizações automáticas do SQL**, **backups automáticos**, **autenticação Entra ID** e a maioria dos recursos dos outros serviços SQL.
|
||||
@@ -301,4 +301,10 @@ sqlcmd -S <sql-server>.database.windows.net -U <server-user> -P <server-passwork
|
||||
../az-post-exploitation/az-sql-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### Persistência
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-sql-persistance.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user