修改计算机是ADManager中用于管理计算机的预定义角色。如果技术人员用户对某台计算机拥有"修改计算机"权限,则可以更改该计算机对象的userAccountControl和msDS-AllowedToDelegateTo属性。通过这种方式,技术人员用户可以在用户被委派的管理单元(OU)内,为任意计算机设置受约束的Kerberos委派。
与ADManager所声称的相反,拥有"修改计算机"角色的用户实际上可以更改Active Directory中计算机对象的权限。可以为任何服务(如CIFS、LDAP、HOST服务)设置受约束的Kerberos委派。然后,用户可以通过滥用受约束的Kerberos委派来访问这些服务。此外,通过更改userAccountControl属性,还可以对计算机对象设置不受约束的Kerberos委派。通常情况下,只有拥有SeEnableDelegationPrivilege权限的用户才能设置受约束的Kerberos委派。默认情况下,只有BUILTIN\Administrators组的成员拥有此权限。即使某个用户对计算机帐户拥有GenericAll权限,被委派到某个管理单元(OU)的用户也无法设置受约束的Kerberos委派,因此Active Directory中的委派过程并不授予此权限。然而,技术人员用户可以通过"修改计算机"角色利用SeEnableDelegationPrivilege权限。
ADMP Web应用授权问题:分配预定义的"修改计算机"角色会意外地委派技术人员用户修改计算机的自定义属性。尽管在UI中看起来并未授予此权限,但"附加自定义属性"属性被分配,导致访问控制失效漏洞。
对于编辑计算机对象的userAccountControl和msDS-AllowedToDelegateTo属性没有限制。ADMP应用程序按设计以域管理员权限执行更改,因此如果我们能够绕过某些限制(例如属性值的格式),我们的请求将使用域管理员权限执行。这样我们就可以编辑userAccountControl和msDS-AllowedToDelegateTo属性。
技术人员用户将权限从域用户提升为域管理员。用户可以在计算机上为域控制器的LDAP服务配置受约束的Kerberos委派后,使用DCSync攻击获取krbtgt帐户哈希。 作为另一个示例,用户可以为DC的CIFS服务在CLIENT1$上设置受约束的Kerberos委派,然后访问CIFS服务。结果,用户被委派管理CLIENT1$,但意外地可以冒充用户访问域控制器的CIFS服务。
攻击者用户可以在满足以下前提条件下,通过添加针对LDAP服务的受约束的Kerberos委派来执行DCSync攻击:
场景1:如果攻击者对某台计算机拥有本地管理员权限,并且可以通过ADManager Plus中的“修改计算机”角色管理该计算机
场景2:如果攻击者将一台计算机添加到Active Directory(MAQ,委派),并通过ADManager Plus中的“修改计算机”角色管理该计算机
场景3:如果攻击者能够转储计算机帐户的NT哈希(使用mimikatz、secretsdump等转储哈希),并通过ADManager Plus中的“修改计算机”角色管理该计算机
此概念验证在ADManager Plus Build 7203上执行。
https://github.com/user-attachments/assets/496b3bfd-a95f-4d69-8ee5-53ae0592ebdb