Az - Service Bus Enum

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Service Bus

Azure Service Bus to oparta na chmurze usługa komunikacyjna, zaprojektowana w celu umożliwienia niezawodnej komunikacji między różnymi częściami aplikacji lub oddzielnymi aplikacjami. Działa jako bezpieczny pośrednik, zapewniając, że wiadomości są bezpiecznie dostarczane, nawet jeśli nadawca i odbiorca nie działają jednocześnie. Dzięki odseparowaniu systemów, pozwala aplikacjom działać niezależnie, jednocześnie wymieniając dane lub instrukcje. Jest szczególnie przydatna w scenariuszach wymagających równoważenia obciążenia między wieloma pracownikami, niezawodnego dostarczania wiadomości lub złożonej koordynacji, takiej jak przetwarzanie zadań w kolejności lub bezpieczne zarządzanie dostępem.

Kluczowe pojęcia

  1. Namespaces: Przestrzeń nazw w systemach komunikacyjnych to logiczny kontener, który organizuje i zarządza komponentami komunikacyjnymi, kolejkami i tematami. Zapewnia izolowane środowisko, w którym aplikacje mogą wysyłać, odbierać i przetwarzać wiadomości. Kolejki i tematy dzielą tę samą infrastrukturę i konfigurację w obrębie przestrzeni nazw Service Bus, ale działają niezależnie, nie wchodząc w interakcje ze sobą.
  2. Queues: jej celem jest przechowywanie wiadomości, aż odbiorca będzie gotowy.
  • Wiadomości są uporządkowane, opatrzone znacznikami czasu i trwale przechowywane.
  • Dostarczane w trybie pull (na żądanie) do jednego konsumenta.
  • Może być skonfigurowana tak, aby po udostępnieniu wiadomości była automatycznie usuwana lub w trybie „Peek lock”, gdzie konsument musi potwierdzić, że może zostać usunięta. W przeciwnym razie wiadomość wróci do kolejki.
  • Obsługuje komunikację punkt-punkt.
  1. Topics: Komunikacja publish-subscribe do nadawania.
  • Wiele niezależnych subskrypcji otrzymuje kopie wiadomości.
  • Każda subskrypcja jest jak kolejka wewnątrz tematu.
  • Subskrypcje mogą mieć zasady/filtry do kontrolowania dostarczania lub dodawania metadanych.

Endpoint/ciąg połączenia usługi bus to:

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

Zaawansowane funkcje

Niektóre zaawansowane funkcje to:

  • Sesje wiadomości: Zapewnia przetwarzanie FIFO i wspiera wzorce żądanie-odpowiedź.
  • Automatyczne przekazywanie: Przenosi wiadomości między kolejkami lub tematami w tej samej przestrzeni nazw.
  • Dead-Lettering: Zbiera wiadomości, które nie mogą być dostarczone do przeglądu.
  • Zaplanuje dostawę: Opóźnia przetwarzanie wiadomości na przyszłe zadania.
  • Odwlekanie wiadomości: Odkłada pobieranie wiadomości do momentu, gdy będzie to możliwe.
  • Transakcje: Grupuje operacje w atomowe wykonanie.
  • Filtry i akcje: Stosuje zasady do filtrowania lub adnotacji wiadomości.
  • Automatyczne usuwanie po bezczynności: Usuwa kolejki po braku aktywności (min: 5 minut).
  • Wykrywanie duplikatów: Usuwa duplikaty wiadomości podczas ponownych wysyłek.
  • Usuwanie wsadowe: Masowo usuwa wygasłe lub niepotrzebne wiadomości.

Uwierzytelnianie lokalne

Parametr --disable-local-auth z az cli służy do kontrolowania, czy uwierzytelnianie lokalne (pozwalające na użycie kluczy Shared Access Signature (SAS)) jest włączone dla Twojej przestrzeni nazw Service Bus.

  • Gdy disable jest ustawione na true: Uwierzytelnianie lokalne przy użyciu kluczy SAS jest wyłączone, a uwierzytelnianie Entra ID jest dozwolone.
  • Gdy disable jest ustawione na false (domyślnie): Zarówno uwierzytelnianie lokalne SAS, jak i uwierzytelnianie Entra ID są dostępne, a Ty możesz używać ciągów połączeń z kluczami SAS do uzyskiwania dostępu do zasobów Service Bus.

Reguła autoryzacji / Polityka SAS

Polityki SAS definiują uprawnienia dostępu do jednostek Azure Service Bus w przestrzeni nazw (najważniejsza), kolejek i tematów. Każda polityka ma następujące komponenty:

  • Uprawnienia: Pola wyboru do określenia poziomów dostępu:
  • Zarządzaj: Przyznaje pełną kontrolę nad jednostką, w tym zarządzanie konfiguracją i uprawnieniami.
  • Wyślij: Pozwala na wysyłanie wiadomości do jednostki.
  • Słuchaj: Pozwala na odbieranie wiadomości z jednostki.
  • Klucze główne i pomocnicze: To klucze kryptograficzne używane do generowania bezpiecznych tokenów do uwierzytelniania dostępu.
  • Ciągi połączeń główne i pomocnicze: Wstępnie skonfigurowane ciągi połączeń, które zawierają punkt końcowy i klucz do łatwego użycia w aplikacjach.
  • ID polityki SAS ARM: Ścieżka Azure Resource Manager (ARM) do polityki w celu identyfikacji programowej.

Ważne jest, aby zauważyć, że przestrzeń nazw ma jedną politykę SAS, która wpływa na każdą jednostkę w jej obrębie, podczas gdy kolejki i tematy mogą mieć swoje własne indywidualne polityki SAS dla bardziej szczegółowej kontroli.

Enumeracja

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

Eskalacja Uprawnień

Az - Service Bus Privesc

Po Eksploatacji

Az - Service Bus Post Exploitation

Odniesienia

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks