1. 项目概述:从“挖洞”到“报备”的合规之路
最近和几个刚入行的朋友聊天,发现他们对“SRC漏洞挖掘”的理解,还停留在“找个网站,用工具扫一扫,找到漏洞就提交”的初级阶段。尤其是当提到“CNVD国家信息安全漏洞共享平台”时,很多人会把它和普通的厂商SRC(安全应急响应中心)混为一谈,甚至觉得这是“官方认证”的漏洞提交渠道,挖到了就能“名利双收”。这种认知偏差,在实际操作中很容易踩坑,轻则漏洞报告石沉大海,重则可能触及合规红线。今天,我就结合自己这些年摸爬滚打的经验,把“SRC漏洞挖掘”与“CNVD平台”之间的关系、区别以及正确的操作路径,掰开揉碎了讲清楚。这不仅仅是技术活,更是一门需要理解规则、流程和责任的“手艺”。
简单来说,我们常说的“SRC漏洞挖掘”,其核心目标是向具体的软件厂商、互联网公司或机构所属的安全应急响应中心提交漏洞,并获取相应的奖金、积分或荣誉。而CNVD国家信息安全漏洞共享平台,是一个由国家计算机网络应急技术处理协调中心(CNCERT)联合国内重要信息系统单位、安全厂商等共同建立的非营利性合作平台,它的主要职能是收集、核实、收录和发布国内通用的软硬件漏洞信息,并协调相关厂商进行修复,其核心是漏洞信息的共享与协同处置,而非面向个人的漏洞奖励。你可以把它理解为一个国家级的“漏洞信息备案与协调中心”。对于挖掘者而言,CNVD更多时候是漏洞流程中的一个“下游”或“平行”节点,而不是直接的“投递信箱”。理解这一点,是避免你白费功夫甚至惹上麻烦的第一步。
2. 核心概念辨析:SRC、CNVD与漏洞生态
在深入实操之前,我们必须把几个关键概念和它们之间的关系理清。这就像打游戏前先看懂地图和规则,否则只会原地打转。
2.1 什么是SRC(安全应急响应中心)?
SRC,全称Security Response Center,是由企业或组织自行建立的,用于接收外部安全研究人员报告其产品、服务、网站或系统安全漏洞的官方平台。它的运作模式通常是“众测”+“奖励”。
- 目标明确:每个SRC都有明确的资产范围,比如腾讯安全应急响应中心(TSRC)只接收腾讯旗下业务和产品的漏洞,阿里安全响应中心(ASRC)对应阿里系资产。
- 流程标准化:通常包括漏洞提交、审核、评级、修复、复测、发放奖励(奖金、礼品、积分、证书等)等一系列环节。
- 利益驱动:对于白帽子( ethical hacker )而言,向SRC提交漏洞是获取经济收益、提升个人声誉、积累实战经验的重要途径。各大互联网公司的SRC奖金池相当可观,是很多安全从业者重要的收入补充。
我的一个实操心得是:不要只盯着头部大厂的SRC。很多中型企业、新兴领域(如智能汽车、物联网、区块链)的SRC,由于竞争相对较小,漏洞更容易被发现,奖金性价比可能更高。同时,仔细阅读每个SRC的“漏洞评级标准”和“行为规范”,里面会详细说明哪些测试手法是被禁止的(比如禁止对业务造成影响的测试、禁止拖库、禁止社工等),这是你的安全边界。
2.2 CNVD平台的角色与定位
CNVD(China National Vulnerability Database)国家信息安全漏洞共享平台,其性质和目标与商业SRC有本质不同。
- 公益性:CNVD是一个非营利的、服务于国家网络安全整体工作的平台。它旨在建立国家层面的漏洞信息收集、共享和应急处置机制。
- 收录范围:主要收录的是在我国境内广泛使用的通用型软硬件产品的漏洞,例如操作系统、数据库、中间件、办公软件、网络设备、工业控制设备等。一个典型的例子是,你发现了某款国产办公软件WPS的一个远程代码执行漏洞,这个漏洞就非常适合提交给CNVD。
- 流程与产出:向CNVD提交漏洞,经过审核和验证后,平台会分配一个唯一的CNVD-ID(如CNVD-2024-xxxxx)。平台会协调漏洞涉及的厂商进行修复,并视情况向公众发布漏洞公告。对于提交者,CNVD会出具原创漏洞证明,这对于在校学生、求职者或参与某些评优评先活动,是一份非常有公信力的官方认可材料,但其本身通常不提供直接的经济奖励。
这里有一个关键区别:如果你在“腾讯云服务器”上发现了一个Apache Struts2的漏洞,这个漏洞本身属于Struts2这个通用组件。你应该向Apache Struts官方或CNVD报告这个通用组件漏洞,而不是向腾讯云SRC报告。腾讯云SRC关心的是其自身云平台产品、控制台的安全问题。分不清“载体”和“漏洞本体”,是新手常犯的错误。
2.3 CVE、CNNVD与CNVD的关系
经常有人混淆CVE、CNNVD和CNVD。
- CVE:国际通用的漏洞字典,由美国MITRE公司维护,分配CVE-ID。它是全球漏洞管理的“通用语言”。
- CNNVD:中国国家信息安全漏洞库,由中国信息安全测评中心运营,主要对漏洞进行国产化分类、评级和管理,也会分配CNNVD-ID。
- CNVD:如前所述,侧重于漏洞信息的共享和应急处置协调。
一个漏洞可能同时拥有CVE-ID、CNVD-ID和CNNVD-ID。通常,一个影响广泛的漏洞,白帽子或厂商可能会先申请CVE,同时向CNVD报送。CNVD在审核时,也可能为其同步申请CVE编号。对于挖掘者而言,如果你通过CNVD提交的漏洞获得了CNVD-ID,可以尝试进一步推动其获得CVE编号,这能极大提升漏洞的国际影响力和个人声誉。
3. SRC漏洞挖掘的核心思路与实战准备
明确了平台区别,我们回到“挖洞”本身。漏洞挖掘不是盲目扫描,而是一场有计划的“狩猎”。
3.1 目标选取与信息收集
这是决定你效率的第一步。不要一上来就打开扫描器乱扫。
- 确定SRC范围:你想挖哪个公司的漏洞?去其官方网站底部或安全频道找到其SRC的入口。仔细阅读“漏洞收集范围”,明确哪些域名、IP、APP、小程序在范围内,哪些是明确排除的(如子公司、已收购但未整合的业务等)。
- 子域名枚举:使用工具如
subfinder,amass,OneForAll等,收集目标的所有子域名。别忘了从JS文件、跨域策略文件、历史快照中挖掘隐藏的域名。 - 端口与服务探测:对收集到的IP进行端口扫描(
nmap,masscan),识别开放的服务(Web、数据库、中间件、特殊协议等)。一个开放的非常规端口(如8080,8443,9000)背后可能是一个未经验证的管理后台。 - 目录与路径爆破:针对Web应用,使用
dirsearch,ffuf,gobuster等工具进行目录和敏感文件(如/admin,/backup,/config.json,/phpinfo.php)的爆破。字典的质量至关重要,推荐使用SecLists项目中的字典,并根据目标特性进行自定义。 - 指纹识别:识别Web框架(Spring Boot, Django, ThinkPHP)、前端库(Vue, React)、中间件(Nginx, Apache, IIS)、第三方组件(Shiro, Fastjson, Log4j2)的版本信息。工具如
Wappalyzer(浏览器插件)、EHole、FingerprintHub。知道目标用了什么,你才能知道该用什么姿势去测试。例如,识别出Shiro,立刻想到反序列化;识别出Fastjson,立刻想到各种绕过。
注意:信息收集阶段要控制扫描频率和并发,避免对目标业务造成压力,触发对方的防护告警甚至封禁IP。这是体现“白帽子”素养的地方。
3.2 漏洞挖掘的常见切入点与思维模型
有了目标资产地图,接下来就是选择攻击面。我习惯将漏洞挖掘分为几个思维层面:
3.2.1 黑盒测试:外部观察与交互这是最常用的方式,把自己当成一个普通用户(或稍懂技术的用户)。
- 输入点挖掘:所有用户能控制数据的地方都是入口。包括:URL参数、表单字段、HTTP头(如Cookie, User-Agent, X-Forwarded-For)、文件上传点、API请求参数。
- 常见漏洞类型:
- SQL注入:参数后加单引号
‘、and 1=1、and sleep(5),观察响应时间或内容差异。使用sqlmap进行自动化检测,但务必理解其原理,手动验证往往更精准。 - 跨站脚本(XSS):在输入框提交
<script>alert(1)</script>,或构造URL参数?q=<img src=x onerror=alert(1)>。关注反射型、存储型和DOM型。现代前端框架(如Vue、React)在一定程度上缓解了XSS,但不当的v-html或dangerouslySetInnerHTML使用,以及服务端拼接输出仍是风险点。 - 跨站请求伪造(CSRF):检查关键操作(修改密码、转账、发表评论)的请求是否缺少不可预测的Token验证,是否仅依赖Cookie。
- 服务端请求伪造(SSRF):寻找有URL加载、图片处理、文件导入导出、远程API调用功能的地方。尝试使用
file:///etc/passwd、http://169.254.169.254/(云元数据)、http://localhost:8080/admin等作为参数。 - 文件上传漏洞:尝试上传特殊文件(如
.jsp,.php5,.phtml),配合解析漏洞、.htaccess配置、路径穿越(../../../shell.php)获取Webshell。 - 逻辑漏洞:这是奖金的高产区,也是最考验思维的地方。包括但不限于:
- 越权访问:水平越权(修改用户ID访问他人数据)、垂直越权(普通用户访问管理员功能)。
- 业务逻辑绕过:验证码可重复使用、订单金额可篡改、优惠券可无限领取、抽奖次数无限制。
- 流程缺陷:跳过关键步骤(如短信验证)直接进入下一步。
- SQL注入:参数后加单引号
3.2.2 白盒/灰盒测试:结合代码与架构如果你有目标系统的部分代码(如开源组件、前端JS),或者通过信息泄露获取了部分信息,可以进入更深层的分析。
- 前端代码审计:分析前端JavaScript代码,寻找硬编码的API密钥、接口地址、敏感逻辑。网络热词中提到的“vue 中img src路径 如何加token”就是一个典型场景,如果前端在拼接资源路径时,将Token以明文参数形式附加(如
/api/image?token=xxx),可能通过Referer泄露或导致Token被截获。 - 接口分析与未授权访问:通过浏览器开发者工具(Network面板)抓取所有API请求。重点关注:
- 返回数据量巨大的接口(可能泄露敏感信息)。
- 无需认证或认证脆弱的接口(如仅验证一个简单的数字ID)。
- 方法不当的接口(本应使用POST的用了GET,导致参数暴露在日志)。
- GraphQL接口:功能强大但若未做深度限制,可能导致信息过度暴露甚至拒绝服务。
3.2.3 特定组件与框架漏洞时刻关注主流组件爆出的高危漏洞(如Log4j2、Fastjson、Shiro反序列化)。一旦有新的漏洞利用方式(PoC)公开,立即用指纹识别结果匹配你的目标资产,进行批量验证。这往往是“捡漏”的黄金时间窗口。
4. 漏洞验证、报告撰写与提交策略
找到可疑点只是开始,严谨的验证和清晰的报告才是价值所在。
4.1 漏洞验证的“度”与原则
验证漏洞的目的是证明其存在和危害,但绝不能对业务造成实际损害。
- 最小化影响原则:证明漏洞存在即可。例如:
- SQL注入:用
sleep(5)证明时间盲注,或用union select null,null...获取无关信息(如数据库版本@@version),严禁拖取用户表数据。 - XSS:弹出自己的警告框(
alert(document.domain)),严禁窃取Cookie或进行钓鱼。 - 文件上传:上传一个仅包含
<?php phpinfo();?>的文本文件并重命名为.php,验证能否执行,严禁上传webshell或连接后门。 - 越权:访问他人的订单号,截图证明能看到他人信息,严禁修改或删除他人数据。
- SQL注入:用
- 保留证据:使用浏览器开发者工具、Burp Suite、Charles等代理工具完整截取HTTP请求和响应包。截图要清晰,包含URL、请求头、请求体、响应状态码和关键响应内容。视频录屏也是很好的辅助证据。
4.2 高质量漏洞报告撰写指南
一份糟糕的报告可能让一个高危漏洞被定为“低危”甚至“无效”。报告的核心是:让完全不了解背景的审核人员能快速复现并理解危害。
报告必备要素:
- 漏洞标题:简明扼要,如“【XX系统】后台管理接口未授权访问导致敏感信息泄露”。
- 所属厂商/产品:明确指向。
- 漏洞类型:SQL注入、未授权访问、逻辑漏洞等。
- 风险等级:根据厂商标准自评(高危、中危、低危),但最终以厂商评级为准。
- 漏洞详情:
- 漏洞URL:完整的请求地址。
- 请求方法:GET/POST/PUT等。
- 请求参数:详细的参数名和值。
- 复现步骤:分步骤、傻瓜式地描述操作过程。例如:“1. 打开浏览器,未登录状态;2. 访问URL:
https://target.com/api/admin/users;3. 观察到返回所有用户列表的JSON数据。” - 请求/响应数据:附上完整的Burp Suite数据包截图或文本。对关键部分进行高亮标注。
- 漏洞证明:截图或录屏,展示漏洞触发的效果(如弹出alert、返回敏感数据)。
- 修复建议:给出建设性意见,如“增加用户身份认证和权限校验”、“对用户输入进行严格的过滤和参数化查询”等。这体现了你的专业性。
4.3 提交策略:SRC、CNVD还是CVE?
这是本文的核心问题之一。如何选择提交渠道?
| 渠道 | 适用漏洞类型 | 主要收益 | 流程与周期 | 策略建议 |
|---|---|---|---|---|
| 厂商SRC | 该厂商自有产品、网站、APP、业务系统的漏洞。 | 经济奖励(奖金)、积分、荣誉证书、礼品、实习/工作机会。 | 提交→审核→评级→修复→发放奖励。周期从几天到数月不等,取决于漏洞复杂度和厂商效率。 | 首选。收益直接,反馈相对及时。务必遵守该SRC的规则。 |
| CNVD平台 | 在我国广泛使用的通用型软硬件产品的漏洞。例如:国产办公软件、中间件、工业软件、物联网设备固件等。 | 官方原创漏洞证明(CNVD-ID)。对升学、求职、评优有公信力。无直接经济奖励。 | 提交→初审→复现审核→分配CNVD-ID→协调厂商修复→发布公告。周期较长,通常数周至数月。 | 如果漏洞属于通用型产品,且厂商无活跃SRC或响应不佳,可提交CNVD。可与SRC提交并行不悖。 |
| CVE(通过MITRE或上游厂商) | 影响广泛的国际通用开源或商业软件漏洞。 | 国际认可的漏洞编号(CVE-ID),极大提升个人在国际安全社区的声誉。 | 通过CNA(CVE编号机构,如GitHub、红帽、甲骨文等)或直接向MITRE申请。流程严谨,周期长。 | 对于影响深远的开源组件漏洞,在向厂商报告的同时,可以尝试推动CVE编号申请。 |
一个实战案例:你发现某国内知名企业级软件“智慧办公系统v2.1”存在一个SQL注入漏洞。该软件被众多政府和企事业单位使用。
- 第一步:查找该软件开发商是否有SRC。如果有,优先提交至其SRC。
- 第二步:由于该软件属于通用型产品,影响范围广,你同时可以将漏洞详情整理后,提交至CNVD平台。在提交时,可以注明“已同步报告给厂商SRC,SRC编号为XXX”。
- 第三步:如果该漏洞非常经典且影响广泛,你甚至可以研究其是否源于某个开源组件(如某个数据库驱动),进而尝试向该组件社区申请CVE。
这样做,既通过SRC获得了可能的奖金,又通过CNVD获得了国家级的漏洞证明,一举两得。但切记,在向CNVD提交时,如果已与厂商SRC签订保密协议(NDA),需遵守协议条款,避免违约。
5. 常见问题、踩坑实录与进阶技巧
这条路我踩过不少坑,也总结了一些“野路子”之外的系统化方法。
5.1 新手常犯的十大错误
- 盲目扫描,触发风控:使用默认配置的扫描器高强度扫描,IP很快被ban,一无所获。
- 忽略规则,测试越界:在SRC规定范围外的资产进行测试,或使用禁止的测试方法(如DDoS测试、社工),导致漏洞被拒甚至被追责。
- 漏洞描述不清:报告里只有一句“这里有个SQL注入”,没有步骤、没有数据包、没有截图,审核人员无法复现,定为“信息不足”。
- 危害证明过度:为了证明漏洞危害,真的去下载了用户数据或篡改了业务数据,从“白帽子”变成了“黑客行为”。
- 分不清漏洞归属:把在阿里云上发现的WordPress漏洞报告给阿里云SRC,结果被告知应报告给WordPress或插件作者。
- 重复提交:同一个漏洞点,换不同参数或描述重复提交,会被视为刷分,影响信誉。
- 忽视逻辑漏洞:只盯着SQL注入、XSS这些传统漏洞,对业务逻辑层面的缺陷视而不见,而后者往往是高价值漏洞的富矿。
- 不关注补丁与更新:对一个已经打了最新补丁的系统,还在用旧的EXP测试,浪费时间。
- 缺乏耐心:提交漏洞后,隔几个小时就去催问进度,引起反感。安全审核需要时间。
- 闭门造车:不与其他安全研究者交流,不关注最新的漏洞情报、攻击技术和工具更新,进步缓慢。
5.2 我的独家避坑与提效技巧
- 搭建本地靶场:在本地用Docker搭建诸如DVWA、WebGoat、PentesterLab等靶场,或者直接部署一些开源项目(如OA系统、CMS)。这是你练习技巧、测试Payload而无需承担任何法律风险的绝佳环境。所有猜想和攻击手法先在靶场验证。
- 深度使用Burp Suite:别只把它当个抓包工具。学习使用Intruder进行爆破和模糊测试,使用Repeater进行手动测试,使用Scanner进行被动扫描,使用Extensions(插件)扩展功能。Burp是你的“瑞士军刀”。
- 培养“攻击者思维”:每看到一个功能,就问自己:“如果我是坏人,我会怎么滥用它?” 比如一个“忘记密码”功能,能否通过枚举手机号导致短信轰炸?验证码是否可被绕过?
- 关注“非主流”入口:移动端APP(抓包分析API)、微信小程序(反编译小程序的.wxapkg包)、PC客户端(可能内嵌Webview)、API文档(Swagger UI可能暴露未授权接口)、第三方集成(OAuth回调地址是否可被利用)。
- 善用Google Dorking:使用高级搜索语法,如
site:target.com inurl:admin,filetype:pdf site:target.com,intitle:"index of" "parent directory" site:target.com, 往往能发现意外之喜。 - 保持学习与复盘:定期阅读其他白帽子在公开平台(如知乎、安全客、Seebug Paper)写的漏洞分析文章。复盘自己提交的每一个漏洞,无论是否被收录,思考为什么成功或为什么失败。
5.3 当漏洞涉及CNVD流程时
如果你提交的漏洞被CNVD收录并分配了ID,后续可能会遇到:
- 漏洞细节保密期:在厂商修复前,CNVD和你有责任对漏洞细节保密,不得公开披露。
- 协调沟通:CNVD可能会联系你,向你核实漏洞细节,或向你同步厂商的修复进展。
- 证书获取:漏洞处理完毕后,你可以在CNVD平台上下载电子版的“原创漏洞证明”。妥善保管,这是你能力的官方背书。
漏洞挖掘是一场技术与耐心、规则与创意的博弈。从漫无目的地扫描,到有策略地信息收集;从只会用工具,到深入理解业务逻辑;从盲目提交报告,到精通SRC与CNVD的规则差异,每一步成长都源于实战中的思考和总结。这条路没有捷径,唯手熟尔。最后分享一点个人体会:真正的安全专家,价值不在于他找到了多少个漏洞,而在于他能否体系化地帮助一个系统变得更安全。把每一次漏洞挖掘和报告,都当作一次帮助他人加固城墙的机会,你的视角和收获会完全不同。