diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md index 5b3473b97..3076c610d 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md @@ -4,7 +4,7 @@ ## Azure IAM -Pour plus d'informations, consultez : +Fore more information check: {{#ref}} ../az-services/az-azuread.md @@ -12,38 +12,45 @@ Pour plus d'informations, consultez : ### Microsoft.Authorization/roleAssignments/write -Cette permission permet d'assigner des rôles à des principaux sur un périmètre spécifique, permettant à un attaquant d'escalader les privilèges en s'assignant un rôle plus privilégié : +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 -Cette permission permet de modifier les permissions accordées par un rôle, permettant à un attaquant d'escalader les privilèges en accordant plus de permissions à un rôle qu'il a assigné. +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**: -Créez le fichier `role.json` avec le **contenu** suivant : ```json { -"Name": "", -"IsCustom": true, -"Description": "Custom role with elevated privileges", -"Actions": ["*"], -"NotActions": [], -"DataActions": ["*"], -"NotDataActions": [], -"AssignableScopes": ["/subscriptions/"] + "Name": "", + "IsCustom": true, + "Description": "Custom role with elevated privileges", + "Actions": ["*"], + "NotActions": [], + "DataActions": ["*"], + "NotDataActions": [], + "AssignableScopes": ["/subscriptions/"] } ``` -Ensuite, mettez à jour les autorisations de rôle avec la définition précédente en appelant : + +Then update the role permissions with the previous definition calling: + ```bash az role definition update --role-definition role.json ``` + ### Microsoft.Authorization/elevateAccess/action -Cette autorisation permet d'élever les privilèges et de pouvoir attribuer des autorisations à tout principal sur les ressources Azure. Elle est destinée à être accordée aux Administrateurs Globaux d'Entra ID afin qu'ils puissent également gérer les autorisations sur les ressources 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] -> Je pense que l'utilisateur doit être Administrateur Global dans Entra ID pour que l'appel d'élévation fonctionne. +> 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 "" --role "Owner" --scope "/" ``` + ### Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write -Cette permission permet d'ajouter des identifiants fédérés aux identités gérées. Par exemple, donner accès à Github Actions dans un dépôt à une identité gérée. Ensuite, cela permet **d'accéder à toute identité gérée définie par l'utilisateur**. +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: -Exemple de commande pour donner accès à un dépôt dans Github à une identité gérée : ```bash # Generic example: az rest --method PUT \ ---uri "https://management.azure.com//subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities//federatedIdentityCredentials/?api-version=2023-01-31" \ ---headers "Content-Type=application/json" \ ---body '{"properties":{"issuer":"https://token.actions.githubusercontent.com","subject":"repo:/:ref:refs/heads/","audiences":["api://AzureADTokenExchange"]}}' + --uri "https://management.azure.com//subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities//federatedIdentityCredentials/?api-version=2023-01-31" \ + --headers "Content-Type=application/json" \ + --body '{"properties":{"issuer":"https://token.actions.githubusercontent.com","subject":"repo:/:ref:refs/heads/","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}} + + diff --git a/src/pentesting-cloud/gcp-security/gcp-services/gcp-source-repositories-enum.md b/src/pentesting-cloud/gcp-security/gcp-services/gcp-source-repositories-enum.md index 746fa2ac1..3f40c6ca6 100644 --- a/src/pentesting-cloud/gcp-security/gcp-services/gcp-source-repositories-enum.md +++ b/src/pentesting-cloud/gcp-security/gcp-services/gcp-source-repositories-enum.md @@ -1,37 +1,38 @@ -# GCP - Énumération des dépôts source +# GCP - Source Repositories Enum {{#include ../../../banners/hacktricks-training.md}} -## Informations de base +## Basic Information -Google Cloud Source Repositories est un service de **dépôt Git privé** entièrement fonctionnel et évolutif. Il est conçu pour **héberger votre code source dans un environnement entièrement géré**, s'intégrant parfaitement avec d'autres outils et services GCP. Il offre un endroit collaboratif et sécurisé pour que les équipes stockent, gèrent et suivent leur code. +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. -Les principales caractéristiques des dépôts source Cloud incluent : +Key features of Cloud Source Repositories include: -1. **Hébergement Git entièrement géré** : Offre la fonctionnalité familière de Git, ce qui signifie que vous pouvez utiliser des commandes et des flux de travail Git réguliers. -2. **Intégration avec les services GCP** : S'intègre avec d'autres services GCP comme Cloud Build, Pub/Sub et App Engine pour une traçabilité de bout en bout du code au déploiement. -3. **Dépôts privés** : Assure que votre code est stocké de manière sécurisée et privée. Vous pouvez contrôler l'accès en utilisant les rôles Cloud Identity and Access Management (IAM). -4. **Analyse du code source** : Travaille avec d'autres outils GCP pour fournir une analyse automatisée de votre code source, identifiant les problèmes potentiels comme les bogues, les vulnérabilités ou les mauvaises pratiques de codage. -5. **Outils de collaboration** : Prend en charge le codage collaboratif avec des outils comme les demandes de fusion, les commentaires et les revues. -6. **Support de miroir** : Vous permet de connecter les dépôts source Cloud avec des dépôts hébergés sur GitHub ou Bitbucket, permettant une synchronisation automatique et fournissant une vue unifiée de tous vos dépôts. +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. -### Informations OffSec +### OffSec information -- La configuration des dépôts source à l'intérieur d'un projet aura un **Compte de Service** utilisé pour publier des messages Cloud Pub/Sub. Le compte par défaut utilisé est le **Compute SA**. Cependant, **je ne pense pas qu'il soit possible de voler son jeton** depuis les dépôts source car il est exécuté en arrière-plan. -- Pour voir le code à l'intérieur de la console web des dépôts source Cloud GCP ([https://source.cloud.google.com/](https://source.cloud.google.com/)), vous devez que le code soit **dans la branche master par défaut**. -- Vous pouvez également **créer un dépôt Cloud miroir** pointant vers un dépôt de **Github** ou **Bitbucket** (en donnant accès à ces plateformes). -- Il est possible de **coder et déboguer depuis l'intérieur de GCP**. -- Par défaut, les dépôts source **empêchent les clés privées d'être poussées dans les commits**, mais cela peut être désactivé. +- 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. -### Ouvrir dans Cloud Shell +### Open In Cloud Shell -Il est possible d'ouvrir le dépôt dans Cloud Shell, une invite comme celle-ci apparaîtra : +It's possible to open the repository in Cloud Shell, a prompt like this one will appear:
-Cela vous permettra de coder et de déboguer dans Cloud Shell (ce qui pourrait compromettre cloudshell). +This will allow you to code and debug in Cloud Shell (which could get cloudshell compromised). + +### Enumeration -### Énumération ```bash # Repos enumeration gcloud source repos list #Get names and URLs @@ -42,7 +43,7 @@ gcloud source repos get-iam-policy gcloud source repos clone gcloud source repos get-iam-policy ... 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//r/ git add, commit, push... ``` -### Escalade de privilèges & Post exploitation + +### Privilege Escalation & Post Exploitation {{#ref}} ../gcp-privilege-escalation/gcp-sourcerepos-privesc.md {{#endref}} -### Enum non authentifié +### Unauthenticated Enum {{#ref}} ../gcp-unauthenticated-enum-and-access/gcp-source-repositories-unauthenticated-enum.md {{#endref}} {{#include ../../../banners/hacktricks-training.md}} + + +