ADCS ESC6 EDITF_ATTRIBUTESUBJECTALTNAME2 配置错误不当
前言:ADCS ESC6 EDITF_ATTRIBUTESUBJECTALTNAME2配置错误不当
关于EDITF_ATTRIBUTESUBJECTALTNAME2标志位
ESC6涉及滥用CA配置中的EDITF_ATTRIBUTESUBJECTALTNAME2标志,此标志允许任何客户端请求具有不同主题备用名称SAN(Subject Alternative Name)的任何证书,从而导致再次以域管理员身份请求证书,从而提升域特权。
知识点:每个证书都通过其主题字段SN(Subject Name)与一个实体相关联。但是证书还包括一个主题备用名称(Subject Alternative Name) 字段,该字段允许证书对多个实体有效。
SAN字段通常用于托管在同一服务器上的Web服务,支持使用单个HTTPS证书,而不是为每个服务使用单独的证书。
当特定证书也适用于身份验证时,通过包含适当的 EKU(例如客户端身份验证),它可以用于对多个不同的帐户进行身份验证,能够在SAN设置中指定用户的未经授权的用户可能会立即导致入侵,并给您的组织带来巨大风险。
还需要知道的一个点是,当CA中的一个这反过来会影响所有证书模板,无论他们是否启用了EDITF_ATTRIBUTESUBJECTALTNAME2标志位。
EDITF_ATTRIBUTESUBJECTALTNAME2和CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT的关系
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT标志涉及的是主题名称(Subject Name)字段,而不是备用名称(Subject Alternative Name,SAN)字段。
- 主题名称(Subject Name)
这是证书中用来标识持有者身份的主要字段,通常包含诸如通用名称(CN)、组织(O)、组织单位(OU)、国家(C)等信息。
当CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT标志被设置时,证书申请者可以提供并定义这个字段的值。
- 备用名称(Subject Alternative Name,SAN)
这是证书中的一个扩展字段,用来指定主题的其他身份信息,举个简单的例子,可以理解为一个ip可以对应多个解析域名记录
SAN字段的处理和设置与EDITF_ATTRIBUTESUBJECTALTNAME2标志相关,而不是CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT。
因此,CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT标志允许注册人在证书申请时自行定义证书的主题名称,而不是备用名称。
漏洞检测
如果有一个模板EDITF_ATTRIBUTESUBJECTALTNAME2启用了该设置,并且该模板对于身份验证有效,则攻击者可以注册一个可以模仿任意帐户的证书。
这边可以通过远程注册表判断CA是否开启SAN标识,执行如下命令
certutil -config "adcs.zpchcbd.com\adcs" -getreg "policy\EditFlags"
漏洞复现
执行下面的命令,让当前CA环境开启EDITF_ATTRIBUTESUBJECTALTNAME2标志位,如下图所示
certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2

重启服务,使其EDITF_ATTRIBUTESUBJECTALTNAME2标志位生效,如下图所示
net stop certsvc
net start certsvc

浙公网安备 33010602011771号