Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-15 03:25:13 +00:00
parent f687fe9b3a
commit d08acd2fa0
2 changed files with 96 additions and 29 deletions

View File

@@ -10,7 +10,79 @@ Para mais informações, consulte:
../az-services/az-servicebus-enum.md
{{#endref}}
### Enviar Mensagens. Ação: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` OU `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action OU Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action
Essas permissões permitem que você obtenha ou regenere as chaves para regras de autorização locais dentro de um namespace do Service Bus. Usando essas chaves, é possível autenticar-se como o namespace do Service Bus, permitindo que você envie mensagens para qualquer fila ou tópico, receba mensagens de qualquer fila ou assinatura, ou 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.
Observe que, por padrão, a **`RootManageSharedAccessKey` regra tem controle total** sobre o namespace do Service Bus e é usada pelo `az` cli, no entanto, outras regras com outros valores de chave podem existir.
```bash
# List keys
az servicebus namespace authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --authorization-rule-name RootManageSharedAccessKey [--authorization-rule-name RootManageSharedAccessKey]
# Regenerate keys
az servicebus namespace authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <namespace-name> [--authorization-rule-name RootManageSharedAccessKey]
```
### Microsoft.ServiceBus/namespaces/AuthorizationRules/write
Com esta permissão, é possível **criar uma nova regra de autorização** com todas as permissões e suas próprias chaves com:
```bash
az servicebus namespace authorization-rule create --authorization-rule-name "myRule" --namespace-name mynamespacespdemo --resource-group Resource_Group_1 --rights Manage Listen Send
```
>[!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 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> \
--namespace-name <MyNamespace> \
--name RootManageSharedAccessKey \
--rights Manage Listen Send
```
### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action OU Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action
Tópicos e filas específicos dentro de um namespace do Service Bus podem ter suas próprias regras de autorização, que podem ser usadas para controlar o acesso à entidade. Ao ter essas permissões, você pode **recuperar ou regenerar as chaves para essas regras de autorização locais**, permitindo que você se autentique como a entidade e potencialmente envie ou receba mensagens, gerencie assinaturas ou 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.
```bash
# List keys (topics)
az servicebus topic authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name>
# Regenerate keys (topics)
az servicebus topic authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name>
# List keys (queues)
az servicebus queue authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name>
# Regenerate keys (queues)
az servicebus queue authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name>
```
### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/write
Com esta permissão, é possível **criar uma nova regra de autorização** com todas as permissões e suas próprias chaves com:
```bash
# In a topic
az servicebus topic authorization-rule create --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name> --rights Manage Listen Send
# In a queue
az servicebus queue authorization-rule create --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name> --rights Manage Listen Send
```
>[!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:
```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
# In a queue
az servicebus queue authorization-rule update --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name> --rights Manage Listen Send
```
### Microsoft.ServiceBus/namespaces/write (& Microsoft.ServiceBus/namespaces/read se az cli for usado)
Com essas permissões **um atacante pode reabilitar "autenticação local"** com o seguinte comando e, portanto, todas as chaves das políticas compartilhadas funcionarão.
```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)
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.
```python
@@ -81,7 +153,7 @@ print("Messages Sent")
print("----------------------------")
```
### Receber Mensagens. Ação: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` OU `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
### 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.
```python
@@ -127,16 +199,6 @@ asyncio.run(receive_and_process_messages())
print("Message Receiving Completed")
print("----------------------------")
```
### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write`
Se você tiver essas permissões, pode escalar privilégios lendo ou criando chaves de acesso compartilhado. Essas chaves permitem controle total sobre o namespace do Service Bus, incluindo gerenciamento de filas, tópicos e envio/recebimento de mensagens, potencialmente contornando controles de acesso baseados em função (RBAC).
```bash
az servicebus namespace authorization-rule update \
--resource-group <MyResourceGroup> \
--namespace-name <MyNamespace> \
--name RootManageSharedAccessKey \
--rights Manage Listen Send
```
## Referências
- https://learn.microsoft.com/pt-br/azure/storage/queues/storage-powershell-how-to-use-queues

View File

@@ -9,7 +9,7 @@ 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, carimbadas com data/hora e armazenadas de forma durável.
- As mensagens são ordenadas, com timestamp 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.
@@ -23,12 +23,12 @@ Azure Service Bus é um **serviço de mensagens** baseado em nuvem projetado par
Alguns recursos avançados são:
- **Sessões de Mensagens**: Garante processamento FIFO e suporta padrões de solicitação-resposta.
- **Encaminhamento Automático**: Transfere mensagens entre filas ou tópicos no mesmo namespace.
- **Auto-Encaminhamento**: 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 e Ações**: Aplica regras para filtrar ou anotar mensagens.
- **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.
@@ -41,8 +41,8 @@ As Políticas SAS definem as permissões de acesso para entidades do Azure Servi
- 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á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.
- **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.
### Namespace
@@ -54,18 +54,6 @@ sku, regra de autorização,
{{#tabs }}
{{#tab name="az cli" }}
```bash
# Queue Enumeration
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus queue show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyQueue>
# Topic Enumeration
az servicebus topic list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus topic show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyTopic>
# Susbscription Enumeration
az servicebus topic subscription list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
az servicebus topic subscription show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic> --name <MySubscription>
# Namespace Enumeration
az servicebus namespace list
az servicebus namespace network-rule-set list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
@@ -79,6 +67,23 @@ az servicebus namespace authorization-rule list --resource-group <MyResourceGrou
az servicebus queue authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --queue-name <MyQueue>
az servicebus topic authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
az servicebus namespace authorization-rule keys list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyAuthRule>
# Get keys
az servicebus namespace authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> [--authorization-rule-name RootManageSharedAccessKey]
az servicebus topic authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name>
az servicebus queue authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --queue-name <topic-name> --name <auth-rule-name>
# Queue Enumeration
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus queue show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyQueue>
# Topic Enumeration
az servicebus topic list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus topic show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyTopic>
# Susbscription Enumeration
az servicebus topic subscription list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
az servicebus topic subscription show --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic> --name <MySubscription>
```
{{#endtab }}