1. 先搞清楚漏洞挖掘到底在挖什么
1.1 漏洞的本质:不是代码缺陷,是“预期之外的行为”
很多人一开始就把漏洞挖掘想得太神秘,觉得这是黑客圈子里高不可攀的绝活。实际上,漏洞的本质非常朴素——它就是一个程序在特定输入下,出现了开发者没有预料到的行为。这个“预期之外”,可能是用户越权看到了别人的数据,可能是输入了一段特殊字符导致后台命令被执行,也可能是提交了一个订单发现金额变成了负数。
我更喜欢用一个生活化的类比来解释:你楼下便利店的门,正常情况下一推就开,玻璃门本身也没什么问题。但如果你发现门缝里塞一张硬纸板就能把锁舌顶回去,那这个门就存在“逻辑漏洞”。开发者设计门锁时,默认所有人都会老老实实拿钥匙开,根本没想过有人会拿纸板去撬锁舌。网络安全里的漏洞挖掘,本质上就是扮演那个“拿纸板的人”,去试探系统的每一个门缝、每一个锁舌、每一个默认没被考虑的角落。
这里要特别纠正一个误解:漏洞挖掘不等于必须会读源码、会逆向、会写漏洞利用代码。对新手来说,绝大多数众测项目的高频漏洞集中在Web应用层,比如越权访问、逻辑绕过、信息泄露,这些靠的是细心和一套系统化的测试思路,而不是深不可测的底层功力。你只要明白“系统有没有做什么不该做的事”这个核心问题,就已经迈过了最重要的一道门槛。
1.2 一个漏洞值多少钱:平台的定价逻辑
新手最关心的往往是:挖到一个漏洞到底能赚多少?我可以直接告诉你,这个行业的价格标准差非常大,同级别漏洞在不同平台、不同项目里,报价可能差出十倍。
一般来说,众测平台会按照漏洞的危害等级定价。低危漏洞(比如轻微信息泄露、反射型XSS)通常在几十到几百元;中危漏洞(比如存储型XSS、越权读取他人信息)能拿到几百到两千;高危漏洞(比如SQL注入、任意文件上传、越权执行敏感操作)一般是两千到五千起;严重漏洞(比如RCE远程命令执行、核心数据批量泄露)则可能上万。
但真正影响价格的因素不止危害等级,还有三点:业务重要性、资产稀缺性和报告质量。同样的越权漏洞,出现在一个日活百万的支付接口上,和出现在一个内部后台管理系统上,价格完全不是一个量级。很多平台还会对首个发现某高危漏洞的提交者给予额外奖励,这种“首发加成”往往比漏洞本身的定级还高。所以,选择目标时优先挑核心业务、高价值资产,效率远高于漫无目的地撒网。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 新手入门路线:从靶场到真实目标的正确路径
2.1 基础功底怎么打:不是让你啃完整个计算机系
看到“网络安全学习路线”,很多人第一反应是收藏一堆书单然后疯狂吃灰。我必须说实话:一个已经工作多年的人让你从TCP/IP协议栈读到操作系统内核,那不是培养你,是在劝退你。对新手的合理路径,应该是“够用即可、边挖边补”。
你需要的最低限度基础包括三块。第一块是Web基础知识,至少要知道HTTP请求是什么结构,GET和POST有什么区别,Cookie和Session大概是个什么机制,前端和后端的分工边界在哪。第二块是至少一种编程语言的“读代码”能力,Python是最优选,因为你不需要写多优雅的程序,能力重点在于能看懂漏洞PoC里发生了什么,能跑通别人写好的利用脚本。第三块是常见漏洞类型的原理框架,OWASP Top 10是绕不开的清单,SQL注入、XSS、CSRF、SSRF、文件上传、越权,这些名词至少要知道攻击的大致流程。
我说的“够用即可”不是让你偷懒,而是结构性学习。举个例子,你不需要背下所有HTTP状态码,但你必须知道200、302、403、500这几个状态码在测试过程中意味着什么。你不需要精通正则表达式,但你在Burp Suite的匹配替换功能里要用到基本的规则。这些知识在实战中遇到一次,比在书里看十遍都记得牢。
2.2 靶场练习不是刷题,是要形成“肌肉记忆”
基础概念过完一遍之后,千万直接上真实众测平台,先去靶场。靶场界的两个顶梁柱是DVWA和sqli-labs,另外近几年比较流行的有Pikachu和Vulhub,它们覆盖了从SQL注入到反序列化、从文件上传到命令执行的大量典型场景。
练靶场最容易犯的错误是“跟着教程点一遍就觉得自己会了”。我在指导新手时一直强调:靶场练习的产出不是“通关截图”,而是三样东西。第一,一份你自己写的测试笔记,记录每个漏洞触发时请求长什么样、响应里有什么特征、判断依据是什么。第二,一段能复现漏洞的Python脚本,哪怕是简单到用requests库发一个带payload的请求都行。第三,一类漏洞的“测试思路清单”,比如测SQL注入时,单引号报错要试、数字型拼接要试、POST参数要试、Cookie头也不能放过。这份清单会跟着你进入真实项目,成为你操作层面的行动指南。
靶场里练出来的肌肉记忆有多重要,我举个例子:真实项目的SQL注入往往藏在某个看似无关紧要的排序参数后面,熟悉Burp Suite的repeater操作和编码方式的人,能够在几分钟内完成检测流程;而只会看教程的人,可能连参数的位置都找不到。这种差距不靠智商,纯粹靠熟练度。
2.3 从靶场到真实项目:选择适合新手的众测平台
靶场练完,下一步就是上真实项目。市面上的众测平台种类不少,有的偏向企业SRC,有的偏向第三方安全公司承接的众测项目,有的还有公益漏洞收集平台。对新手来说,选择平台的标准不是奖励高不高,而是“项目里有没有适合你水平的资产”。
怎么判断一个项目适合新手?看两点。第一,项目是否公开了明确的测试范围和规则,比如哪些域名可测、哪些接口禁止触碰、压测是否允许。规则越清晰,新手踩线的风险越低。第二,项目资产里有没有明显的边缘系统,比如低版本的CMS搭建的站点、没有WAF保护的老旧后台、测试环境或演示系统。这些系统往往是漏洞的高发区,也是新手最容易出成绩的地方。
需要特别提醒的是,千万别觉得自己水平不够就不敢上众测项目。平台上的真实业务系统千奇百怪,很多业务逻辑漏洞是开发者思路的纰漏,跟技术深度关系不大。我见过一个新手在一个生鲜电商的订单系统里,发现提交订单时可以同时修改订单金额字段,直接绕过了支付环节,这一个逻辑漏洞就被定级为高危。这种“业务型漏洞”恰恰是靶场里练不出来的,因为靶场没有真实的业务场景,只有真实系统才有。
3. 众测项目实战:一套可复用的挖洞流程
3.1 信息收集:决定你成功率的隐形分水岭
很多人打开众测项目就急着用Burp Suite抓包,然后对着主页面的几个参数一顿乱测。这种做法不能说完全没机会,但效率极低。真正专业的众测流程,信息收集阶段占用的时间应该达到整个项目的三到五成。
信息收集的层级可以分四层。第一层是根域名和子域名枚举,目标资产清单里给的往往是几个主域名,但真正存在漏洞的常常是某个被遗忘的子域名,比如test.xxx.com、dev.xxx.com、old.xxx.com。用subfinder、oneforall这类工具做一轮子域名收集,再通过httpx做存活探测,能迅速扩大攻击面。第二层是端口和服务识别,一个对外开放的6379端口很可能就是未授权的Redis,一个8443端口可能挂着未更新的管理后台。nmap的常见端口扫描脚本是基本功。第三层是Web指纹识别,whatweb、wappalyzer、指纹库都能帮你判断目标网站用的CMS、中间件、框架和版本,一旦发现是某个存在已知漏洞的版本,你就能快速定位测试方向。第四层是目录扫描和JS文件分析,dirsearch扫描常见备份文件、敏感路径,然后抓取前端JS文件进行接口提取,很多未授权接口就是这么被发现的。
信息收集的核心思路是“扩大攻击面,寻找薄弱点”,你可以把目标系统想成一座城堡,正面城门防守严密,但城堡周围的下水管道、侧门、废弃岗亭可能就是突破口。新手最容易忽略的正是这种系统性信息收集,一上来就盯着主域名硬攻,拿着XSS和SQL注入的payload轮番轰炸,大多数请求都会被WAF拦下,最后无功而返。
3.2 漏洞挖掘的核心思路:从“功能逻辑”切入比“暴力测试”高效十倍
我观察过大量新手提交的低质量报告,发现一个共性:大家都在测“参数有没有过滤”,却很少有人问“这个功能合不合理”。前者是机械的漏洞扫描思维,后者才是真正的漏洞挖掘思维。
举一个越权漏洞的经典场景:一个普通的用户中心有条URL是/user/info?id=1001,正常逻辑下,id为1001的用户只能查看自己的信息。新手会拿SQL注入的payload去测这个参数,而高手会做三件事:先把id改成1002,看能不能读到别人的信息;再试POST方法提交同样的参数,看是否存在接口逻辑不一致;最后检查响应里是否返回了手机号、身份证号等敏感字段。这三步完成的横向越权测试,不需要任何复杂的工具,纯粹是思维层面的测试。
另一个常见的切入点是业务流程中的状态篡改。比如一个找回密码功能,正常流程是“验证手机号 → 设置新密码”,但如果你在第二步把手机号参数改成一个不存在的号码,系统可能会因为没有严格绑定会话而让你直接重置任意账号的密码。再比如一个积分兑换功能,正常流程是“提交兑换请求 → 扣减积分 → 发放奖品”,但如果你并发提交多个兑换请求,系统可能出现积分扣减和奖品发放的竞态条件,让你用一份积分兑换多个奖品。这类逻辑漏洞在真实业务中大量存在,而且危害往往高于普通的注入类漏洞,因为它们直接攻击业务规则本身。
3.3 报告撰写:决定你收益的最后一公里
挖到漏洞只完成了工作的一半,另外一半是把漏洞清楚、专业地呈现在报告里。很多新手挖到了真实漏洞,却因为报告写不清楚而被平台驳回,或者被降级处理,非常可惜。
一份合格的漏洞报告至少要包含五个部分:漏洞url和参数位置、漏洞类型、漏洞详细描述、复现步骤(附请求包和响应包)、危害证明与修复建议。复现步骤要精确到每一步操作,让审核人员照着操作就能复现,任何一步都别省略。危害证明要尽量展示影响范围,比如越权漏洞最好贴出两个不同账号的数据对比截图,证明数据确实是别人的而不是自己构造的。
我在自己的项目里会额外加两个增强报告质量的细节。第一,在请求包中用注释标明关键参数,方便审核人员快速定位问题点;第二,修复建议中给出两个以上备选方案,比如“建议增加权限校验,在service层校验当前用户ID与会话用户ID是否一致”,这种写法会让审核人员觉得你是真的理解漏洞成因,而不仅仅是碰巧触发了一个异常。报告质量直接影响定级和奖励,这一点值得花至少半小时认真打磨。
4. 我踩过的坑:新手最容易犯的错误
4.1 授权边界:一次越界就可能让号没了
众测平台上的每一个项目都有自己的测试范围,有的项目允许测试所有子域名,有的只允许测试特定业务线,有的明确禁止进行拒绝服务攻击和物理渗透。这些规则不是摆设,而是法律授权协议的一部分,超出了这个范围,哪怕你发现的是惊天大漏洞,结果也只会被封号,甚至可能带来法律风险。
我见过一个真实案例:某平台项目允许测试主站域名,但有一条规则是“禁止对后台系统发起暴力破解”。一位新手在测试过程中发现了管理员后台,顺手对登录接口跑了一份常用密码字典,结果触发了平台的风控系统,账号直接被封禁,之前提交的IP和昵称全部拉黑。这个操作本身技术含量不高,但它触碰的是“测试边界”这条高压线。
另外还要注意,发现敏感信息时不要随意下载或保存原始数据。比如你在测试时发现一个未授权接口可以读取大量用户手机号,正确的做法是只请求一条数据作为证明,截图后立即停止访问,并在报告中说明数据泄露风险。如果你把几万条数据全部抓下来“留着研究”,性质就完全不同了。
4.2 误报与自我怀疑:漏洞挖掘是场心理战
新手在众测过程中最消耗心力的其实不是技术问题,而是情绪问题。你可能花三个小时测试一个接口,却发现所有payload都被WAF拦截了;你可能凌晨两点发现一个看似完美的越权漏洞,结果报告提交后第二天被告知“该接口本身就不校验权限,不属于漏洞”。这些经历很容易让人产生自我怀疑。
我的建议是建立起一套自己的“验证过三关”标准,降低无效验证的概率。第一关是原理关,你要能在心里清楚地回答“为什么这个漏洞可能存在”,比如你测一个越权漏洞,前提是系统应该存在权限区分,如果连管理员和普通用户都能访问同一个接口,那这个接口本来就没做权限控制,越权是否成立就要看业务需求。第二关是复现关,同一个步骤至少重复执行两遍,确保不是偶然现象。第三关是危害关,你要能清晰地回答“这个漏洞能被利用来做什么”。三关都通过,再提交报告,被驳回的概率会大幅下降。
4.3 效率低下的三个坏习惯
第一个坏习惯是只会用Burp Suite的重放功能,不会写脚本批量测试。当你面对一个系统里几十个相似接口时,手动一个个测不仅累,还会漏测。用Python脚本批量发token、批量替换参数、批量判断响应特征,这套自动化能力值得每个众测新手尽早掌握。
第二个坏习惯是不做记录。很多人的测试过程就是打开浏览器一顿操作,发现什么算什么,完全不留痕迹。到写报告的时候发现请求包找不到了,复用步骤复现不出来了,只能重新测试一遍。正确的做法是每个测试请求都标记好用途,测试结论随手记录在笔记里,哪怕是不成立的结论也要记,因为下次换个项目你会遇到同样的测试场景。
第三个坏习惯是沉溺于“高难度漏洞”幻想。新手总盼着发现一个RCE漏洞一战成名,但现实是,RCE在众测项目中的占比极低,绝大多数是什么?是越权、信息泄露、逻辑绕过这类“看起来不够炫”的漏洞。先把这些基础漏洞测熟练,你才能积累对系统的整体感知能力,而这种感知能力恰恰是发现复杂漏洞的前提条件。
5. 常见问题速查与我的经验心得
5.1 新手常见问题速查表
| 问题 | 我的回答 |
|---|---|
| 不打基础能直接去挖洞吗? | 可以试,但大概率挫败,信息收集、HTTP基础和Burp Suite操作是底线 |
| 先学编程还是先学挖洞? | 边挖边补,至少要能读懂Python脚本和修改PoC |
| 挖不到高危漏洞正常吗? | 太正常了,新手前三个月能把低中危漏洞摸透已经算优秀 |
| 漏洞报告会被抄袭吗? | 平台方有优先级和保护机制,你的提交时间就是证据 |
| 一个平台不行要换一个吗? | 可以换,但先复盘是自己水平问题还是目标难度问题 |
| 多人提交同一个漏洞怎么办? | 平台通常认第一个提交的人,所以复现和报告要快 |
| 要不要学编程语言之外的逆向和PWN? | 那是进阶方向,Web众测阶段先不用急着碰 |
5.2 我个人在实际操作中的几点体会
做了这么久的漏洞挖掘,我最大的体会是:这个行业真正稀缺的不是“天才型攻击手”,而是“稳定的工程型测试者”。天才可能一次挖出十个漏洞,但下个月状态不好就颗粒无收;工程型测试者虽然每一步都不惊艳,但他们有完整的信息收集流程、规范的测试清单、严谨的记录习惯,每个月都能稳定产出中高危漏洞。在众测这个赛道上,稳定输出永远是散户最核心的竞争力。
第二点体会是关于学习方式的。我一直建议身边的新手准备一个“漏洞类型自检表”,把OWASP Top 10每一种漏洞的检测方法、关键参数、误报特征整理成表格,每次测新项目时按表走一遍。这个方法看起来很笨,但它能有效避免漏测,而且随着实战次数增加,这张表会被自动扩充进你自己踩过的坑和总结的技巧,最终变成一份只属于你的测试方法论。
最后分享一个提高效率的小技巧:把Burp Suite和浏览器插件配合使用,用Cookie-Editor保存不同测试账号的会话,用HackBar快速构造复杂请求,用Wappalyzer识别目标指纹。我在这套工作流上花费的定制时间大概是一周,但产出的效率提升绝对超过一倍。众测这条路很长,但也没有想象中那么难,只要路线清晰、习惯良好、输出稳定,你会在三个月后看到明显的变化。
