From 8f0650343b13f410d6004f21d2d0477537b79983 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 19 Nov 2025 17:18:19 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala --- .../az-entraid-privesc/dynamic-groups.md | 52 +++++++++++++++---- 1 file changed, 42 insertions(+), 10 deletions(-) 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 1a40f276a..312381710 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 @@ -2,27 +2,59 @@ {{#include ../../../../banners/hacktricks-training.md}} -## Información Básica +## Información básica -**Dynamic groups** son grupos que tienen un conjunto de **rules** configuradas y todos los **users o devices** que coinciden con las reglas son añadidos al grupo. Cada vez que se **cambia** un **attribute** de un usuario o dispositivo, las reglas dinámicas son **rechecadas**. Y cuando se **crea** una **new rule**, todos los dispositivos y usuarios son **verificados**. +**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**. -Los grupos dinámicos pueden tener **Azure RBAC roles asignados** a ellos, pero **no es posible** añadir **AzureAD roles** a grupos dinámicos. +Dynamic groups pueden tener **Azure RBAC roles assigned** a ellos, pero **no es posible** agregar **AzureAD roles** a los Dynamic groups. -Esta función requiere una licencia de Azure AD premium P1. +Esta funcionalidad requiere licencia Azure AD Premium P1. ## Privesc -Ten en cuenta que por defecto cualquier usuario puede invitar a invitados en Azure AD, así que, si una **rule** de grupo dinámico otorga **permissions** a los usuarios basándose en **attributes** que pueden ser **establecidos** en un nuevo **guest**, es posible **crear un guest** con estos atributos y **escalar privilegios**. También es posible que un guest gestione su propio perfil y cambie estos atributos. +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 grupos que permiten membresía dinámica: **`az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table`** +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**: +```bash +az ad group list \ +--filter "groupTypes/any(c:c eq 'DynamicMembership')" \ +--query "[].{displayName:displayName, rule:membershipRule}" \ +-o table +``` +Con **PowerShell** y **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 +``` ### Ejemplo -- **Ejemplo de regla**: `(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest")` -- **Descripción de la regla**: Cualquier usuario Guest con un correo electrónico secundario que contenga la cadena 'security' será añadido al grupo +- **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 electrónico del usuario Guest, acepta la invitación y verifica la configuración actual de **ese usuario** en [https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView).\ -Desafortunadamente, la página no permite modificar los valores de los atributos, así que necesitamos usar la API: +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](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: ```bash # Login with the gust user az login --allow-no-subscriptions