Az - Service Bus Enum

Reading time: 8 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Service Bus

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.

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. 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.
  1. 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.

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:

  • 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.
  • 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.

Autenticação Local

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 é 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

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:

  • 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.
  • 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 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.

Enumeração

bash
# Namespace Enumeration
az servicebus namespace list
az servicebus namespace network-rule-set list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus namespace show --resource-group <MyResourceGroup> --name <MyNamespace>
az servicebus namespace network-rule-set show --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus namespace private-endpoint-connection list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
az servicebus namespace exists --name ProposedNamespace

# Authorization Rule Enumeration
az servicebus namespace authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
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>

Escalação de Privilégios

Az - Service Bus Privesc

Pós Exploração

Az - Service Bus Post Exploitation

Referências

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks