1. 项目概述:从“月入几百”到“月入十几万”的SRC掘金之路
每次看到SRC(安全应急响应中心)平台上的月度榜单,那些动辄十几万、几十万的漏洞奖励,再看看自己账户里偶尔到账的几百块“辛苦费”,心里总不是滋味。这感觉就像看着别人在同一个金矿里挖出金块,自己却只捡到几块石头。我干了快十年的网络安全,从最初的安全测试员到现在专注于漏洞挖掘,也经历过很长一段时间的“瓶颈期”。今天,我就以一个过来人的身份,和你聊聊SRC漏洞挖掘这件事。它绝不仅仅是懂点技术、会用几个扫描器那么简单。别人能月入十几万,而你只能月入几百块,这中间的差距,往往不在于技术的高低,而在于思路、方法、流程和持续学习能力的差异。这篇文章,我会把我这些年踩过的坑、总结的经验,以及那些真正能提升“挖洞”效率和收益的实战技巧,毫无保留地分享给你。无论你是刚入门的新手,还是正在瓶颈期挣扎的“老鸟”,相信都能从中找到突破的方向。
2. 核心差距解析:思维、流程与信息差
2.1 思维模式的根本差异:猎人 vs. 游客
很多人把漏洞挖掘想象成“扫雷游戏”,拿着扫描器(比如AWVS、Xray)漫无目的地扫一遍,然后盯着报告里那一堆中低危的“疑似漏洞”或者误报,花大量时间去验证,最后提交一些鸡肋的发现。这种模式,我称之为“游客模式”——走马观花,碰运气。而高收入的挖掘者,是“猎人模式”。
猎人模式的核心是主动狩猎和精准打击。 他们不会依赖自动化工具的泛扫。相反,他们会先花大量时间去“踩点”和“侦察”。比如,针对一个目标企业,猎人会做以下事情:
-
资产测绘与梳理
:不仅用
fofa、shodan、quake等网络空间测绘引擎找子域名、IP段,更会深入分析这些资产背后的业务逻辑。比如,发现一个admin.example.com的子域名,猎人不会直接去扫漏洞,而是会想:这是否是真正的后台?它和主站用户体系是否互通?历史上这个厂商的其他后台有什么特点? -
技术栈与架构分析
:通过指纹识别(如
Wappalyzer、whatweb,或自建指纹库)快速确定目标使用的框架(Spring Boot, Django, Laravel)、中间件(Nginx, Apache Tomcat)、前端框架(Vue, React)和第三方组件。知道技术栈,就能预判漏洞类型。例如,看到Vue.js+Node.js的架构,就会重点关注src目录引用、API接口未授权、JWT令牌缺陷等问题;看到Spring Boot带Actuator端点,就会去检查信息泄露和RCE。 - 业务逻辑深度理解 :这是产生高质量逻辑漏洞的关键。猎人会像真实用户一样去使用目标业务,注册、登录、下单、支付、退款、查看订单、修改资料……在每一个环节,都会思考:“如果我是攻击者,这里可以怎么绕过?” 比如,在支付环节,是否会存在金额篡改(将100元改成0.01元)、重复提交订单、利用负数导致余额增加等逻辑缺陷?这些是扫描器永远无法发现的。
我的一个实操心得 :曾经挖过一个电商平台的漏洞。我并没有先去扫描,而是花了整整两天时间,模拟了十几种用户购物场景,甚至研究了他们的优惠券组合规则。最后,我发现了一个在“合并支付”时,系统对优惠券的核销逻辑存在缺陷,可以导致用一张优惠券支付多个订单,相当于无限复用。这个逻辑漏洞最终被评级为高危,奖励远超我过去用扫描器扫一个月的中低危漏洞总和。
2.2 工作流程的系统性差距:散兵游勇 vs. 特种部队
月入几百的挖掘者,工作流程往往是随机的、间断的。今天听说A平台有活动,就去扫一扫;明天看到B厂商刚上线,再去碰碰运气。没有沉淀,没有复盘。
而高效猎人的工作流程是系统化、工程化的,可以概括为 “侦察 -> 武器化 -> 测试 -> 报告 -> 复盘” 的闭环。
1. 侦察与情报收集阶段:
- 目标筛选 :不是所有SRC都值得投入。他们会关注平台的活动周期(如春秋季攻防演练期间奖励会倾斜)、厂商的业务类型(金融、互联网往往预算更足)、历史漏洞类型(判断厂商的安全水位和关注点)。
-
信息聚合
:使用工具(如
OneForAll、Subfinder)自动化收集子域名,但更重要的是人工筛选。他们会建立自己的资产清单表格,记录每个域名的:所属业务部门、技术栈、敏感功能点(登录、注册、支付、文件上传、管理后台)、历史漏洞记录等。 -
漏洞模式学习
:在动手前,先去该SRC平台或
补天、漏洞盒子等平台,查看该厂商或其他类似业务厂商历史上被披露的漏洞。学习别人的思路,避免重复劳动,并寻找可能的“漏洞模式”。比如,某厂商的多个系统都出现过同一种SQL注入的过滤绕过方式,那么在新资产上很可能也存在类似问题。
2. 武器化与测试阶段:
-
工具链定制
:高手一定有自己打磨的工具链。他们不会只用现成的图形化工具。比如:
-
用
Python+Requests库编写针对特定业务逻辑的测试脚本(如批量检测短信轰炸、用户名枚举)。 -
用
Golang编写高性能的目录爆破、参数Fuzz工具,针对特定字典进行优化。 -
将
sqlmap、nuclei等工具进行深度定制,编写针对目标技术栈的专属检测模板(nuclei templates)。
-
用
- 测试用例库 :建立个人测试用例库,将常见的漏洞场景(如越权访问的URL模式、文件上传的绕过技巧、SSRF的利用方式等)整理成清单或思维导图。在测试时,对照清单逐一验证,避免遗漏。
3. 报告与复盘阶段:
- 报告质量 :这是决定奖金高低甚至是否被认可的关键。一份优秀的漏洞报告,不仅仅是证明漏洞存在,更要证明其危害。包括:清晰的复现步骤(带截图、视频)、完整的漏洞原理分析、详尽的利用过程(最好能获取到敏感数据或实现远程代码执行的证明)、以及严谨的危害评估建议。让审核人员一目了然,无需再次沟通。
- 深度复盘 :无论漏洞是否被收录,都要复盘。为什么能找到这个漏洞?是运气还是必然?测试方法是否可以抽象成通用模式?工具链是否有可以改进的地方?这个复盘笔记,就是你个人能力提升的“源代码”。
3. 实战技能精讲:从入门到精通的四个核心领域
3.1 信息收集:你的战场有多大,决定了你的收获有多少
信息收集的广度与深度,直接决定了漏洞挖掘的上限。很多人只收集子域名,这远远不够。
1. 资产发现(广度):
-
子域名枚举
:除了常用工具,要关注域名的历史解析记录(通过
SecurityTrails、DNS历史查询)、证书透明度日志(crt.sh)、以及跨域名的JS文件引用。有时,主域名没有漏洞,但其某个被遗忘的测试子域(test、dev、staging)可能满是漏洞。 -
端口与服务探测
:对重要的IP段进行全端口扫描(
masscan快速发现,nmap深度识别)。不要只盯着80,443。一些非Web端口如8080(管理后台)、873(rsync未授权)、6379(Redis未授权)、9200(Elasticsearch)往往能带来惊喜。 - 关联企业与并购信息 :大企业经常收购小公司。被收购公司的旧有系统,安全水平可能参差不齐,且容易被母公司遗忘,是绝佳的突破口。通过企查查、天眼查等工具,了解目标公司的子公司、投资公司信息,将这些关联公司的域名也纳入资产范围。
2. 指纹识别与架构分析(深度):
-
精准指纹
:建立自己的指纹库。关注那些能直接关联到已知漏洞的指纹。例如,识别出
Apache Struts 2.3.5,就意味着可以测试经典的S2-系列远程代码执行漏洞;识别出Fastjson 1.2.24,就要立刻测试反序列化漏洞。 -
源代码与目录结构分析
:通过常见的目录、文件泄露(如
.git、.svn、WEB-INF、phpinfo.php、备份文件.zip)获取部分甚至全部源代码。分析源代码是理解业务逻辑、发现隐藏接口和硬编码密钥的最高效方式。 -
API接口探测
:现代应用前后端分离,漏洞往往藏在API里。使用浏览器开发者工具(Network面板)、抓包工具(Burp Suite, Charles)或专门爬虫(如
katana),爬取所有API端点(尤其是/api/v1/这类路径)。分析其参数、请求方法(GET, POST, PUT, DELETE)、认证方式,这是发现越权、未授权访问、批量赋值等漏洞的宝库。
3.2 漏洞挖掘技术:超越扫描器的“手工艺术”
自动化扫描器是辅助,手工测试才是灵魂。以下分类型讲解核心手工测试点:
1. 业务逻辑漏洞(价值最高,完全依赖手工):
-
越权漏洞
:这是逻辑漏洞的“王冠”。分为水平越权(访问同级别其他用户数据)和垂直越权(普通用户执行管理员操作)。
- 测试方法 :抓取所有涉及对象ID(用户ID、订单号、文章ID)的请求,尝试修改ID值为其他用户的数据。不仅要测试查看(GET),更要测试修改、删除(POST, DELETE)操作。
-
常见场景
:
/api/user/123/info(尝试改为124),/api/order/delete?orderId=1001(尝试改为他人订单)。
-
流程绕过
:攻击者不按照正常业务流程走。
- 测试方法 :对多步骤流程(如注册->验证码->设置密码;下单->支付->成功),尝试跳过中间步骤直接访问最终步骤的接口;或重复提交某个步骤;或逆向操作(如未支付状态下直接调用订单完成接口)。
-
竞争条件
:在高并发场景下,对同一资源(如余额、库存、优惠券)的操作因时序问题导致逻辑错误。
-
测试方法
:使用工具(如
Burp Suite的Turbo Intruder插件,或自写多线程脚本)在极短时间内,重复发送“支付1分钱购买商品”或“领取唯一优惠券”的请求。
-
测试方法
:使用工具(如
2. 通用Web漏洞的深度测试:
-
SQL注入
:不要只依赖
sqlmap的默认检测。遇到WAF时,需要手工Fuzz:-
混淆技巧
:使用内联注释
/*!50000select*/,不同编码(URL编码、十六进制、Unicode),等价函数/语句替换(substring->mid->substr),以及利用数据库特性(如MySQL的/*!50000union*/select)。 - 盲注的优化 :对于时间盲注,可以构造更精确的布尔判断条件,减少请求次数,提高效率。
-
混淆技巧
:使用内联注释
-
XSS(跨站脚本)
:除了常见的
<script>alert(1)</script>,要测试:- 存储型XSS的利用链 :输入点可能在A页面,输出点在B页面。需要梳理数据流。
-
DOM型XSS
:重点分析前端JavaScript代码,寻找
eval()、innerHTML、document.write()、location.hash、postMessage等不安全的源(source)与汇(sink)。 -
绕过过滤
:尝试编码(HTML实体、JS Unicode)、利用标签事件(
onerror、onload)、SVG标签、<iframe>的srcdoc属性等。
-
SSRF(服务端请求伪造)
:目标是利用应用服务器作为跳板,攻击内网。
-
协议利用
:不仅测试
http://,还要测试file://(读取本地文件)、dict://(探测端口)、gopher://(攻击Redis/Memcached)、ftp://。 -
绕过技巧
:利用URL解析差异(
@、#)、DNS重绑定技术、IPv6地址、短域名重定向等。
-
协议利用
:不仅测试
-
文件上传漏洞
:核心是绕过前端和后端的双重校验。
-
绕过黑名单
:尝试特殊后缀(
.php5,.phtml,.phps)、大小写(.Php)、点号空格(.php.)、.htaccess文件上传、配合解析漏洞(IIS6.0的/xx.asp;.jpg, Nginx的CVE-2013-4547)。 -
绕过内容检测
:在文件开头添加图片头(
GIF89a),或使用exiftool将恶意代码写入图片的EXIF信息。
-
绕过黑名单
:尝试特殊后缀(
3.3 工具链的打造与高效使用
工欲善其事,必先利其器。但“利器”不是指软件越多越好,而是指一套高度自动化、定制化的流程。
我的个人工具链示例:
-
信息收集自动化脚本
:我用
Python写了一个脚本,输入一个主域名,自动调用subfinder,amass,assetfinder收集子域,然后用httpx探测存活,接着用nuclei跑一遍基础指纹和漏洞检测,最后将结果整理成一个清晰的HTML报告。整个过程一键完成,解放双手。 -
漏洞Fuzz专用字典
:我维护着几个字典文件:
-
目录字典
:融合了
dirsearch,dirb的大字典,并加入了根据目标行业(如教育、金融)特点自定义的路径(如/admin/edu/,/financial/upload/)。 -
参数字典
:除了常见参数(
id,page,file),还收集了各种API接口常见的参数名(如access_token,userId,orderNo)。 - Payload字典 :针对不同漏洞类型、不同WAF的测试Payload,分类存放,随时调用。
-
目录字典
:融合了
-
Burp Suite的深度定制
:
Burp不仅是抓包工具,更是测试平台。-
插件生态
:
Autorize(自动越权测试)、Turbo Intruder(高性能并发攻击)、Collaborator Everywhere(自动发现SSRF/Out-of-band漏洞)、Logger++(增强日志记录)。 - 项目级配置 :为每个重要目标创建独立的Burp项目文件,保存所有的请求历史、爬虫站点地图、自定义的扫描配置和插件设置。方便下次继续深入测试。
-
插件生态
:
3.4 漏洞报告与沟通:临门一脚,决定成败
很多不错的漏洞因为报告写得差而被降级或忽略。报告的核心是 “清晰、完整、专业” 。
一份高水准的漏洞报告结构:
- 漏洞标题 :简明扼要,如“【XX系统】后台管理接口未授权访问导致任意用户信息泄露”。
- 漏洞等级 :根据CVSS标准或平台规范,自评一个合理的等级(高危/中危/低危),并简述理由。
-
漏洞详情
:
- 影响URL :精确到存在漏洞的接口地址。
- 请求数据 :完整的HTTP请求包(包括Headers、Body),用代码块格式呈现。
- 复现步骤 :分步骤、傻瓜式教学。第一步打开什么页面,第二步点击什么按钮,第三步如何操作Burp……最好配上关键步骤的截图。
-
漏洞证明
:这是最关键的。如果是信息泄露,展示获取到的他人敏感数据(注意打码);如果是RCE,展示
whoami、ipconfig的执行结果;如果是逻辑漏洞,展示利用过程造成的实际业务影响(如0元下单成功)。 - 漏洞原理 :简要分析代码层面或逻辑层面的错误原因。这体现了你的专业深度。
-
修复建议
:给出具体、可操作的修复方案。不要只说“加强过滤”,而要说“建议在服务端对
orderId参数进行严格的所属权校验,确保当前用户只能操作属于自己的订单数据”。 - 时间线 (可选但很专业):记录你发现漏洞、报告漏洞的时间点。
一个血泪教训 :早期我曾发现一个存储型XSS,只在报告里写了“某处存在XSS”,附了一个
alert(1)的截图。结果被定为低危。后来我学会了,在报告中补充了利用此XSS窃取用户Cookie并登录他人账户的完整攻击链演示视频和截图,漏洞等级立刻被提升到了高危,奖金翻了几倍。 证明危害,而不仅仅是证明存在。
4. 心态、习惯与持续学习:通往“月入十几万”的内功
4.1 正确的心态建设
- 接受“空手而归”是常态 :漏洞挖掘不是线性收益的工作。可能一周甚至一个月都没有实质性收获。高手和普通人的区别在于,高手在“空窗期”依然在系统地学习、研究、打磨工具,为下一次机会做准备。
- 专注与深耕 :不要做“海王”,今天挖这个,明天挖那个。选定一两个你熟悉的行业(如教育、医疗、金融)或技术栈(如Java生态、PHP CMS),深入研究下去。你会对这个领域的常见架构、通用组件、历史漏洞了如指掌,挖洞效率会指数级提升。
- 保持好奇心与“破坏性”思维 :永远多问一句“如果……会怎样?” 看到一个正常功能,试着去想如何滥用它。这是发现逻辑漏洞的源泉。
4.2 高效的工作习惯
-
建立知识库
:用
Notion、Obsidian或本地Markdown文件,记录每一个挖洞过程、技巧、工具命令、漏洞模式。定期回顾整理,形成自己的“漏洞百科全书”。 - 时间管理 :将挖洞时间模块化。例如,上午专注信息收集和新目标初步探测;下午对高价值目标进行深度手工测试;晚上进行工具开发、知识学习和复盘。
- 协作与交流 :在合规的前提下,与圈内朋友交流思路(不透露具体漏洞细节),参加技术沙龙,关注安全研究员的博客和推特。别人的一个思路,可能帮你打开一扇新的大门。
4.3 持续的输入与学习
技术迭代飞快,昨天的漏洞今天可能就修复了,但漏洞挖掘的“道”是相通的。
-
跟进最新动态
:每天花半小时浏览国内外安全社区(如
Seebug、先知社区、安全客)、GitHub上的安全工具更新、以及各大厂商的安全公告。 -
学习底层原理
:不要满足于使用工具和Payload。去学习
HTTP协议、TCP/IP网络、数据库原理、操作系统机制、编译原理。当你理解了SQL语句是如何被数据库解析执行的,你就能创造出更精巧的注入Payload;当你理解了浏览器如何渲染页面,你就能发现更隐蔽的DOM XSS。 -
代码审计能力
:这是通往顶尖高手的必经之路。尝试去审计一些开源项目的代码(从简单的
CMS开始),学习如何在代码层面发现安全问题。这项能力能让你在“黑盒测试”遇到瓶颈时,打开“白盒”视角,降维打击。
这条路没有捷径,从“月入几百”到“月入十几万”,是一场关于思维、技术、习惯和耐心的综合修炼。它要求你从一个被动的工具使用者,转变为一个主动的问题发现者和解决者。希望我的这些经验,能成为你挖洞路上的一块垫脚石。记住,最大的漏洞,往往存在于我们的思维定式里。打破它,你就能看到别人看不到的风景。


被折叠的 条评论
为什么被折叠?



