5ecurity团队成员套哥(taoge@5ecurity.cn)原创发布 原文链接:http://5ecurity.cn/index.php/archives/242/ CVE申请的那些事在《安全小白面试的那些坑》
(http://www.5ecurity.cn/index.php/archives/244/)中和大家提到面试的时候可以在简历中附上提交过的原创漏洞如CVE
、CNVD
编号等信息,以证明自己在漏洞挖掘方面的技术经验和能力。
什么是CVE对于新手来说申请CVE
总是摸不清门道,总觉得像这种国际化的高大上漏洞很难申请到,其实则不然,CVE
的全称是“Common Vulnerabilities and Exposures”
翻译成中文就是“公共漏洞和披露”
可以把它理解成一个被安全从业者认可的漏洞字典,大家可以通过编号在这里查找不同应用或系统的漏洞信息。当然很多安全企业或国家机构也都会引用CVE作为其漏洞库,比如美国国家漏洞数据库(NVD)。
什么是CNACNA
的全称是“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
3、通过https://cveform.mitre.org/
提交
下面就具体实战演示。首先在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
)
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!