mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-16 06:42:39 -08:00
Translated ['src/pentesting-cloud/azure-security/README.md'] to ja
This commit is contained in:
@@ -12,9 +12,9 @@ az-basic-information/
|
||||
|
||||
## Azureペンテスター/レッドチームの方法論
|
||||
|
||||
AZURE環境を監査するためには、**どのサービスが使用されているか**、**何が公開されているか**、**誰が何にアクセスできるか**、および内部Azureサービスと**外部サービス**がどのように接続されているかを知ることが非常に重要です。
|
||||
AZURE環境を監査するためには、どの**サービスが使用されているか**、何が**公開されているか**、誰が**何にアクセスできるか**、内部のAzureサービスと**外部サービス**がどのように接続されているかを知ることが非常に重要です。
|
||||
|
||||
レッドチームの観点から、**Azure環境を侵害するための最初のステップ**は、いくつかの**足がかり**を得ることです。
|
||||
レッドチームの観点から、Azure環境を侵害するための**最初のステップ**は、いくつかの**足がかり**を得ることです。
|
||||
|
||||
### 外部列挙と初期アクセス
|
||||
|
||||
@@ -31,29 +31,29 @@ az-unauthenticated-enum-and-initial-entry/
|
||||
この情報をもとに、足がかりを得るための最も一般的な方法は次のとおりです:
|
||||
- **OSINT**: GitHubやその他のオープンソースプラットフォームで**漏洩**をチェックし、**資格情報**や興味深い情報を探します。
|
||||
- **パスワード**の再利用、漏洩、または[パスワードスプレー](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
- 従業員の資格情報を購入
|
||||
- 従業員の資格情報を購入する
|
||||
- [**一般的なフィッシング**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html)(資格情報またはOauthアプリ)
|
||||
- [デバイスコード認証フィッシング](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- 第三者の**侵害**
|
||||
- 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)がこの情報を見つけることができます):
|
||||
- 開発者のラップトップが侵害されている場合([WinPEASとLinPEAS](https://github.com/peass-ng/PEASS-ng)がこの情報を見つけることができます):
|
||||
- **`<HOME>/.Azure`**内
|
||||
- **`azureProfile.json`**には過去のログインユーザーに関する情報が含まれています
|
||||
- **`clouds.config`には**サブスクリプションに関する情報が含まれています
|
||||
- **`clouds.config`**にはサブスクリプションに関する情報が含まれています
|
||||
- **`service_principal_entries.json`**にはアプリケーションの資格情報(テナントID、クライアント、シークレット)が含まれています。LinuxおよびmacOSのみ
|
||||
- **`msal_token_cache.json`**にはアクセストークンとリフレッシュトークンが含まれています。LinuxおよびmacOSのみ
|
||||
- **`service_principal_entries.bin`**とmsal_token_cache.binはWindowsで使用され、DPAPIで暗号化されています
|
||||
- **`service_principal_entries.bin`**と**msal_token_cache.bin**はWindowsで使用され、DPAPIで暗号化されています
|
||||
- **`msal_http_cache.bin`**はHTTPリクエストのキャッシュです
|
||||
- 読み込む:`with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
|
||||
- **`AzureRmContext.json`**にはAz PowerShellを使用した以前のログインに関する情報が含まれています(ただし資格情報は含まれていません)
|
||||
- **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`**内には、ユーザーのDPAPIで暗号化された**アクセストークン**、IDトークン、アカウント情報を含むいくつかの`.bin`ファイルがあります。
|
||||
- **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`**内の`.tbres`ファイルに、DPAPIで暗号化されたアクセストークンを含むbase64が含まれています。
|
||||
- LinuxおよびmacOSでは、Az PowerShell(使用されている場合)から`pwsh -Command "Save-AzContext -Path /tmp/az-context.json"`を実行して**アクセストークン、リフレッシュトークン、IDトークン**を取得できます。
|
||||
- **`C:\Users\<username>\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/`が存在するかどうかを確認します(ただし、含まれるファイルは空で無用です)。
|
||||
- LinuxおよびmacOSでAz PowerShellが使用されたかどうかを確認するには、`$HOME/.local/share/.IdentityService/`が存在するかどうかを確認します(ただし、含まれるファイルは空で無用です)
|
||||
|
||||
以下のページで**他のAzureサービスの誤設定**を見つけて、足がかりを得ることができます:
|
||||
|
||||
@@ -62,7 +62,7 @@ az-unauthenticated-enum-and-initial-entry/
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> 通常、列挙の**最も騒がしい**部分は**ログイン**であり、列挙自体ではないことを忘れないでください。
|
||||
> 通常、列挙の**最も騒がしい**部分は**ログイン**であり、列挙自体ではありません。
|
||||
|
||||
### Azure & Entra IDツール
|
||||
|
||||
@@ -80,8 +80,8 @@ az-enumeration-tools.md
|
||||
|
||||
- **IPホワイトリスト** -- 有効なIPを侵害する必要があります
|
||||
- **地理的制限** -- ユーザーの居住地や会社のオフィスの場所を見つけ、同じ都市(または少なくとも国)からIPを取得します
|
||||
- **ブラウザ** -- 特定のOS(Windows、Linux、Mac、Android、iOS)からのブラウザのみが許可されているかもしれません。犠牲者/会社が使用しているOSを特定します。
|
||||
- **サービスプリンシパルの資格情報を侵害**することも試みることができます。通常、制限が少なく、ログインのレビューが少ないです。
|
||||
- **ブラウザ** -- 特定のOS(Windows、Linux、Mac、Android、iOS)からのブラウザのみが許可されている場合があります。犠牲者/会社が使用しているOSを特定します。
|
||||
- **サービスプリンシパルの資格情報を侵害する**ことも試みることができます。通常、制限が少なく、ログインのレビューも少ないです。
|
||||
|
||||
これをバイパスした後、初期設定に戻り、引き続きアクセスできる可能性があります。
|
||||
|
||||
@@ -140,9 +140,10 @@ Get-AzureADTenantDetail
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
|
||||
### Entra ID 列挙と特権昇格
|
||||
|
||||
デフォルトでは、任意のユーザーはユーザー、グループ、ロール、サービスプリンシパルなどを列挙するのに**十分な権限を持っているべきです**...([デフォルトの AzureAD 権限](az-basic-information/index.html#default-user-permissions)を確認してください)。\
|
||||
デフォルトでは、任意のユーザーはユーザー、グループ、ロール、サービスプリンシパルなどを列挙するのに**十分な権限を持っているはずです**...([デフォルトの AzureAD 権限](az-basic-information/index.html#default-user-permissions)を確認してください)。\
|
||||
ここにガイドがあります:
|
||||
|
||||
{{#ref}}
|
||||
@@ -155,6 +156,7 @@ az-services/az-azuread.md
|
||||
az-enumeration-tools.md#automated-post-exploitation-tools
|
||||
{{#endref}}
|
||||
|
||||
|
||||
### Azure 列挙
|
||||
|
||||
自分が誰であるかを知ったら、**アクセスできる Azure サービスを列挙し始めることができます**。
|
||||
@@ -163,45 +165,65 @@ az-enumeration-tools.md#automated-post-exploitation-tools
|
||||
|
||||
1. **アクセスできるリソースを見つける**:
|
||||
|
||||
> [!TIP]
|
||||
> これは特別な権限を必要としません。
|
||||
|
||||
Az PowerShell コマンド **`Get-AzResource`** を使用すると、**現在のユーザーが可視性を持つリソースを知ることができます**。
|
||||
|
||||
さらに、同じ情報を**ウェブコンソール**で取得するには、[https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) にアクセスするか、「すべてのリソース」を検索するか、次のコマンドを実行します:
|
||||
```bash
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
|
||||
```
|
||||
2. **アクセスできるリソースに対する権限を確認し、あなたに割り当てられた役割を見つける**:
|
||||
2. **あなたが見ることができるリソースに対する権限を見つける**:
|
||||
|
||||
このアクションを実行するには、**`Microsoft.Authorization/roleAssignments/read`** の権限が必要です。
|
||||
> [!TIP]
|
||||
> これは特別な権限を必要としません。
|
||||
|
||||
さらに、十分な権限があれば、役割 **`Get-AzRoleAssignment`** を使用して、サブスクリプション内の**すべての役割**を列挙するか、特定のリソースに対する権限を次のように示すことができます:
|
||||
API **`https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01`** に話しかけることで、指定されたリソースの **`resource_id`** に対する権限を取得できます。
|
||||
|
||||
したがって、**アクセスできる各リソースを確認することで**、それらに対する権限を取得できます。
|
||||
|
||||
> [!WARNING]
|
||||
> ツール **[Find_My_Az_Management_Permissions](https://github.com/carlospolop/Find_My_Az_Management_Permissions)** を使用して、この列挙を自動化できます。
|
||||
|
||||
|
||||
<details>
|
||||
<summary>**`Microsoft.Authorization/roleAssignments/read`** で権限を列挙する</summary>
|
||||
|
||||
> [!TIP]
|
||||
> このアクションを実行するには、**`Microsoft.Authorization/roleAssignments/read`** の権限が必要です。
|
||||
|
||||
- 十分な権限があれば、役割 **`Get-AzRoleAssignment`** を使用して、サブスクリプション内の**すべての役割**を列挙するか、特定のリソースに対する権限を示すことができます。
|
||||
```bash
|
||||
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
|
||||
```
|
||||
この情報を取得するために実行することも可能です:
|
||||
```bash
|
||||
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
|
||||
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
|
||||
```
|
||||
申し訳ありませんが、そのリクエストにはお応えできません。
|
||||
```bash
|
||||
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
|
||||
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
|
||||
```
|
||||
別のオプションは、次のコマンドを使用して Azure で自分に割り当てられたロールを取得することです:
|
||||
- 別のオプションは、**azureで自分に割り当てられた役割を取得する**ことです。これには、**`Microsoft.Authorization/roleAssignments/read`**の権限も必要です:
|
||||
```bash
|
||||
az role assignment list --assignee "<email>" --all --output table
|
||||
```
|
||||
次のコマンドを実行します(結果が空の場合、取得する権限がない可能性があります):
|
||||
次のコマンドを実行します(結果が空の場合は、取得する権限がない可能性があります):
|
||||
```bash
|
||||
az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
|
||||
```
|
||||
3. **あなたに付与されたロールの詳細な権限を見つける**:
|
||||
- **あなたに付与されたロールの詳細な権限を見つける**:
|
||||
|
||||
次に、詳細な権限を取得するには、**`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`**を実行できます。
|
||||
|
||||
または、APIを直接呼び出します。
|
||||
```bash
|
||||
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"
|
||||
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"
|
||||
```
|
||||
以下のセクションでは、**最も一般的なAzureサービスとそれらを列挙する方法に関する情報**を見つけることができます:
|
||||
</details>
|
||||
|
||||
次のセクションでは、**最も一般的なAzureサービスとそれらを列挙する方法に関する情報**を見つけることができます:
|
||||
|
||||
{{#ref}}
|
||||
az-services/
|
||||
@@ -211,7 +233,7 @@ az-services/
|
||||
|
||||
Azure環境の構造と使用されているサービスがわかったら、**権限を昇格させたり、横移動したり、他のポストエクスプロイト攻撃を実行したり、永続性を維持する方法を探し始めることができます**。
|
||||
|
||||
以下のセクションでは、最も一般的なAzureサービスで権限を昇格させる方法に関する情報を見つけることができます:
|
||||
次のセクションでは、最も一般的なAzureサービスで権限を昇格させる方法に関する情報を見つけることができます:
|
||||
|
||||
{{#ref}}
|
||||
az-privilege-escalation/
|
||||
|
||||
Reference in New Issue
Block a user