Az - Service Bus Enum

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Service Bus

Azure Service Bus es un servicio de mensajería basado en la nube diseñado para permitir una comunicación confiable entre diferentes partes de una aplicación o aplicaciones separadas. Actúa como un intermediario seguro, asegurando que los mensajes se entreguen de manera segura, incluso si el remitente y el receptor no están operando simultáneamente. Al desacoplar sistemas, permite que las aplicaciones funcionen de manera independiente mientras aún intercambian datos o instrucciones. Es particularmente útil para escenarios que requieren balanceo de carga entre múltiples trabajadores, entrega confiable de mensajes o coordinación compleja, como procesar tareas en orden o gestionar el acceso de manera segura.

Key Concepts

  1. Namespaces: Un namespace en sistemas de mensajería es un contenedor lógico que organiza y gestiona componentes de mensajería, colas y temas. Proporciona un entorno aislado donde las aplicaciones pueden enviar, recibir y procesar mensajes. Las colas y los temas comparten la misma infraestructura y configuración dentro de un namespace de Service Bus, pero operan de manera independiente sin interactuar entre sí.
  2. Queues: su propósito es almacenar mensajes hasta que el receptor esté listo.
  • Los mensajes están ordenados, tienen marca de tiempo y se almacenan de manera duradera.
  • Se entregan en modo de extracción (recuperación bajo demanda) a un consumidor.
  • Se puede configurar para que cuando el mensaje se comparta, se elimine automáticamente o en modo “Peek lock” donde el consumidor necesita reconocer que puede ser eliminado. Si no, el mensaje volverá a la cola.
  • Soporta comunicación punto a punto.
  1. Topics: Mensajería de publicación-suscripción para difusión.
  • Múltiples suscripciones independientes reciben copias de los mensajes.
  • Cada suscripción es como una cola dentro del tema.
  • Las suscripciones pueden tener reglas/filtros para controlar la entrega o agregar metadatos.

La cadena de conexión/punto final del service bus es:

https://<namespace>.servicebus.windows.net:443/

Características Avanzadas

Algunas características avanzadas son:

  • Message Sessions: Asegura el procesamiento FIFO y soporta patrones de solicitud-respuesta.
  • Auto-Forwarding: Transfiere mensajes entre colas o temas en el mismo espacio de nombres.
  • Dead-Lettering: Captura mensajes no entregables para revisión.
  • Scheduled Delivery: Retrasa el procesamiento de mensajes para tareas futuras.
  • Message Deferral: Pospone la recuperación de mensajes hasta que esté listo.
  • Transactions: Agrupa operaciones en una ejecución atómica.
  • Filters & Actions: Aplica reglas para filtrar o anotar mensajes.
  • Auto-Delete on Idle: Elimina colas después de inactividad (mín: 5 minutos).
  • Duplicate Detection: Elimina mensajes duplicados durante reenvíos.
  • Batch Deletion: Elimina en bloque mensajes expirados o innecesarios.

Autenticación Local

El parámetro --disable-local-auth de az cli se utiliza para controlar si la autenticación local (que permite el uso de claves de Shared Access Signature (SAS)) está habilitada para su espacio de nombres de Service Bus.

  • Cuando disable está configurado en true: La autenticación local usando claves SAS está deshabilitada y se permite la autenticación de Entrad ID.
  • Cuando disable está configurado en false (predeterminado): Tanto la autenticación local SAS como la autenticación de Entra ID están disponibles y puede usar cadenas de conexión con claves SAS para acceder a sus recursos de Service Bus.

Regla de Autorización / Política SAS

Las Políticas SAS definen los permisos de acceso para las entidades del espacio de nombres de Azure Service Bus (la más importante), colas y temas. Cada política tiene los siguientes componentes:

  • Permissions: Casillas de verificación para especificar niveles de acceso:
  • Manage: Otorga control total sobre la entidad, incluyendo la configuración y gestión de permisos.
  • Send: Permite enviar mensajes a la entidad.
  • Listen: Permite recibir mensajes de la entidad.
  • Primary and Secondary Keys: Estas son claves criptográficas utilizadas para generar tokens seguros para autenticar el acceso.
  • Primary and Secondary Connection Strings: Cadenas de conexión preconfiguradas que incluyen el punto final y la clave para un uso fácil en aplicaciones.
  • SAS Policy ARM ID: La ruta del Administrador de Recursos de Azure (ARM) a la política para identificación programática.

Es importante notar que un espacio de nombres tiene una única política SAS que afecta a cada entidad dentro de él, mientras que las colas y temas pueden tener sus propias políticas SAS individuales para un control más granular.

Enumeración

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

Escalación de Privilegios

Az - Service Bus Privesc

Post Explotación

Az - Service Bus Post Exploitation

Referencias

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks