From f8edb2537e64fbc2d3a926b1f9b2fbd0d5b60981 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 26 Jan 2025 10:45:13 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes --- src/pentesting-cloud/azure-security/README.md | 62 +++++++++++++------ .../az-privilege-escalation/README.md | 1 - .../az-storage-unauth.md | 41 ++++++++++++ 3 files changed, 85 insertions(+), 19 deletions(-) delete mode 100644 src/pentesting-cloud/azure-security/az-privilege-escalation/README.md create mode 100644 src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index b5733957c..2d2304586 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -4,7 +4,7 @@ ## 基本情報 -以下のページでAzureとEntra IDの基本を学びましょう: +AzureとEntra IDの基本を以下のページで学びましょう: {{#ref}} az-basic-information/ @@ -20,9 +20,9 @@ AZURE環境を監査するためには、**どのサービスが使用されて 最初のステップは、もちろん攻撃しているテナントに関する情報を列挙し、足がかりを得ることです。 -ドメイン名に基づいて、**会社がAzureを使用しているかどうか**、**テナントID**、同じテナント内の他の**有効なドメイン**(もしあれば)を取得し、SSOが有効かどうか、メール設定、有効なユーザーのメールアドレスなどの**関連情報**を取得することが可能です。 +ドメイン名に基づいて、**会社がAzureを使用しているかどうか**を知り、**テナントID**を取得し、同じテナント内の他の**有効なドメイン**(もしあれば)を取得し、SSOが有効かどうか、メール設定、有効なユーザーのメールアドレスなどの**関連情報**を取得することが可能です。 -以下のページを確認して、**外部列挙**を実行する方法を学びましょう: +**外部列挙**を実行する方法については、以下のページを確認してください: {{#ref}} az-unauthenticated-enum-and-initial-entry/ @@ -37,7 +37,8 @@ az-unauthenticated-enum-and-initial-entry/ - 第三者の**侵害** - Azureホストアプリケーションの脆弱性 - [**サーバーサイドリクエストフォージェリ**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html)でメタデータエンドポイントにアクセス -- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)のような**サブドメインの乗っ取り** +- **サブドメインの乗っ取り** [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/) +- **他のAzureサービスの誤設定** - 開発者のラップトップが侵害されている場合([WinPEASとLinPEAS](https://github.com/peass-ng/PEASS-ng)がこの情報を見つけることができます): - **`/.Azure`**内 - **`azureProfile.json`**には過去のログインユーザーに関する情報が含まれています @@ -49,13 +50,19 @@ az-unauthenticated-enum-and-initial-entry/ - 読み込む:`with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)` - **`AzureRmContext.json`**にはAz PowerShellを使用した以前のログインに関する情報が含まれています(ただし資格情報は含まれていません) - **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`**内には、ユーザーのDPAPIで暗号化された**アクセストークン**、IDトークン、アカウント情報を含むいくつかの`.bin`ファイルがあります。 -- **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`**内の`.tbres`ファイルにも、DPAPIで暗号化されたアクセストークンを含むbase64が含まれています。 -- LinuxおよびmacOSでは、Az PowerShell(使用されている場合)から**アクセストークン、リフレッシュトークン、IDトークン**を取得できます。コマンドを実行:`pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` +- **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`**内の`.tbres`ファイルには、DPAPIで暗号化されたアクセストークンを含むbase64が含まれています。 +- LinuxおよびmacOSでは、Az PowerShell(使用されている場合)から**アクセストークン、リフレッシュトークン、IDトークン**を取得できます。`pwsh -Command "Save-AzContext -Path /tmp/az-context.json"`を実行します。 - Windowsでは、これによりIDトークンのみが生成されます。 - LinuxおよびmacOSでAz PowerShellが使用されたかどうかを確認するには、`$HOME/.local/share/.IdentityService/`が存在するかどうかを確認します(ただし、含まれるファイルは空で無用です)。 +以下のページで**他のAzureサービスの誤設定**を見つけて、足がかりを得ることができます: + +{{#ref}} +az-unauthenticated-enum-and-initial-entry/ +{{#endref}} + > [!NOTE] -> 通常、列挙の**最も騒がしい**部分は**ログイン**であり、列挙自体ではないことを忘れないでください。 +> 通常、列挙の**最も騒がしい**部分は**ログイン**であり、列挙自体ではないことを覚えておいてください。 ### Azure & Entra IDツール @@ -69,7 +76,7 @@ az-enumeration-tools.md
-有効な資格情報があるがログインできない場合、以下は考えられる一般的な保護です: +有効な資格情報があるがログインできない場合、以下のような一般的な保護が存在する可能性があります: - **IPホワイトリスト** -- 有効なIPを侵害する必要があります - **地理的制限** -- ユーザーの居住地や会社のオフィスの場所を見つけ、同じ都市(または少なくとも国)からIPを取得します @@ -81,7 +88,7 @@ az-enumeration-tools.md ### Whoami > [!CAUTION] -> [**Az - Entra ID**](az-services/az-azuread.md)セクションでaz cli、AzureAD、Az PowerShellの**インストール方法**を学びましょう。 +> [**Az - Entra ID**](az-services/az-azuread.md)セクションでaz cli、AzureAD、Az PowerShellの**インストール方法**を学んでください。 最初に知っておくべきことは、**自分が誰であるか**(どの環境にいるか)です: @@ -130,7 +137,7 @@ Get-AzureADTenantDetail ### Entra ID 列挙と特権昇格 -デフォルトでは、任意のユーザーは **ユーザー、グループ、役割、サービスプリンシパルなどを列挙するのに十分な権限を持つべきです**([デフォルトの AzureAD 権限](az-basic-information/index.html#default-user-permissions)を確認してください)。\ +デフォルトでは、任意のユーザーは **ユーザー、グループ、役割、サービスプリンシパルなどを列挙するのに十分な権限を持っているはずです**([デフォルトの AzureAD 権限](az-basic-information/index.html#default-user-permissions)を確認してください)。\ ここにガイドがあります: {{#ref}} @@ -148,35 +155,54 @@ az-enumeration-tools.md#automated-post-exploitation-tools 自分が誰であるかを知ったら、**アクセスできる Azure サービスを列挙し始めることができます**。 +まず、**リソースに対する権限を確認する**必要があります。これには: + +1. **アクセスできるリソースを見つける**: + Az PowerShell コマンド **`Get-AzResource`** を使用すると、**現在のユーザーが可視性を持つリソースを知ることができます**。 -さらに、**ウェブコンソール**で同じ情報を取得するには、[https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) にアクセスするか、「すべてのリソース」を検索するか、次のコマンドを実行します: `az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01"` +さらに、**ウェブコンソール**で同じ情報を取得するには、[https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) にアクセスするか、「すべてのリソース」を検索するか、次のコマンドを実行します:`az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01"` -さらに、十分な権限があれば、役割 **`Get-AzRoleAssignment`** を使用して、サブスクリプション内の **すべての役割を列挙する**ことや、特定のリソースに対する権限を示すことができます。例えば: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`** +2. **アクセスできるリソースに対する権限を見つけ、あなたに割り当てられた役割を確認する**: -次のセクションでは、最も一般的な Azure サービスとそれらを列挙する方法についての情報を見つけることができます: +このアクションを実行するには、**`Microsoft.Authorization/roleAssignments/read`** の権限が必要です。 + +さらに、十分な権限があれば、役割 **`Get-AzRoleAssignment`** を使用して、サブスクリプション内の**すべての役割を列挙する**ことができます。または、特定のリソースに対する権限を次のように指定して確認できます:**`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**。 + +この情報は、次のコマンドを実行することでも取得できます:**`az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** 例えば: + +- **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** + +3. **あなたに付与された役割の詳細な権限を見つける**: + +次に、詳細な権限を取得するには、**`(Get-AzRoleDefinition -Id "").Actions`** を実行できます。 + +または、API を直接呼び出して、**`az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?api-version=2020-08-01-preview" | jq ".properties"`** を実行できます。 + + +次のセクションでは、**最も一般的な Azure サービスとそれらを列挙する方法に関する情報**を見つけることができます: {{#ref}} az-services/ {{#endref}} -### Azure サービスにおける特権昇格、ポストエクスプロイトおよび持続性 +### Azure サービスにおける特権昇格、ポストエクスプロイテーションおよび持続性 -Azure 環境の構造と使用されているサービスを理解したら、**特権を昇格させたり、横移動したり、他のポストエクスプロイト攻撃を実行したり、持続性を維持する方法を探し始めることができます**。 +Azure 環境の構造と使用されているサービスを理解したら、**特権を昇格させたり、横移動したり、他のポストエクスプロイテーション攻撃を実行したり、持続性を維持する方法を探し始めることができます**。 -次のセクションでは、最も一般的な Azure サービスで特権を昇格させる方法についての情報を見つけることができます: +次のセクションでは、最も一般的な Azure サービスで特権を昇格させる方法に関する情報を見つけることができます: {{#ref}} az-privilege-escalation/ {{#endref}} -次のセクションでは、最も一般的な Azure サービスでポストエクスプロイト攻撃を実行する方法についての情報を見つけることができます: +次のセクションでは、最も一般的な Azure サービスでポストエクスプロイテーション攻撃を実行する方法に関する情報を見つけることができます: {{#ref}} az-post-exploitation/ {{#endref}} -次のセクションでは、最も一般的な Azure サービスで持続性を維持する方法についての情報を見つけることができます: +次のセクションでは、最も一般的な Azure サービスで持続性を維持する方法に関する情報を見つけることができます: {{#ref}} az-persistence/ diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/README.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/README.md deleted file mode 100644 index 9e8a59229..000000000 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/README.md +++ /dev/null @@ -1 +0,0 @@ -# Az - 権限昇格 diff --git a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md new file mode 100644 index 000000000..c15de9381 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md @@ -0,0 +1,41 @@ +# Az - Storage Unauth + +{{#include ../../../banners/hacktricks-training.md}} + +## Storage Unauth + +ストレージに関する詳細情報は、以下を確認してください: + +{{#ref}} +../az-services/az-storage.md +{{#endref}} + +### Open Storage + +[**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1)のようなツールを使用して、オープンストレージを発見することができます。このツールは、**`Microburst/Misc/permutations.txt`**ファイルを使用して、オープンストレージアカウントを**見つける**ための非常にシンプルな順列を生成します。 +```bash +Import-Module .\MicroBurst\MicroBurst.psm1 +Invoke-EnumerateAzureBlobs -Base corp +[...] +https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list +[...] + +# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list +# Check: ssh_info.json +# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json +``` +この目的のために、[**MicroBust**](https://github.com/NetSPI/MicroBurst) のメソッドを使用することもできます。この関数は、いくつかの **azure domains**(ストレージドメインを含む)でベースドメイン名(およびいくつかの変種)を検索します: +```bash +Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose +Invoke-EnumerateAzureSubDomains -Base corp -Verbose +``` +### SAS URLs + +_**共有アクセス署名**_ (SAS) URLは、特定のストレージアカウントの一部(完全なコンテナやファイルなど)へのアクセスを**提供する**URLであり、リソースに対する特定の権限(読み取り、書き込みなど)を持っています。漏洩した場合、機密情報にアクセスできる可能性があります。これらは次のようになります(これはコンテナにアクセスするためのもので、ファイルへのアクセスを許可するだけの場合、URLのパスにもそのファイルが含まれます): + +`https://.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D` + +[**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/)を使用してデータにアクセスします + + +{{#include ../../../banners/hacktricks-training.md}}