什么是CVE
对于新手来说申请CVE总是摸不清门道,总觉得像这种国际化的高大上漏洞很难申请到,其实则不然,CVE的全称是“Common Vulnerabilities and Exposures”翻译成中文就是“公共漏洞和披露”可以把它理解成一个被安全从业者认可的漏洞字典,大家可以通过编号在这里查找不同应用或系统的漏洞信息。当然很多安全企业或国家机构也都会引用CVE作为其漏洞库,比如美国国家漏洞数据库(NVD)。
什么是CNA
CNA的全称是“CVE Numbering Authority”中文可以理解为“CVE编号授权机构”顾名思义就是这些CNA有权限分配和管理CVE编号,截止目前为止,共有85个CNA,覆盖14个国家。CNA包括供应商(比如苹果、谷歌等公司)和项目发起机构,漏洞研究人员、国家和行业CERT以及漏洞奖励计划组织。这些CNA可以构建CVE列表,并分配列表中的CVE编号和录入相关信息。
我们应该怎么申请CVE
通过上面的说明,你应该能猜到了,想要申请CVE编号那当然要去找CNA了,因为CVE编号都是CNA创建和维护的嘛。
虽然找到找谁了,但是85个CNA呢,咱们应该找哪个呢?
那要看我们发现的是上面漏洞了,申请CVE大致可以分为3种情况,这3种情况套哥我都尝试并成功过,下面给大家一一讲解下:
第一种:找Participating CNA要CVE编号
第二种:找Primary CNA要CVE编号
第三种:找Distributed Weakness Filing Project CNA要CVE编号
第一种:找Participating CNA要CVE编号
首先来说说这第一种找Participating CNA要CVE编号,Participating CNA的意思就是参与CNA,你可以把他们理解为参与CVE计划的公司或项目发起者,总之就是有产品拿出来让大家挖漏洞的,这些CNA有一个列表在http://cve.mitre.org/cve/request_id.html#cna_participants
如上图所示,这个列表主要有4个部分,分别是名称(Product, Vendor, or Product Category Name)、范围(Scope)、联系方式(CNA Contact Email and/or Webpage (if applicable))、CNA类型(CNA Type)。我们关注的主要是范围和联系方式。
比如你发现了Adobe产品的漏洞并且在Adobe issues的范围内,那么就可以发送邮件到psirt@adobe.com申请CVE编号,或者访问Adobe公司的安全中心页面https://helpx.adobe.com/security/alertus.html进行反馈。
第二种:找Primary CNA要CVE编号
这个第二种方式是找主CNA要编号,什么是主CNA呢?其实就是MITRE官方,细心的你可以会发现其实MITRE也是在参与CNA里面而且是第一个,区别在于如果你找到的漏洞不在参与CNA那些公司里面,但是漏洞又确实存在,那么就可以找MITRE官方来申请编号。
方法很简单通过MITRE CVE Request web form页面进行提交即可,地址是https://cveform.mitre.org/,这个页面还是很友好的,不过是英文的,我们提交漏洞也需要使用英文。在实战章节会给大家详细讲解。
第三种:找Distributed Weakness Filing Project CNA要CVE编号
这个第三种方式翻译过来是“分布式弱点申报项目”,其实主要是指不在参与CNA那些公司里面并且是开源软件或系统的漏洞,可以通过这种方式提交,可以看到联系方式有3种,第一个是邮箱、第二个是页面、第三个是github地址。
比如你在github上发现某个开源项目存在漏洞,就可以通过发邮件给cve-assign@distributedweaknessfiling.org或者通过https://iwantacve.org/页面表单提交或者访问DWF GitHub page页面提交。当然你会发现访问https://iwantacve.org/是需要梯子的。
而且。这种方式审批极慢!!!这种方式审批极慢!!!这种方式审批极慢!!!
那正确快捷的方法是上面呢?当然是选择前两种方法啦,其实细心的你也会发现,通过前两种方法可以完全覆盖所有的漏洞,简单来说“第一种呢是列表里的厂家的漏洞,第二种呢是除了第一种以外的所有漏洞”。下面实战讲解下具体申请流程吧,套路是“找开源CMS漏洞,用第二种方法申请CVE编号!”
实战获取CVE编号
思路:
1、在github上寻找目标找漏洞
2、在github上提交Issues
下面就具体实战演示。首先在github上用关键字cms进行搜索,然后找你熟悉的编程语言(套哥我喜欢php)然后找一个看上去不那么复杂的cms作为目标。
套哥找的是一个叫“五指CMS”的php开源项目,看这个cms官网上介绍还说的是“高性能、强安全”……
确定目标后下载程序、搭建环境、上扫描器、代码审计……你们的方法肯定比我多,毕竟套哥我已经老了,跟不上现在的圈子了^_^!!!
很简单,在后台发现两个csrf,可以通过2步添加管理员,第一步csrf添加一个普通用户并激活,第二步csrf把添加的普通用户提升为管理员。你们是不是觉得没营养,其实也不完全没营养,这里面遇到一个问题,就是post包的data里有一个”submit=提交”,这个在构造自动提交form的html页面时是与提交js中的”submit()”重名的,导致js中的”submit()”不会执行,开始的时候想着直接去掉这个参数应该不会有影响,但是提交后回显“参数错误”。网上百度了不少也没找到好的方法,最后群里问了下大表哥找到了方法。把这个”submit=提交”放到URL里,其他数据放在post的data里。结果当然OK啦。csrf的poc如下:
效果如下:
漏洞找到了,第二步就是到github上提交Issues。没有github账号的小伙伴请自行申请,套哥也没有github的账号,于是发大表哥帮忙提交到了wuzhicms的官方Issues,地址如下:
https://github.com/wuzhicms/wuzhicms/issues/128
把漏洞和触发条件说清楚即可,因为要提交CVE就让大表哥用英文写的Issues。
准备工作基本完毕,下面是第三步提交到mitre官方平台,页面在https://cveform.mitre.org/,按照下图填写:
填好后,填写验证码提交即可。提交后一般马上会收到官方的确认邮件。大概意思就是感谢你提交漏洞,将有CVE团队成员进行审核,如要更改、添加信息可以直接回复邮件,不要更改邮件标题等等。
可以不用理会,一般过1-2天就会有审核的结果邮件,邮件里会有你提交漏洞的信息和分配的编号。
到这里基本就已经申请完成了,漏洞将在24小时内发布到CVE官网,可以通过https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-9926访问
有一起组团刷CVE的小伙伴可以加套哥微信一起交流(微信号:anquanquantao)