Az - Service Bus Enum

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

Service Bus

Azure Service Bus 是一个基于云的 消息服务,旨在实现 应用程序不同部分或独立应用程序之间的可靠通信。它充当一个安全的中介,确保消息安全送达,即使发送者和接收者并不同时操作。通过解耦系统,它允许应用程序独立工作,同时仍然交换数据或指令。它特别适用于需要在多个工作者之间进行负载均衡、可靠消息传递或复杂协调的场景,例如按顺序处理任务或安全管理访问。

Key Concepts

  1. Namespaces: 消息系统中的命名空间是一个逻辑容器,用于组织和管理消息组件、队列和主题。它提供一个隔离的环境,应用程序可以在其中发送、接收和处理消息。队列和主题在 Service Bus 命名空间内共享相同的基础设施和配置,但它们独立操作而不相互交互。
  2. Queues: 其目的是存储消息,直到接收者准备好。
  • 消息是有序的、带时间戳的,并且持久存储。
  • 以拉取模式(按需检索)交付给一个消费者。
  • 可以配置为在消息共享时自动删除,或在“Peek lock”模式下,消费者需要确认可以删除。如果没有确认,消息将返回队列。
  • 支持点对点通信。
  1. Topics: 发布-订阅消息,用于广播。
  • 多个独立的订阅接收消息的副本。
  • 每个订阅就像主题内部的一个队列。
  • 订阅可以有规则/过滤器来控制交付或添加元数据。

服务总线端点/连接字符串是:

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

高级功能

一些高级功能包括:

  • 消息会话:确保FIFO处理并支持请求-响应模式。
  • 自动转发:在同一命名空间内在队列或主题之间转移消息。
  • 死信处理:捕获无法投递的消息以供审查。
  • 定时投递:延迟消息处理以进行未来任务。
  • 消息延迟:推迟消息检索直到准备好。
  • 事务:将操作分组为原子执行。
  • 过滤器和操作:应用规则以过滤或注释消息。
  • 空闲自动删除:在不活动后删除队列(最小:5分钟)。
  • 重复检测:在重发期间删除重复消息。
  • 批量删除:批量删除过期或不必要的消息。

本地身份验证

az cli参数中的 --disable-local-auth 用于控制是否为您的Service Bus命名空间启用 本地身份验证(允许使用共享访问签名(SAS)密钥)。

  • 当disable设置为 true:禁用使用SAS密钥的本地身份验证,允许使用Entra ID身份验证。
  • 当disable设置为 false(默认):同时提供SAS本地身份验证和Entra ID身份验证,您可以使用包含SAS密钥的连接字符串访问您的Service Bus资源。

授权规则 / SAS策略

SAS策略定义了Azure Service Bus实体命名空间(最重要的一个)、队列和主题的访问权限。每个策略具有以下组件:

  • 权限:复选框以指定访问级别:
  • 管理:授予对实体的完全控制,包括配置和权限管理。
  • 发送:允许向实体发送消息。
  • 监听:允许从实体接收消息。
  • 主密钥和次密钥:这些是用于生成安全令牌以进行身份验证的加密密钥。
  • 主连接字符串和次连接字符串:预配置的连接字符串,包括端点和密钥,便于在应用程序中使用。
  • SAS策略ARM ID:用于程序识别的Azure资源管理器(ARM)路径。

需要注意的是,一个命名空间只有一个SAS策略,这会影响其中的每个实体,而队列和主题可以拥有各自的SAS策略以实现更细粒度的控制。

枚举

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

权限提升

Az - Service Bus Privesc

后期利用

Az - Service Bus Post Exploitation

参考文献

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks