CVE-2022-26923

    渗透测试 lz520520 2年前 (2022-10-07) 531次浏览

    漏洞描述

    简单来说,AD域提供ADCS功能,并且颁发的证书可用于kerberos预认证,在获取TGT时,返回的票据的PAC里会包含NTLM hash。
    而当用机器账户申请证书时,使用的是dnsHostname来生成机器证书,生成证书的“使用者可选名称”是DNS Name =[dnsHostname]
    在PKINIT kerberos认证时,KDC是根据使用者可选名称来进行查询权限生成PAC的,如果是用户证书可选名称是"主体名称",如果是计算机证书,可选名称则如下所示是"DNS Name",那么KDC判断是机器证书,则会查询数据库中sAMAccountName属性为aaaaa$的条目,并生成PAC。在这个过程中并不会搜索和校验dNSHostName。
    而dNSHostName也不具备唯一性,那么就可以修改为域控机器名,如AD01.test.com,然后申请证书时,就会颁发一个"使用者可选名称"为Dns Name=AD01.test.com,在进行PKINIT kerberos认证时,就会获取到域控机器账户hash,从而用域控机器账户进行dcsync接管域。
    CVE-2022-26923

    CVE-2022-26923

    ADCS安装

    注意证书颁发机构以及证书颁发机构web注册都安装上。
    CVE-2022-26923

    CVE-2022-26923

    CVE-2022-26923

    CVE-2022-26923

    CVE-2022-26923

    CVE-2022-26923
    CVE-2022-26923

    CVE-2022-26923
    CVE-2022-26923
    test-ad02-ca.test.com
    CVE-2022-26923

    安装后访问 http://192.168.111.147/Certsrv/, 需要进行域认证
    CVE-2022-26923
    CVE-2022-26923

    定位ADCS

    通过ldap filter过滤可定位到
    CVE-2022-26923

    漏洞利用

    https://github.com/ly4k/Certipy 推荐使用python39运行

    测试漏洞

    如下判断漏洞存在,并且DNS Name标明ADCS位置,这里还做了自动解析定位到ADCS IP
    漏洞利用需要的信息有:

    不过CA Name一般是[domain]-[host name]-CA
    CVE-2022-26923

    创建机器账户

    执⾏如下命令使⽤certipy利⽤ldaps远程创建machine11机器账户,并且设置其 dnsHostname为AD01.test.com。

    如下图通过ldaps创建成功,密码随机分配为UEFDJUbXwjrmZhJF
    CVE-2022-26923

    PS: 有很多创建机器⽤户的⽅式,需要注意的是,当使⽤SAMR协议创建机器用户时,机器⽤户默认没有dnsHostName属性和UPN属性。如上是用过ldaps,可能目标并没有安装ldaps

    证书请求

    执⾏如下命令,向CA服务器使⽤certipy以machine11$身份请求⼀个Machine类型的证书。注意一定要是CA服务器,否则可能没有\pipe\cert

    默认是通过RPC申请,基于dNSHostName生成证书
    CVE-2022-26923

    CVE-2022-26923

    CVE-2022-26923

    当然还可以通过web,通过-web参数即可

    kerberos认证获取hash和TGT

    使用ad01.pfx证书进行认证

    如下成功获取到hash以及TGT
    CVE-2022-26923

    导出hash

    基于kerberos,通过机器账户的TGT导出

    CVE-2022-26923

    基于NTLM认证,PTH导出

    CVE-2022-26923

    漏洞防护

    如果暂时不能下载补丁进⾏更新,也可以通过设置域的ms-DS- MachineAccountQuota为0来进⾏缓解。当然这个方案可以通过修改已有机器账户来绕过

    补丁修复,对申请的证书嵌入了sid
    如果是User模板则填充对应用户账户的SID,如果是Machine模板,由于机器账户没有SID,所以该处填充创建该机器账户的用户账户的SID,通过引入SID属性,KDC可以进一步标识证书对应的账户。


    Security , 版权所有丨如未注明 , 均为原创丨
    转载请注明原文链接:CVE-2022-26923
    喜欢 (2)