从域管理员(DA)提升到企业管理员(EA)
2023-5-17 10:46:46 Author: 关注安全技术(查看原文) 阅读量:9 收藏

From:https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c

一种新的实用方法可以从域管理员升级到企业管理员。

ADCS将有关CA和证书模板的信息存储在LDAP中。通过打开ADSI编辑器并连接到配置命名上下文来查看这些对象。

“证书模板”容器存储可以发布到ADCS CA的模板。打开对话框实际上只是列出了该容器中的模板。

“注册服务”容器为每个 CA 存储一个 pKIEnrollmentService 对象。这些对象在其“certificateTemplates”属性上列出了已“发布”给 CA 的模板:

通过易受攻击的 PKI AD 对象访问控制进行域升级需要控制的两个 LDAP 对象分别为“一个证书模板”和 “pKIEnrollmentService” 对象。

假设pKIEnrollmentService对象与一个受信任的CA相关联,该CA可执行域身份验证,并且它要么是根CA的信任对象,要么是与根CA相关联的。

配置命名上下文(NC)是活动目录存储必须在整个活动目录林中复制的全局配置数据的位置。NC的区别名称为CN=Configuration,DC=example,DC=local,其中DC=example,DC=local是林根域的区别名称。

如果在林根中更改了配置中的对象,该更改将向下复制到林中的所有域。

相反的情况也是正确的:如果子域中的配置中的对象发生更改,该更改将向上复制到林根。这是因为林中的每个可写域控制器都有一个可写副本的林配置命名上下文。

https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research

在以上文章中是一个案例,通过滥用GPO链接到站点,从子域中的域管理员提升为林根的企业管理员。

当前存在一个实验环境,其中一个名为ForestRoot.local的林根域和一个名为ChildDomain.ForestRoot.Local的子域。

当连接到子域的配置命名上下文时,查看公钥服务容器的区别名称(DN),然后查看配置命名上下文的域名。

查看此对象的安全描述符:

作为子域中的域管理员,是无法对此对象进行控制的。“添加ACE”按钮处于灰色不可用状态。但您可能注意到system是具有对此对象的完全控制权限的。

关闭MMC并使用PsExec以SYSTEM用户身份重新打开。

再次连接到域本地的配置命名上下文,导航到公钥服务容器,并显示其安全描述符:

现在可以添加 ACE。向此对象添加一个 ACE,使 Bob(子域中的用户)能够完全控制此容器:

现在让我们来看一下公钥服务容器,但这次是在连接到林根域的配置命名上下文的林根域控制器上进行:

可以看到该访问控制项(ACE)从子域向上复制到了林根域。


要在LDAP中通过易受攻击的 PKI AD 对象访问控制进行域升级,我们至少需要以下能力:

向证书模板容器添加新模板的能力。

对与林根CA关联或与支持NT身份验证的CA关联的pKIEnrollmentService对象具有写访问权限。

对于这个示例,展示了如何将子域中的域管理员提升为林根的企业管理员。之前看到子域中的域管理员,对公钥服务容器具有完全控制权限。

虽然我们无法完全控制pKIEnrollmentService对象,但可以授予自己该控制权限,因为该对象启用了权限继承:

但是,默认模板禁用了权限继承,并且作为子域中的域管理员,我们无法对它们进行控制:

查看证书模板容器本身的安全描述符:

使用PsExec以SYSTEM身份在子域控制器上启动MMC:

然后,连接到域本地的配置命名上下文并导航到证书模板容器。现在我们对该对象具有完全控制权限,包括添加子对象的能力。

为了行使这个特权,我将以SYSTEM用户身份打开certsrv.msc,然后复制一个现有的模板:

这将打开新模板的属性,在其中我将配置该模板以使我们能够通过进行无发行要求 + 可注册客户端身份验证/智能卡登录 OID 模板 + CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT进行权限提升,具体步骤如下:

向我们在子域中控制的委托人授予注册权限。

在应用策略中包含客户端身份验证。

允许在证书请求中使用主题备用名称(SAN)。

不启用管理者批准或授权签名。

新模板将被写入我们本地的企业配置命名上下文副本,然后向上复制到林根域控制器的配置命名上下文中:

现在需要将模板发布到CA。我们可以在子域的SYSTEM用户身份下滥用我们对该对象的完全控制来完成这个操作:

证书在列在该对象的certificateTemplates属性上时会被“发布”到CA。我们所要做的就是将模板添加到该列表中,以将模板“发布”到CA:

如果我们在林根域控制器上打开certsrv.msc并检查我们的CA的“证书模板”,确实可以看到这个新的恶意模板现在已经“发布”并准备就绪:

现在,我们已经为将子域中的DA转换为林根的EA做好了充分的准备。

使用Certify获取证书,指定我们的恶意模板和我们想要冒充的企业管理员:

使用openssl将证书转换为PFX:

我们通过RDP将PFX文件放在子域DC上,然后使用Rubeus为企业管理员用户获取TGT票据,之前我们已经证明我们不是林根DC上的本地管理员:

可以使用wmic证明我们的TGT票据是有效的:

附上一个滥用 Active Directory 证书服务的文档:

https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf

文章来源: http://mp.weixin.qq.com/s?__biz=MzA4MDMwMjQ3Mg==&mid=2651868634&idx=1&sn=455714cdb0d9d5ecabc9a2570d8415c7&chksm=8442b53db3353c2b205149f03e8712dc604bc39da714491acfe3203779db300cb0bd8ff90b9f#rd
如有侵权请联系:admin#unsafe.sh