ADCS ESC7 – 易受攻击的证书颁发机构访问控制

r3m0t3

版主

r3m0t3 Rep
0
0
0
Rep
0
r3m0t3 Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
r3m0t3 获得
0
0
0
获得
0
r3m0t3 凭证
0
0
0
凭证
0
主题
16
点赞
0
HakB
8
在社区成长 8 月
LEVEL 30 100 XP
 
ESC7 是一个严重的安全漏洞,攻击者可利用证书颁发机构(CA) 内的薄弱访问控制。通过针对ManageCA 和管理证书等关键权限,攻击者可以破坏证书管理系统。 ManageCA 权限授予管理控制权,允许攻击者修改EDITF_ATTRIBUTESUBJECTALTNAME2 等设置,并使用PSPKI cmdlet 利用ESC6 等漏洞。同时,ManageCertificates 使攻击者能够绕过证书颁发检查,从而削弱安全性。

目录​

ESC7 攻击概述比较ESC6 和ESC7 先决条件实验室设置枚举利用利用Certipy 滥用CA 管理权限
使用Evil-Winrm 进行利用后横向移动权限升级
缓解措施

ESC7 攻击概述​

ESC7 是针对Active Directory 证书服务(ADCS) 的权限升级攻击媒介,该攻击源自证书颁发机构(CA) 上的不安全访问控制。具体来说,它针对的是错误地将强大的CA级别权限授予非特权或低特权帐户的情况,例如:
管理CA管理证书这些权限如果被滥用或误解,可能会通过非法证书颁发提供直接的域危害路径。

是什么让 ESC7 成为可能?​

ESC7 攻击的基础是通过certsrv.msc 访问的CA 本身的自由访问控制列表(DACL) 配置错误。
启用ESC7: 的关键权限

ManageCA

授予对CA 配置的控制权,包括:
添加或启用证书模板。
修改CA 策略设置。
设置EDITF_ATTRIBUTESUBJECTALTNAME2 标志经常在ESC6 风格滥用中被利用。
可用于提升或伪造任何模板以使其可利用。
Note: 这是ESC7中最危险的权限。

管理证书

允许批准待处理的证书请求。
可用于绕过手动审批工作流程。
它不授予模板配置权限,但允许用户完成潜在的恶意请求(例如,针对[email protected])。

比较 ESC6 和 ESC7​

根本原因

ESC6:

当低权限用户可以访问配置错误的模板(如ENROLLEE_SUPPLIES_SUBJECT)时,就会发生这种情况,从而允许在没有CA 访问权限的情况下进行利用。

ESC7:​

CA 的ACL 配置错误(通过certsrv.msc 设置),为[email protected] 等非特权用户提供了ManageCA 或ManageCertificates 等权限。

滥用向量​

ESC6:

攻击者只需通过危险模板进行注册(如果他们有权访问)。

ESC7:

攻击者首先管理CA:
启用像SubCA 这样的危险模板。
添加第二个用户([email protected]) 作为证书官员。
颁发模拟[email protected] 的证书。

所需权限​

ESC6:​

注册易受攻击的模板。
模板必须支持:
ENROLLEE_SUPPLIES_SUBJECT
客户端身份验证EKU

ESC7:​

CA 上的ManageCA 或ManageCertificates。
这些允许用户:
启用/批准模板
发出请求
修改关键CA 策略标志

现实世界的影响​

ESC6:​

允许伪造证书以任何用户身份进行身份验证。

ESC7:

以上都加:管理模板吗
批准请求
重新配置CA
完全控制证书基础设施
Note: 与针对现有漏洞的ESC6 不同,ESC7 允许攻击者创建或启用这些漏洞,使其成为更广泛、更危险的威胁,尤其是在CA 权限较弱的环境中。

先决条件​

Windows Server 2019 作为支持PKINIT 的Active Directory
该域必须配置Active Directory 证书服务和证书颁发机构。
Kali Linux 充满了工具
Tools: Evil-Winrm、certipy-ad

实验室设置​

本文首先检查一种常见的错误配置,即有人在证书颁发机构(CA) 上授予过多权限,从而可能允许攻击者提升权限或危害域环境。

查看证书颁发机构安全权限​

我们首先检查证书颁发机构(CA) 属性,以了解访问控制错误配置如何启用ESC7 攻击。
在CA 服务器上启动certsrv.msc,右键单击CA 名称(例如ignite-DC-CA),然后选择“属性”。
1.png

检查安全设置,转到“安全”选项卡并查看用户/组列表及其分配的权限。在这种情况下,经过身份验证的用户已被授予请求证书的权限。
ADCS ESC7 vulnerability exploitation

虽然与弱证书模板结合使用时这已经是一个潜在风险,但以下错误配置会带来更大的威胁。

危险信号:具有“管理 CA”权限的非管理员用户​

在此场景中,标准域用户raj(来自IGNITEraj)已被明确授予对证书颁发机构的“管理CA”权限。
3.png

为什么这很危险:
“管理CA”权限允许用户:
修改证书模板。
配置证书颁发策略。
添加或删除注册代理。
重新启动CA 服务。

枚举利用​

利用 Certipy 滥用 CA 管理权限​

通过CA 权限访问Raj,我们现在将使用Certipy 逐步了解完整的攻击链。

发现易受攻击和启用的模板

第一步是枚举CA 启用且可能容易被滥用的模板,包括权限较弱或配置存在风险的模板,例如ENROLLEE_SUPPLIES_SUBJECT。
这是使用: 完成的
certipy-ad find -u '[email protected]' -p 密码@1 -dc-ip 192.168.1.48 -vulnerable -enabled
ADCS ESC7 vulnerability exploitation

该命令查询AD CS 以列出启用的模板、识别漏洞并评估注册权限、主题字段和EKU 设置等配置。
让我们读取以.txt 或.json 文件格式保存的内容。
5.png

这证实了非特权用户raj 具有危险权限(ManageCa),从而为ESC7 打开了大门。

添加证书官员(滥用 ManageCA 权限)

我们现在利用ManageCA 权限(授予[email protected])将同一用户分配为证书官员,从而有效地使他们成为能够代表其他人颁发证书的注册代理。
certipy-ad ca -ca ignite-DC-CA -add-officer raj -u [email protected] -p 密码@1 -目标192.168.1.48 -dc-ip 192.168.1.48
ADCS ESC7 vulnerability exploitation

启用危险模板 (SubCA)

我们现在启用可用于身份验证模拟的高权限证书模板(SubCA)。
certipy-ad ca -ca ignite-DC-CA -u [email protected] -p 密码@1 -目标192.168.1.48 -enable-template SubCA -dc-ip 192.168.1.48
7.png

这使得SubCA 等模板容易被滥用,特别是如果它们
 
顶部