13 KiB
Az - Service Bus Enum
{{#include ../../../banners/hacktricks-training.md}}
Service Bus
Azure Service Bus - це хмарна служба обміну повідомленнями, призначена для забезпечення надійної комунікації між різними частинами програми або окремими програмами. Вона діє як безпечний посередник, забезпечуючи безпечну доставку повідомлень, навіть якщо відправник і отримувач не працюють одночасно. Відокремлюючи системи, вона дозволяє програмам працювати незалежно, при цьому обмінюючись даними або інструкціями. Це особливо корисно для сценаріїв, що вимагають балансування навантаження між кількома працівниками, надійної доставки повідомлень або складної координації, такої як обробка завдань у порядку або безпечне управління доступом.
Key Concepts
- Namespaces: Простір імен у системах обміну повідомленнями - це логічний контейнер, який організовує та керує компонентами обміну повідомленнями, чергами та темами. Він забезпечує ізольоване середовище, де програми можуть надсилати, отримувати та обробляти повідомлення. Черги та теми ділять одну й ту ж інфраструктуру та конфігурацію в просторі імен Service Bus, але працюють незалежно, не взаємодіючи одна з одною.
- Queues: її мета - зберігати повідомлення, поки отримувач не буде готовий.
- Повідомлення упорядковані, мають часові мітки та надійно зберігаються.
- Доставляються в режимі витягування (за запитом).
- Підтримує точкову комунікацію.
- Topics: Публікація-підписка для трансляції.
- Кілька незалежних підписок отримують копії повідомлень.
- Підписки можуть мати правила/фільтри для контролю доставки або додавання метаданих.
- Підтримує комунікацію багато-до-багато.
The service bus endpoint/connection string is:
https://<namespace>.servicebus.windows.net:443/
Розширені функції
Деякі розширені функції:
- Message Sessions: Забезпечує обробку FIFO та підтримує шаблони запит-відповідь.
- Auto-Forwarding: Перенаправляє повідомлення між чергами або темами в одному просторі імен.
- Dead-Lettering: Захоплює недоставлені повідомлення для перегляду.
- Scheduled Delivery: Затримує обробку повідомлень для майбутніх завдань.
- Message Deferral: Відкладає отримання повідомлень до готовності.
- Transactions: Групує операції в атомарне виконання.
- Filters & Actions: Застосовує правила для фільтрації або анотації повідомлень.
- Auto-Delete on Idle: Видаляє черги після бездіяльності (мін: 5 хвилин).
- Duplicate Detection: Видаляє дублікати повідомлень під час повторних відправок.
- Batch Deletion: Масово видаляє прострочені або непотрібні повідомлення.
Authorization-Rule / SAS Policy
SAS Policies визначають дозволи доступу для сутностей Azure Service Bus (найважливіша), черг та тем. Кожна політика має такі компоненти:
- Permissions: Прапорці для вказівки рівнів доступу:
- Manage: Надає повний контроль над сутністю, включаючи управління конфігурацією та дозволами.
- Send: Дозволяє надсилати повідомлення до сутності.
- Listen: Дозволяє отримувати повідомлення з сутності.
- Primary and Secondary Keys: Це криптографічні ключі, які використовуються для генерації безпечних токенів для автентифікації доступу.
- Primary and Secondary Connection Strings: Попередньо налаштовані рядки підключення, які включають кінцеву точку та ключ для зручного використання в додатках.
- SAS Policy ARM ID: Шлях Azure Resource Manager (ARM) до політики для програмної ідентифікації.
Важливо зазначити, що простір імен має єдину політику SAS, яка впливає на кожну сутність в ньому, тоді як черги та теми можуть мати свої власні індивідуальні політики SAS для більш детального контролю.
"--disable-local-auth"
Параметр --disable-local-auth використовується для контролю того, чи увімкнено локальну автентифікацію (тобто використання ключів Shared Access Signature (SAS)) для вашого простору імен Service Bus. Ось що вам потрібно знати:
- Коли встановлено в true: Локальна автентифікація за допомогою ключів SAS вимкнена, і дозволена автентифікація через Azure Active Directory (Azure AD).
- Коли встановлено в false: Доступні як SAS (локальна) автентифікація, так і автентифікація Azure AD, і ви можете використовувати рядки підключення з ключами SAS для доступу до ресурсів Service Bus.
Enumeration
{{#tabs }} {{#tab name="az cli" }}
# 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>
{{#endtab }}
{{#tab name="Az Powershell" }}
Get-Command -Module Az.ServiceBus
# Retrieves details of a Service Bus namespace, including V2-specific features like additional metrics or configurations.
Get-AzServiceBusNamespaceV2 -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
# Retrieves the authorization rules for a Service Bus namespace, queue, or topic.
Get-AzServiceBusAuthorizationRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves the Geo-Disaster Recovery configuration for a Service Bus namespace, if it is enabled.
Get-AzServiceBusGeoDRConfiguration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves the shared access keys for a specified authorization rule in a Service Bus namespace.
Get-AzServiceBusKey -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <RuleName>
# Retrieves the migration state and details for a Service Bus namespace, if a migration is in progress.
Get-AzServiceBusMigration -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves properties and details about a Service Bus namespace.
Get-AzServiceBusNamespace -ResourceGroupName <ResourceGroupName> -Name <NamespaceName>
# Retrieves the network rule set for a Service Bus namespace, such as IP restrictions or virtual network access rules.
Get-AzServiceBusNetworkRuleSet -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves private endpoint connections for a Service Bus namespace.
Get-AzServiceBusPrivateEndpointConnection -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves private link resources associated with a Service Bus namespace.
Get-AzServiceBusPrivateLink -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
# Retrieves details of a specified queue in a Service Bus namespace.
Get-AzServiceBusQueue -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -Name <QueueName>
# Retrieves rules (filters and actions) for a subscription under a Service Bus topic.
Get-AzServiceBusRule -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName> -SubscriptionName <SubscriptionName>
# Retrieves details of subscriptions for a specified Service Bus topic.
Get-AzServiceBusSubscription -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName> -TopicName <TopicName>
# Retrieves details of a specified topic in a Service Bus namespace.
Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
{{#endtab }} {{#endtabs }}
Підвищення Привілеїв
{{#ref}} ../az-privilege-escalation/az-servicebus-privesc.md {{#endref}}
Постексплуатація
{{#ref}} ../az-post-exploitation/az-servicebus-post-exploitation.md {{#endref}}
Посилання
- https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0
- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview
- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli
{{#include ../../../banners/hacktricks-training.md}}