From d08acd2fa05324ce4b7838120903c1da7917cc48 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 15 Feb 2025 03:25:13 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation --- .../az-servicebus-privesc.md | 86 ++++++++++++++++--- .../az-services/az-servicebus-enum.md | 39 +++++---- 2 files changed, 96 insertions(+), 29 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md index e67ac6091..ae0101ffb 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md @@ -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 --namespace-name --authorization-rule-name RootManageSharedAccessKey [--authorization-rule-name RootManageSharedAccessKey] + +# Regenerate keys +az servicebus namespace authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group --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 \ +--namespace-name \ +--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 --namespace-name --topic-name --name + +# Regenerate keys (topics) +az servicebus topic authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group --namespace-name --topic-name --name + +# List keys (queues) +az servicebus queue authorization-rule keys list --resource-group --namespace-name --queue-name --name + +# Regenerate keys (queues) +az servicebus queue authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group --namespace-name --queue-name --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 --namespace-name --topic-name --name --rights Manage Listen Send + +# In a queue +az servicebus queue authorization-rule create --resource-group --namespace-name --queue-name --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 --namespace-name --topic-name --name --rights Manage Listen Send + +# In a queue +az servicebus queue authorization-rule update --resource-group --namespace-name --queue-name --name --rights Manage Listen Send +``` +### Microsoft.ServiceBus/namespaces/write (& Microsoft.ServiceBus/namespaces/read se 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 --resource-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 \ ---namespace-name \ ---name RootManageSharedAccessKey \ ---rights Manage Listen Send -``` ## Referências - https://learn.microsoft.com/pt-br/azure/storage/queues/storage-powershell-how-to-use-queues diff --git a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md index fc980a31b..e2d5e593a 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md @@ -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 --namespace-name -az servicebus queue show --resource-group --namespace-name --name - -# Topic Enumeration -az servicebus topic list --resource-group --namespace-name -az servicebus topic show --resource-group --namespace-name --name - -# Susbscription Enumeration -az servicebus topic subscription list --resource-group --namespace-name --topic-name -az servicebus topic subscription show --resource-group --namespace-name --topic-name --name - # Namespace Enumeration az servicebus namespace list az servicebus namespace network-rule-set list --resource-group --namespace-name @@ -79,6 +67,23 @@ az servicebus namespace authorization-rule list --resource-group --namespace-name --queue-name az servicebus topic authorization-rule list --resource-group --namespace-name --topic-name az servicebus namespace authorization-rule keys list --resource-group --namespace-name --name + +# Get keys +az servicebus namespace authorization-rule keys list --resource-group --namespace-name [--authorization-rule-name RootManageSharedAccessKey] +az servicebus topic authorization-rule keys list --resource-group --namespace-name --topic-name --name +az servicebus queue authorization-rule keys list --resource-group --namespace-name --queue-name --name + +# Queue Enumeration +az servicebus queue list --resource-group --namespace-name +az servicebus queue show --resource-group --namespace-name --name + +# Topic Enumeration +az servicebus topic list --resource-group --namespace-name +az servicebus topic show --resource-group --namespace-name --name + +# Susbscription Enumeration +az servicebus topic subscription list --resource-group --namespace-name --topic-name +az servicebus topic subscription show --resource-group --namespace-name --topic-name --name ``` {{#endtab }}