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

This commit is contained in:
Translator
2025-01-09 01:06:32 +00:00
parent ed3b02e374
commit a430be01e5
2 changed files with 63 additions and 46 deletions

View File

@@ -4,7 +4,7 @@
## Azure IAM
Daha fazla bilgi için kontrol edin:
Fore more information check:
{{#ref}}
../az-services/az-azuread.md
@@ -12,38 +12,45 @@ Daha fazla bilgi için kontrol edin:
### Microsoft.Authorization/roleAssignments/write
Bu izin, belirli bir kapsamda ilkeler için roller atamaya olanak tanır ve bir saldırganın kendisine daha yetkili bir rol atayarak ayrıcalıkları artırmasına olanak tanır:
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
Bu izin, bir rol tarafından verilen izinleri değiştirmeye olanak tanır ve bir saldırganın atadığı bir role daha fazla izin vererek ayrıcalıkları artırmasına olanak tanır.
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**:
Aşağıdaki **içerikle** `role.json` dosyasını oluşturun:
```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>"]
}
```
Sonra, önceki tanımı çağırarak rol izinlerini güncelleyin:
Then update the role permissions with the previous definition calling:
```bash
az role definition update --role-definition role.json
```
### Microsoft.Authorization/elevateAccess/action
Bu izin, ayrıcalıkları yükseltmeye ve Azure kaynaklarına herhangi bir ilkeye izin atamaya olanak tanır. Bu, Entra ID Küresel Yöneticilerine verilmesi amaçlanmıştır, böylece Azure kaynakları üzerindeki izinleri de yönetebilirler.
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]
> Yükseltme çağrısının çalışması için kullanıcının Entra ID'de Küresel Yönetici olması gerektiğini düşünüyorum.
> 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
Bu izin, yönetilen kimliklere Federated kimlik bilgileri eklemeye olanak tanır. Örneğin, bir depodaki Github Actions'a bir yönetilen kimliğe erişim vermek. Ardından, **herhangi bir kullanıcı tanımlı yönetilen kimliğe erişim sağlar**.
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:
Yönetilen bir kimliğe Github'daki bir depoya erişim vermek için örnek komut:
```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 - Kaynak Depoları Enum
# GCP - Source Repositories Enum
{{#include ../../../banners/hacktricks-training.md}}
## Temel Bilgiler <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, tam özellikli, ölçeklenebilir, **özel Git depo hizmeti**dir. **Kaynak kodunuzu tamamen yönetilen bir ortamda barındırmak** için tasarlanmıştır ve diğer GCP araçları ve hizmetleriyle sorunsuz bir şekilde entegre olur. Takımların kodlarını depolamak, yönetmek ve izlemek için işbirlikçi ve güvenli bir yer sunar.
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'in ana özellikleri şunlardır:
Key features of Cloud Source Repositories include:
1. **Tam Yönetilen Git Barındırma**: Git'in tanıdık işlevselliğini sunar, yani normal Git komutlarını ve iş akışlarını kullanabilirsiniz.
2. **GCP Hizmetleri ile Entegrasyon**: Koddan dağıtıma kadar uçtan uca izlenebilirlik için Cloud Build, Pub/Sub ve App Engine gibi diğer GCP hizmetleriyle entegre olur.
3. **Özel Depolar**: Kodunuzun güvenli ve özel bir şekilde depolandığından emin olur. Erişimi Cloud Identity and Access Management (IAM) rolleri kullanarak kontrol edebilirsiniz.
4. **Kaynak Kodu Analizi**: Kaynak kodunuzun otomatik analizini sağlamak için diğer GCP araçlarıyla çalışır, potansiyel sorunları, hataları, güvenlik açıklarını veya kötü kodlama uygulamalarını tanımlar.
5. **İşbirliği Araçları**: Birleştirme talepleri, yorumlar ve incelemeler gibi araçlarla işbirlikçi kodlamayı destekler.
6. **Aynalama Desteği**: Cloud Source Repositories'i GitHub veya Bitbucket'ta barındırılan depolarla bağlamanıza olanak tanır, otomatik senkronizasyon sağlar ve tüm depolarınızın birleşik bir görünümünü sunar.
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 bilgileri <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>
- Bir projedeki kaynak depoları yapılandırması, Cloud Pub/Sub mesajlarını yayınlamak için kullanılan bir **Hizmet Hesabı** içerecektir. Kullanılan varsayılan **Compute SA**'dır. Ancak, **kaynak depolarından token'ını çalmanın mümkün olduğunu düşünmüyorum** çünkü arka planda çalıştırılıyor.
- GCP Cloud Source Repositories web konsolundaki kodu görmek için ([https://source.cloud.google.com/](https://source.cloud.google.com/)), kodun **varsayılan olarak master dalında olması** gerekir.
- Ayrıca **Github** veya **Bitbucket**'taki bir depoya işaret eden bir **ayna Cloud Repository** oluşturabilirsiniz (bu platformlara erişim vererek).
- **GCP içinden kod yazmak ve hata ayıklamak** mümkündür.
- Varsayılan olarak, Source Repositories **özel anahtarların commit'lerde itilmesini engeller**, ancak bu devre dışı bırakılabilir.
- 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'de Aç
### Open In Cloud Shell
Depoyu Cloud Shell'de açmak mümkündür, bu gibi bir istemci görünecektir:
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>
Bu, Cloud Shell'de kod yazmanıza ve hata ayıklamanıza olanak tanır (bu, cloudshell'in tehlikeye girmesine neden olabilir).
This will allow you to code and debug in Cloud Shell (which could get cloudshell compromised).
### Enumeration
### Sayım
```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...
```
### Yetki Yükseltme & Sonrası İstismar
### Privilege Escalation & Post Exploitation
{{#ref}}
../gcp-privilege-escalation/gcp-sourcerepos-privesc.md
{{#endref}}
### Kimlik Doğrulaması Olmadan Enum
### Unauthenticated Enum
{{#ref}}
../gcp-unauthenticated-enum-and-access/gcp-source-repositories-unauthenticated-enum.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}