diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md index c026506af..3f09ccfe9 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md @@ -4,25 +4,57 @@ ## Informations de base -Les **dynamic groups** sont des groupes qui ont un ensemble de **règles** configurées et tous les **utilisateurs ou appareils** qui correspondent aux règles sont ajoutés au groupe. Chaque fois qu'un **attribut** d'utilisateur ou d'appareil est **modifié**, les règles dynamiques sont **vérifiées à nouveau**. Et lorsqu'une **nouvelle règle** est **créée**, tous les appareils et utilisateurs sont **vérifiés**. +**Dynamic groups** sont des groupes qui ont un ensemble de **règles** configurées et tous les **utilisateurs ou appareils** qui correspondent aux règles sont ajoutés au groupe. À chaque fois qu'un **attribut** d'un utilisateur ou d'un appareil est **modifié**, les règles dynamiques sont **réévaluées**. Et lorsqu'une **nouvelle règle** est **créée**, tous les appareils et utilisateurs sont **vérifiés**. -Les groupes dynamiques peuvent avoir des **rôles Azure RBAC assignés** à eux, mais il est **impossible** d'ajouter des **rôles AzureAD** aux groupes dynamiques. +**Dynamic groups** peuvent se voir attribuer des **Azure RBAC roles assigned**, mais il **n'est pas possible** d'ajouter des **AzureAD roles** aux Dynamic groups. -Cette fonctionnalité nécessite une licence Azure AD premium P1. +Cette fonctionnalité nécessite une licence Azure AD Premium P1. ## Privesc -Notez qu'en default, tout utilisateur peut inviter des invités dans Azure AD, donc, si une **règle** de groupe dynamique donne des **permissions** aux utilisateurs en fonction des **attributs** qui peuvent être **définis** dans un nouvel **invité**, il est possible de **créer un invité** avec ces attributs et **escalader les privilèges**. Il est également possible pour un invité de gérer son propre profil et de modifier ces attributs. +Notez que par défaut tout utilisateur peut inviter des guests dans Azure AD. Donc, si une **règle** d'un Dynamic group donne des **permissions** à des utilisateurs basées sur des **attributs** qui peuvent être **définis** sur un nouveau **guest**, il est possible de **créer un guest** avec ces attributs et d'**escalader les privilèges**. Un **guest** peut aussi gérer son propre profil et modifier ces attributs. -Obtenez les groupes qui permettent l'adhésion dynamique : **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`** +Récupérer les groupes qui autorisent Dynamic membership : **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`** +### Énumération des Dynamic Groups + +Obtenir les règles d'un Dynamic group : + +Avec **Azure CLI** : +```bash +az ad group list \ +--filter "groupTypes/any(c:c eq 'DynamicMembership')" \ +--query "[].{displayName:displayName, rule:membershipRule}" \ +-o table +``` +Avec **PowerShell** et **Microsoft Graph SDK** : +```bash +Install-Module Microsoft.Graph -Scope CurrentUser -Force +Import-Module Microsoft.Graph + +Connect-MgGraph -Scopes "Group.Read.All" + +Get-MgGroup -Filter "groupTypes/any(c:c eq 'DynamicMembership')" ` +-Property Id, DisplayName, GroupTypes + +# Get the rules of a specific group +$g = Get-MgGroup -Filter "displayName eq ''" ` +-Property DisplayName, GroupTypes, MembershipRule, MembershipRuleProcessingState + +$g | Select-Object DisplayName, GroupTypes, MembershipRule + +# Get the rules of all dynamic groups +Get-MgGroup -Filter "groupTypes/any(c:c eq 'DynamicMembership')" ` +-Property DisplayName, MembershipRule | +Select-Object DisplayName, MembershipRule +``` ### Exemple -- **Exemple de règle** : `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")` -- **Description de la règle** : Tout utilisateur invité avec un email secondaire contenant la chaîne 'security' sera ajouté au groupe +- **Exemple de règle**: `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")` +- **Description de la règle**: Tout utilisateur Guest avec un e-mail secondaire contenant la chaîne 'security' sera ajouté au groupe -Pour l'email de l'utilisateur invité, acceptez l'invitation et vérifiez les paramètres actuels de **cet utilisateur** dans [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView).\ -Malheureusement, la page ne permet pas de modifier les valeurs des attributs, donc nous devons utiliser l'API : +Pour l'e-mail de l'utilisateur Guest, acceptez l'invitation et vérifiez les paramètres actuels de **cet utilisateur** dans [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView).\ +Malheureusement, la page n'autorise pas la modification des valeurs des attributs, nous devons donc utiliser l'API: ```bash # Login with the gust user az login --allow-no-subscriptions