Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-15 03:25:10 +00:00
parent 3821daf9e9
commit f93a199017
2 changed files with 99 additions and 31 deletions
@@ -10,9 +10,81 @@
../az-services/az-servicebus-enum.md
{{#endref}}
### 메시지 전송. 작업: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` 또는 `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action OR Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action
`PrimaryConnectionString`을 검색할 수 있으며, 이는 Service Bus 네임스페이스의 자격 증명 역할을 합니다. 이 연결 문자열을 사용하여 Service Bus 네임스페이스로 완전히 인증할 수 있으며, 이를 통해 모든 큐나 주제에 메시지를 전송하 시스템과 상호작용하여 운영을 방해하거나 유효한 사용자를 가장하거나 메시징 워크플로우에 악성 데이터를 주입할 수 있습니다.
이 권한은 Service Bus 네임스페이스 내의 로컬 권한 규칙에 대한 키를 가져오거나 재생성할 수 있게 해줍니다. 이 키를 사용하여 Service Bus 네임스페이스로 인증할 수 있으며, 이를 통해 모든 큐나 주제에 메시지를 전송하거나, 모든 큐나 구독에서 메시지를 수신하거나, 시스템과 상호작용하여 운영을 방해하거나, 유효한 사용자를 가장하거나, 메시징 워크플로우에 악성 데이터를 주입할 수 있습니다.
기본적으로 **`RootManageSharedAccessKey` 규칙은** Service Bus 네임스페이스에 대한 전체 제어 권한을 가지며, `az` cli에서 사용됩니다. 그러나 다른 키 값이 있는 다른 규칙이 존재할 수 있습니다.
```bash
# List keys
az servicebus namespace authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --authorization-rule-name RootManageSharedAccessKey [--authorization-rule-name RootManageSharedAccessKey]
# Regenerate keys
az servicebus namespace authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <namespace-name> [--authorization-rule-name RootManageSharedAccessKey]
```
### Microsoft.ServiceBus/namespaces/AuthorizationRules/write
이 권한을 사용하면 **모든 권한과 자체 키를 가진 새로운 권한 규칙을 생성**할 수 있습니다:
```bash
az servicebus namespace authorization-rule create --authorization-rule-name "myRule" --namespace-name mynamespacespdemo --resource-group Resource_Group_1 --rights Manage Listen Send
```
>[!WARNING]
>이 명령은 키로 응답하지 않으므로 권한 상승을 위해 이전 명령(및 권한)으로 키를 가져와야 합니다.
또한, 해당 명령(`Microsoft.ServiceBus/namespaces/authorizationRules/read`)을 사용하여 Azure CLI를 통해 이 작업을 수행하면 기존 권한 규칙을 업데이트하고 다음 명령으로 더 많은 권한을 부여할 수 있습니다(부족한 경우).
```bash
az servicebus namespace authorization-rule update \
--resource-group <MyResourceGroup> \
--namespace-name <MyNamespace> \
--name RootManageSharedAccessKey \
--rights Manage Listen Send
```
### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action OR Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action
Service Bus 네임스페이스 내의 특정 주제와 큐는 자체 권한 부여 규칙을 가질 수 있으며, 이를 통해 엔터티에 대한 액세스를 제어할 수 있습니다. 이러한 권한을 통해 **이러한 로컬 권한 부여 규칙의 키를 검색하거나 재생성할 수 있으며**, 이를 통해 엔터티로 인증하고 메시지를 보내거나 받을 수 있으며, 구독을 관리하거나 시스템과 상호작용하여 운영을 방해하거나 유효한 사용자를 가장하거나 메시징 워크플로에 악성 데이터를 주입할 수 있습니다.
```bash
# List keys (topics)
az servicebus topic authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name>
# Regenerate keys (topics)
az servicebus topic authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name>
# List keys (queues)
az servicebus queue authorization-rule keys list --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name>
# Regenerate keys (queues)
az servicebus queue authorization-rule keys renew --key [PrimaryKey|SecondaryKey] --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name>
```
### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/write
이 권한을 사용하면 **모든 권한과 자체 키를 가진 새로운 권한 규칙을 생성**할 수 있습니다:
```bash
# In a topic
az servicebus topic authorization-rule create --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name> --rights Manage Listen Send
# In a queue
az servicebus queue authorization-rule create --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name> --rights Manage Listen Send
```
>[!WARNING]
>이 명령은 키로 응답하지 않으므로 권한 상승을 위해 이전 명령(및 권한)으로 키를 가져와야 합니다.
또한, 해당 명령(`Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`)을 통해 Azure CLI를 사용하여 이 작업을 수행하면 기존 권한 규칙을 업데이트하고 다음 명령으로 더 많은 권한을 부여할 수 있습니다(부족한 경우).
```bash
# In a topic
az servicebus topic authorization-rule update --resource-group <res-group> --namespace-name <namespace-name> --topic-name <topic-name> --name <auth-rule-name> --rights Manage Listen Send
# In a queue
az servicebus queue authorization-rule update --resource-group <res-group> --namespace-name <namespace-name> --queue-name <queue-name> --name <auth-rule-name> --rights Manage Listen Send
```
### Microsoft.ServiceBus/namespaces/write (& Microsoft.ServiceBus/namespaces/read if az cli is used)
이 권한을 통해 **공격자는 다음 명령어로 "로컬 인증"을 다시 활성화할 수 있습니다**. 따라서 모든 공유 정책의 키가 작동합니다.
```bash
az servicebus namespace update --disable-local-auth false -n <namespace-name> --resource-group <res-group>
```
### Send Messages with keys (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action)
`PrimaryConnectionString`를 검색할 수 있으며, 이는 Service Bus 네임스페이스의 자격 증명 역할을 합니다. 이 연결 문자열을 사용하여 Service Bus 네임스페이스로 완전히 인증할 수 있으며, 이를 통해 모든 큐나 주제에 메시지를 전송하고 시스템과 상호작용하여 운영을 방해하거나 유효한 사용자를 가장하거나 메시징 워크플로우에 악성 데이터를 주입할 수 있습니다.
```python
#You need to install the following libraries
#pip install azure-servicebus
@@ -81,9 +153,9 @@ print("Messages Sent")
print("----------------------------")
```
### 메시지 수신. 작업: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` 또는 `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
### Recieve with keys (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action)
PrimaryConnectionString 검색할 수 있으며, 이는 Service Bus 네임스페이스의 자격 증명으로 사용됩니다. 이 연결 문자열을 사용하여 네임스페이스 내의 모든 큐 또는 구독에서 메시지를 수신할 수 있으며, 이는 잠재적으로 민감하거나 중요한 데이터에 대한 접근을 허용하고, 데이터 유출을 가능하게 하거나 메시지 처리 및 애플리케이션 워크플로에 간섭할 수 있습니다.
PrimaryConnectionString 검색할 수 있으며, 이는 Service Bus 네임스페이스의 자격 증명 역할을 합니다. 이 연결 문자열을 사용하여 네임스페이스 내의 모든 큐 또는 구독에서 메시지를 수신할 수 있으며, 이는 잠재적으로 민감하거나 중요한 데이터에 대한 접근을 허용하고, 데이터 유출을 가능하게 하거나, 메시지 처리 및 애플리케이션 워크플로에 간섭할 수 있습니다.
```python
#You need to install the following libraries
#pip install azure-servicebus
@@ -127,16 +199,6 @@ asyncio.run(receive_and_process_messages())
print("Message Receiving Completed")
print("----------------------------")
```
### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write`
이 권한이 있으면 공유 액세스 키를 읽거나 생성하여 권한을 상승시킬 수 있습니다. 이러한 키는 Service Bus 네임스페이스에 대한 전체 제어를 허용하며, 큐, 주제 관리 및 메시지 송수신을 포함하여 역할 기반 액세스 제어(RBAC)를 우회할 수 있습니다.
```bash
az servicebus namespace authorization-rule update \
--resource-group <MyResourceGroup> \
--namespace-name <MyNamespace> \
--name RootManageSharedAccessKey \
--rights Manage Listen Send
```
## References
- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues
@@ -9,14 +9,14 @@ Azure Service Bus는 **애플리케이션의 다양한 부분 또는 별도의
### Key Concepts
1. **Queues:** 그 목적은 수신자가 준비될 때까지 메시지를 저장하는 것입니다.
- 메시지는 순서가 있으며, 타임스탬프가 찍히고, 내구성이 있게 저장됩니다.
- 풀 모드(요청 시 검색)로 전달됩니다.
- 메시지는 순서가 있으며, 타임스탬프가 고, 내구성이 있게 저장됩니다.
- 풀 모드(온디맨드 검색)로 전달됩니다.
- 포인트 투 포인트 통신을 지원합니다.
2. **Topics:** 방송을 위한 게시-구독 메시징입니다.
2. **Topics:** 방송을 위한 게시-구독 메시징.
- 여러 독립적인 구독이 메시지의 복사본을 수신합니다.
- 구독은 전달을 제어하거나 메타데이터를 추가하기 위한 규칙/필터를 가질 수 있습니다.
- 다대다 통신을 지원합니다.
3. **Namespaces:** 모든 메시징 구성 요소, 큐 및 주제를 위한 컨테이너로, 강력한 Azure 클러스터의 자신의 조각과 같으며, 전용 용량을 제공하고 선택적으로 세 개의 가용성 영역에 걸쳐 확장할 수 있습니다.
3. **Namespaces:** 모든 메시징 구성 요소, 큐 및 주제를 위한 컨테이너로, 강력한 Azure 클러스터의 자신의 슬라이스와 같으며, 전용 용량을 제공하고 선택적으로 세 개의 가용성 영역에 걸쳐 있습니다.
### Advance Features
@@ -25,7 +25,7 @@ Azure Service Bus는 **애플리케이션의 다양한 부분 또는 별도의
- **Message Sessions**: FIFO 처리를 보장하고 요청-응답 패턴을 지원합니다.
- **Auto-Forwarding**: 동일한 네임스페이스 내에서 큐 또는 주제 간에 메시지를 전송합니다.
- **Dead-Lettering**: 배달할 수 없는 메시지를 검토를 위해 캡처합니다.
- **Scheduled Delivery**: 미래 작업을 위해 메시지 처리를 지연시킵니다.
- **Scheduled Delivery**: 미래 작업을 위해 메시지 처리를 지연시킵니다.
- **Message Deferral**: 준비될 때까지 메시지 검색을 연기합니다.
- **Transactions**: 작업을 원자적 실행으로 그룹화합니다.
- **Filters & Actions**: 메시지를 필터링하거나 주석을 추가하기 위한 규칙을 적용합니다.
@@ -54,18 +54,6 @@ sku, authrorization rule,
{{#tabs }}
{{#tab name="az cli" }}
```bash
# 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>
# Namespace Enumeration
az servicebus namespace list
az servicebus namespace network-rule-set list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
@@ -79,6 +67,23 @@ az servicebus namespace authorization-rule list --resource-group <MyResourceGrou
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 }}
@@ -128,6 +133,7 @@ Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <Nam
{{#endtab }}
{{#endtabs }}
### 권한 상승
{{#ref}}