前面各章,你在靶场上打得很熟。 但"打靶场"和"真实世界找到漏洞"之间,隔着一道坎—— 这道坎不是技术,而是心态、方法和路径选择。 这一章,专门讲"怎么跨过去"。
23.0 开篇:为什么靶场打完,还是找不到真实漏洞
这是几乎每个新人都经历过的困惑:
"我在 DVWA 上过了所有关,在 Academy 上刷了几十个实验,
为什么一到真实目标,就什么都找不到?"
原因不在技术,而在三个"落差":
【落差一:靶场是"设计好让你找到的"】
DVWA 的每个漏洞都摆在明面上,参数就写着 ?id=1。
真实系统里,你可能连"有哪些接口"都要花半天去挖。
【落差二:靶场"假设你会用正常方式测"】
真实系统有 WAF、有各种过滤、有"看起来没问题"的流程。
你在靶场学的"直接打",到真实世界常常"打不动"。
【落差三:靶场没有"范围"和"目标"的概念】
真实世界里,你要先抉择"测哪个系统",这本身就极难。
🔥 本章要解决的,就是这三个落差。
23.1 从"靶场"到"真实":三个跨越
23.1.1 跨越一:从"找显式漏洞"到"梳理攻击面"
靶场里,漏洞在明处;真实系统里,攻击面要自己找。
训练方法:
□ 拿一个真实网站(你自己搭的、或明确允许测试的),
不做任何攻击,只做"梳理":
- 它有哪些页面?
- 它有哪些接口?(从 Network / JS 里找)
- 每个接口有哪些参数?
- 哪些需要登录?哪些不需要?
□ 把梳理结果做成一张表
□ 然后问自己:"如果我是攻击者,我会从哪个参数下手?"
💡 "梳理攻击面"这个能力,比"会打某个 payload"重要得多。 因为漏洞是有限的,攻击面是无限的——你要先学会"看全局"。
23.1.2 跨越二:从"直接打"到"先理解业务"
真实系统的漏洞,常常藏在"业务逻辑"里(第 16 章)。
训练方法:
□ 注册一个真实产品的账号(在允许的前提下)
□ 完整走一遍它的核心流程(如:注册 → 下单 → 支付 → 售后)
□ 每一步问:"这一步的'正常操作'是什么?我能'不正常'吗?"
□ 特别关注:金额、数量、状态、权限、一次性资源
这就是从"会注入"到"会找逻辑漏洞"的升级。
23.1.3 跨越三:从"能打进去"到"能讲清楚"
在靶场里,你打进去就行;在真实世界,你要"证明"和"解释"。
□ 每找到一个"疑似",先问:"这真的有危害吗?"
□ 如果只有"自己一个账号",能不能证明是漏洞?
□ 能不能用"最小、最无害"的方式证明?
□ 能不能写成"别人照着做也能复现"的步骤?
💡 "能复现 + 能证明危害"是真实世界的硬门槛——很多新手"觉得找到了漏洞",但其实无法证明,最后只能作罢。
23.2 漏洞赏金平台的正确用法
对新手来说,漏洞赏金平台(SRC)是"最合法的"真实目标来源。 但要用对。
23.2.1 主流平台
| 平台 | 特点 |
|---|---|
| HackerOne | 全球最大,项目多,规则清晰 |
| Bugcrowd | 类似,也有大量项目 |
| Intigriti | 欧洲流行 |
| YesWeHack | 欧洲 |
| 各处 SRC | 各厂商自建的(如字节、阿里、腾讯、补天、漏洞盒子等) |
23.2.2 新手选平台的三个原则
① 【优先选"范围宽"的】
scope 越大(比如 *.example.com),越容易找到东西
范围小的(只给一个域名)竞争激烈,很难有产出
② 【优先选"冷门"的】
热门项目成千上万人在看,你很难抢到"第一"
冷门项目(新上线、小公司)竞争者少,"漏网之鱼"多
③ 【优先选"有明确规则的"】
规则清晰 = 你知道"什么能做什么不能做" = 不会踩坑
规则模糊的平台,容易产生"赏金纠纷"
23.2.3 读规则(这是绝对的"红线")
每个赏金项目都有自己的"规则",必须逐字读完:
□ Scope:哪些资产在范围内?哪些明确排除?
□ 什么是"不接受"的?(很多项目不收"仅自我 XSS""需要用户交互"等)
□ 什么是"已知问题"?(已被人报过、或明确不修的)
□ 奖金规则:什么等级给多少
□ 报告要求:格式、语言、证据要求
□ 测试限制:是否允许自动化?是否允许 DoS?
⚠️ 违反规则测试 = 即使找到漏洞也可能"不算数",甚至被封号 / 惹麻烦。
23.3 新手该从哪里下手
23.3.1 最"适合新手"的漏洞类型
不要一上来就挑战"高级漏洞"。 新手最容易出成果的,是这几类:
【第一梯队:最容易出成果】
★ 访问控制(IDOR / 越权)—— 第 13 章
"改个 ID 就看到了别人的数据",门槛低、很常见、"值钱"
★ 信息泄露 —— 第 17 章
.git、.env、Swagger、Actuator、报错页面
"扫一下就有",是最容易的"第一个漏洞"
★ 业务逻辑 —— 第 16 章
"把数量改成 -1""跳过付款""重复领券"
不需要技术,只需要"不正常的心态"
【第二梯队:需要一点经验】
□ XSS(尤其是存储型)
□ SSRF
□ CSRF
□ 开放重定向
【第三梯队:难度较高】
□ SQL 注入(现代系统少了很多)
□ 反序列化
□ 请求走私
💡 真实世界统计:访问控制漏洞 + 信息泄露,占了赏金的很大比例。 而它们恰恰是"最不技术"的——新手完全可以从这里开始。
23.3.2 一个"新手友好的测试流程"
【第 1 天:被动信息收集】
□ crt.sh 找子域
□ 搜索引擎 Dork 找"暴露的文件"
□ 看响应头、看前端 JS
【第 2 天:梳理攻击面】
□ 注册账号,走一遍所有功能
□ 抓包,记录所有接口
□ 做一个"接口清单"
【第 3-5 天:针对性测试】
□ 访控:每个带 ID 的接口,换成"不属于自己的 ID"
□ 逻辑:金额/数量/状态/一次性资源,全部试边界值
□ 信息泄露:扫敏感路径(.git/.env/actuator)
□ 组件:识别框架版本,查已知 CVE
【第 6-7 天:深挖 + 记录】
□ 对"可疑点"逐个确认
□ 把"确认的漏洞"写成报告
□ 把"没确认的"记录下来,下次再看
23.3.3 "第一个漏洞"通常长什么样
真实世界的"第一个漏洞",往往"平平无奇":
□ 一个 .git 目录没关(信息泄露)
□ 一个接口改了 ID 就能看别人数据(IDOR)
□ 一个旧版本组件有已知 CVE(组件漏洞)
□ 一个报错页面泄露了版本 / 路径(信息泄露)
□ 一个接口少了权限校验(垂直越权)
它可能只有"中危"甚至"低危"——但它的价值在于:
① 让你"真正体验"从发现到报告的完整流程
② 建立"我能找到漏洞"的自信
③ 理解"真实漏洞长什么样"
④ 成为你"下一步"的基石
🔥 不要一开始就盯着"严重漏洞"。 一个低危信息泄露,也是"从 0 到 1"。
23.4 心态建设:这是最难的一关
很多人不是"技术上不行",而是"心态上先崩了"。 这一节专门讲心态。
23.4.1 四种常见的"心态崩溃"
① 【"我什么也找不到"】
测了三天,一个漏洞都没有,开始怀疑自己。
→ 正常。赏金猎人 90% 的时间都在"没有产出"。
② 【"别人怎么这么快"】
看到平台上"某某人又提交了严重漏洞",开始焦虑。
→ 你看到的"结果",看不到"他看了多少目标、花了多少时间"。
③ 【"被拒了 / 被判重复"】
好不容易提交一个,结果是 "Duplicate"(重复)或 "Informative"(信息性)。
→ 这是每一个赏金猎人的日常。继续。
④ 【"找不到'严重'漏洞,觉得没意义"】
找到一个低危,觉得"不值得报"。
→ 错。每一个都是经验,且低危也有价值。
23.4.2 正确的"期望管理"
□ 【第一个月】可能一个都没有——这很正常
□ 【第三个月】开始有"低危"产出——已经比 90% 的人强
□ 【半年到一年】能稳定找到"中危",偶尔"高危"
□ 【资深】对特定领域有"嗅觉",能"稳定产出"
⚠️ 赏金不是"稳定收入",是"彩票 + 技能变现"。
把"学习技术"作为主目标,"赏金"当作"副产品",
这样你会走得更远。
23.4.3 三个"提升产出"的实用建议
建议一:深挖一个目标,而不是浅尝一百个
新手常犯的错:每个项目花一小时,什么都没找到就换。
正确做法:选一个目标,花一周甚至更久,**彻底理解它**。
你会发现,越了解一个系统,越容易找到"别人没注意到的点"。
建议二:建立"自己的 checklist"
每次测试,都按"固定清单"过一遍(第 22 章的那张表)。
这能保证"不漏",也能逐渐沉淀"经验"。
建议三:复盘每一个"没找到"的目标
"这个目标为什么没找到漏洞?"——
是"防护确实好",还是"我漏了某些点"?
把"我漏的点"补进 checklist。
23.4.4 一个"90 天新手路线图"
【第 1–30 天:打基础】
□ 学完本书的基础篇 + 漏洞篇
□ DVWA 全通关 + Academy 刷 30 个实验
□ 建立"自己的 checklist"
【第 31–60 天:真实目标】
□ 注册赏金平台,读规则
□ 选 2-3 个"宽范围、冷门"的目标
□ 做"被动信息收集",梳理攻击面
□ 尝试找"信息泄露"和"IDOR"
□ 每个目标都写"测试记录"(即使没找到)
【第 61–90 天:深度 + 产出】
□ 锁定 1 个目标,深挖
□ 重点:访问控制 + 业务逻辑 + 信息泄露
□ 找到第一个漏洞 → 写一份规范的报告
□ 提交 → 接受结果(无论成功还是被拒)→ 复盘
💡 90 天的主要目标不是"赚多少钱",而是"走完一次完整流程"。 走通一次,你就"入门"了。
23.5 报告与沟通(赏金场景)
在赏金平台,"报告质量"直接影响"赏金多少"和"是否被受理"。
23.5.1 赏金报告的"加分项"
✅ 标题清晰:"IDOR in /api/order allows accessing other users' orders"
✅ 有明确的"复现步骤"(编号,可照着做)
✅ 有 POC(请求/响应报文、截图、有时是视频)
✅ 说明"真实危害"(而不只是"技术描述")
✅ 给出"修复建议"
✅ 说明"为什么这不是已知问题"
✅ 如果涉及"多账户",说明清楚
23.5.2 赏金报告的"减分项"
❌ 复现步骤不清晰,审核员看不懂
❌ 只有"技术描述",没讲危害
❌ 夸大危害(把低危说成严重)
❌ 没有证据(只有"我认为这里有问题")
❌ 提交了"已知问题"或"被重复的问题"
❌ 在"不允许"的范围测试,或用了"禁止"的方法
23.5.3 一个模板
Title: [漏洞类型] in [接口/功能]
Summary: 一句话说清漏洞和影响。
Steps to Reproduce:
- 以普通用户 A 登录
- 访问 ...
- 抓包,将参数 X 修改为 ...
- 观察:返回了 B 的数据
Impact: 攻击者可获取全体用户的 [具体数据],导致 [具体后果]。
Supporting Material: [请求报文] / [响应片段] / [截图]
Remediation: 在查询中增加属主校验:findByIdAndUserId(id, currentUserId)
Notes: 已确认不是重复问题(搜索了 HackerOne 历史 / 该接口为近期新增)。
💡 一个高质量赏金报告的结构,和 22 章的"六段式"完全一致。 因为**"清晰表达"是通用的专业能力**。
23.5.4 被拒了怎么办
【"Duplicate"(重复)】
→ 说明你"找到了,但慢了一步"
→ 正常;奖励是"先手者"的
→ 继续,下一个
【"Informative"(信息性)】
→ 说明"审核员认为危害不够 / 不可利用"
→ 反思:"我是不是夸大了?还是漏了'证明危害'的一步?"
→ 下次"把危害讲清楚"
【"N/A"(不适用)】
→ 说明"不在范围 / 不符合规则"
→ 检查:是不是我没读清规则?
🔥 一个被拒的漏洞,比一个没提交的漏洞有价值。 你至少走完了流程、得到了反馈。
23.6 动手任务
任务 1:做一次"纯梳理"练习
① 选一个网站(你自己搭的 / 明确允许被动观察的公开站点)
② 只做"梳理",不做任何攻击:
□ 列出所有页面
□ 从 JS 和抓包里提取所有接口
□ 记录每个接口的参数
③ 产出一张"接口清单表"
④ 对照清单,标注:"如果我是攻击者,我会从哪下手"
任务 2:把一个靶场当"真实项目"做
以 Juice Shop 为"目标",完整走一遍第 22 章的流程:
□ 写一份"授权书"(假设)
□ 信息收集(其实是"熟悉系统")
□ 攻击面梳理 → 做清单
□ 按清单测试
□ 写一份"像模像样"的报告
任务 3:读 10 份公开的赏金报告
去 HackerOne 的 Hacktivity,或各平台的披露报告:
□ 读 10 份"已公开"的报告
□ 每份记录:漏洞类型 / 怎么发现的 / 危害怎么描述的 / 报告怎么写
□ 总结"真实世界的漏洞"有什么共同点
任务 4:建立"个人检查清单"
把本书漏洞篇的各类漏洞,整理成一份"你测试时会逐项过"的清单。
每次练习 / 测试都用它,并根据"漏掉的点"持续更新。
任务 5:制定你的"90 天计划"
按 23.4.4 的框架,写出你自己版本的计划:
□ 第一个月学什么、练什么
□ 第二个月找哪些目标
□ 第三个月的目标产出
把它写下来,贴在你能看到的地方。
23.7 本章小结
核心结论
- 靶场到真实世界有三个落差:攻击面要自己找、要先理解业务、要能"证明危害"。
- 三个跨越:找显式漏洞 → 梳理攻击面;直接打 → 理解业务;能打进去 → 能讲清楚。
- 赏金平台选目标三原则:范围宽、冷门、规则明确。
- 读规则是红线:违反规则 = 即使找到也不作数,甚至惹麻烦。
- 新手最容易出成果的:访问控制(IDOR)、信息泄露、业务逻辑——它们最"不技术",却最"值钱"。
- "第一个漏洞"往往平平无奇(一个 .git、一个 IDOR、一个旧组件)——它的价值是"走通流程"。
- 心态是最大关卡:找不到、被拒、重复、无产出都是常态。
- 期望管理:第一个月可能零产出,这是正常的;把"学技术"当主目标,"赏金"当副产品。
- 三个提升建议:深挖一个目标、建立自己的 checklist、复盘每个"没找到"的目标。
- 90 天计划:打基础 → 真实目标 → 深度产出。目标不是赚钱,是走通一次完整流程。
- 赏金报告 = 六段式:清晰标题 / 复现步骤 / 危害 / 证据 / 修复建议 / 非重复说明。
- 被拒是常态:Duplicate / Informative / N/A 都各有原因,都是学习机会。
随身口诀
靶场到真实,先学会"梳理",再学会"理解业务";新手打 IDOR、信息泄露、逻辑漏洞,最容易出成果;第一个漏洞往往很"小",它的价值是"走通流程";心态最重要:找不到、被拒、重复,都是常态。
23.8 预告:下一章我们去哪
到这里,你已经能"找漏洞"了。
但**"会找漏洞"和"会做安全"**,是两件事。
下一章,我们换到防御者视角——讲怎么写安全代码。不是"泛泛的原则",而是每一类漏洞对应的、具体的、可落地的编码规范。
因为**"真正理解防御的人,才能成为更好的攻击者"**,也才能在职业上走得更远——企业真正需要的,不是"只能找麻烦的人",而是"能让系统变安全的人"。
第 24 章:安全开发实践。
📌 本章金句 "第一个漏洞之所以珍贵,不是因为它值多少钱,而是因为它完成了从'我知道理论'到'我做过一次'的跨越。这个跨越,比任何技术都难。走通它,后面就是时间问题。"