mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user