Az - Service Bus Enum
Reading time: 7 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Service Bus
Azure Service Bus는 **애플리케이션의 다양한 부분 또는 별도의 애플리케이션 간의 신뢰할 수 있는 **통신을 가능하게 하기 위해 설계된 클라우드 기반 메시징 서비스입니다. 이는 안전한 중개자로 작용하여 발신자와 수신자가 동시에 작동하지 않더라도 메시지가 안전하게 전달되도록 보장합니다. 시스템을 분리함으로써 애플리케이션이 독립적으로 작동하면서도 데이터를 교환하거나 지시를 수행할 수 있게 합니다. 이는 여러 작업자 간의 부하 분산, 신뢰할 수 있는 메시지 전달 또는 작업을 순서대로 처리하거나 안전하게 액세스를 관리하는 것과 같은 복잡한 조정이 필요한 시나리오에 특히 유용합니다.
Key Concepts
- Namespaces: 메시징 시스템에서 네임스페이스는 메시징 구성 요소, 큐 및 주제를 조직하고 관리하는 논리적 컨테이너입니다. 이는 애플리케이션이 메시지를 보내고, 받고, 처리할 수 있는 격리된 환경을 제공합니다. 큐와 주제는 Service Bus 네임스페이스 내에서 동일한 인프라와 구성을 공유하지만 서로 상호작용하지 않고 독립적으로 작동합니다.
- Queues: 그 목적은 수신자가 준비될 때까지 메시지를 저장하는 것입니다.
- 메시지는 정렬되고, 타임스탬프가 찍히며, 내구성 있게 저장됩니다.
- 하나의 소비자에게 풀 모드(온디맨드 검색)로 전달됩니다.
- 메시지가 공유될 때 자동으로 삭제되도록 구성할 수 있거나, 소비자가 삭제할 수 있음을 확인해야 하는 "Peek lock" 모드로 설정할 수 있습니다. 그렇지 않으면 메시지는 큐로 돌아갑니다.
- 포인트 투 포인트 통신을 지원합니다.
- Topics: 방송을 위한 게시-구독 메시징입니다.
- 여러 독립적인 구독이 메시지의 복사본을 받습니다.
- 각 구독은 주제 내의 큐와 같습니다.
- 구독은 전달을 제어하거나 메타데이터를 추가하기 위한 규칙/필터를 가질 수 있습니다.
The service bus endpoint/connection string is:
https://<namespace>.servicebus.windows.net:443/
고급 기능
일부 고급 기능은 다음과 같습니다:
- 메시지 세션: FIFO 처리를 보장하고 요청-응답 패턴을 지원합니다.
- 자동 전달: 동일한 네임스페이스 내에서 큐 또는 주제 간에 메시지를 전송합니다.
- 데드 레터링: 배달할 수 없는 메시지를 검토를 위해 캡처합니다.
- 예약된 배달: 미래 작업을 위해 메시지 처리를 지연시킵니다.
- 메시지 연기: 준비될 때까지 메시지 검색을 연기합니다.
- 트랜잭션: 작업을 원자 실행으로 그룹화합니다.
- 필터 및 작업: 메시지를 필터링하거나 주석을 달기 위한 규칙을 적용합니다.
- 유휴 시 자동 삭제: 비활성 상태에서 큐를 삭제합니다(최소: 5분).
- 중복 감지: 재전송 중 중복 메시지를 제거합니다.
- 배치 삭제: 만료되거나 불필요한 메시지를 대량으로 삭제합니다.
로컬 인증
az cli 매개변수의 **--disable-local-auth
**는 로컬 인증(공유 액세스 서명(SAS) 키 사용 허용)이 서비스 버스 네임스페이스에 대해 활성화되어 있는지 제어하는 데 사용됩니다.
- disable이 true로 설정되면: SAS 키를 사용하는 로컬 인증이 비활성화되고 Entra ID 인증이 허용됩니다.
- disable이 **false (기본값)**로 설정되면: SAS 로컬 인증과 Entra ID 인증이 모두 사용 가능하며, SAS 키가 포함된 연결 문자열을 사용하여 서비스 버스 리소스에 접근할 수 있습니다.
권한 규칙 / SAS 정책
SAS 정책은 Azure Service Bus 엔터티 네임스페이스(가장 중요한 것), 큐 및 주제에 대한 액세스 권한을 정의합니다. 각 정책은 다음 구성 요소를 포함합니다:
- 권한: 액세스 수준을 지정하는 체크박스:
- 관리: 엔터티에 대한 전체 제어를 부여하며, 구성 및 권한 관리를 포함합니다.
- 전송: 엔터티에 메시지를 전송할 수 있습니다.
- 수신: 엔터티로부터 메시지를 수신할 수 있습니다.
- 기본 및 보조 키: 액세스 인증을 위한 보안 토큰 생성을 위해 사용되는 암호화 키입니다.
- 기본 및 보조 연결 문자열: 애플리케이션에서 쉽게 사용할 수 있도록 엔드포인트와 키를 포함한 미리 구성된 연결 문자열입니다.
- SAS 정책 ARM ID: 프로그래밍적 식별을 위한 정책의 Azure Resource Manager (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 Post Exploitation
참조
- 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
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.