CVE-2020-0601:微软核心加密库漏洞复现

CVE-2020-0601:微软核心加密库漏洞复现

一:漏洞介绍

受CVE2020-0601漏洞影响的系统,在验证证书签名时,在证书信用列表中查找受信任CA证书时出现乌龙。伪造的ECC CA证书可以被误认为可信任的证书,导致该伪造证书签名的文件能被系统信任。比如,win10中证书MicrosoftECCProductRootCertificateAuthority.pem是在受信任的证书列表中。现在我们根据漏洞,利用算法公式制造出与该证书具有相同公钥和曲线参数的,除基点G不同的另外一个证书spoofed.pem。操作系统在验证签名时会将spoofed.pem证书认为是信任列表中的MicrosoftECCProductRootCertificateAuthority.pem证书,那么spoofed.pem签署的文件,系统自然就信任。

二:影响版本

目前,支持使用带有指定参数的ECC密钥的证书的Microsoft Windows版本会受到影响,包括了Windows 10、Windows Server 2016/2019以及依赖于Windows CryptoAPI的应用程序。

三:复现过程

1.安装win10系统,到win10开始菜单中输入certmgr.msc,并打开。
CVE-2020-0601:微软核心加密库漏洞复现_第1张图片
2.随意导出其中一个根证书,导出直接选择Base64编码那个就行。并导入kali.
CVE-2020-0601:微软核心加密库漏洞复现_第2张图片CVE-2020-0601:微软核心加密库漏洞复现_第3张图片

  1. 下载poc程序。
    CVE-2020-0601:微软核心加密库漏洞复现_第4张图片
    执行poc程序。该程序从导出的ECC证书中获取公钥值,然后生成私钥是1,G就是该公钥值的私钥文件。
    CVE-2020-0601:微软核心加密库漏洞复现_第5张图片

对比一下证书和生成私钥文件内容能更好理解。ECC证书中的公钥信息:
CVE-2020-0601:微软核心加密库漏洞复现_第6张图片

生成的私钥文件:
CVE-2020-0601:微软核心加密库漏洞复现_第7张图片CVE-2020-0601:微软核心加密库漏洞复现_第8张图片

私钥值是1,对应的公钥值,G值和ECC证书中的公钥值是一样的。
4. 利用生成的私钥文件生成一个自签名CA证书,然后签发一个下级服务证书。
CVE-2020-0601:微软核心加密库漏洞复现_第9张图片

下级证书的私钥
CVE-2020-0601:微软核心加密库漏洞复现_第10张图片在这里插入图片描述
把生成的下级证书cert.crt,其私钥文件cert.key和我们的ca文件spoofed_ca.crt一起放到HTTP服务器上,配置启用SSL(请自行百度如何搭建ssl)。
6.在客户机Win10下的hosts文件里添加配置,将自己服务器地址和域名配对。
设置PHP studyssl配置文件
配置win10系统的hosts文件
CVE-2020-0601:微软核心加密库漏洞复现_第11张图片
最终时刻使用微软浏览器或者IE浏览器访问此地址。
CVE-2020-0601:微软核心加密库漏洞复现_第12张图片

四:修复方式

微软已发布补丁,更新即可

你可能感兴趣的:(CVE-2020-0601:微软核心加密库漏洞复现)