逆向工程实战手册 第 96 章

第 96 章 SRC 高级方法论(攻击优先级 / 证据纪律 / WAF 绕过)

第 64 章讲了 SRC 的基础流程;本章是从真实 SRC 经验(22,132 个漏洞统计)提炼的高级工程方法论:怎么排攻击优先级(不瞎打)、怎么保存证据(提交不被拒)、怎么绕过 WAF(拿高分漏洞)。SRC 的分差不在"知道多少漏洞",在"测试纪律"。

📍 知识点地图 | 主题:SRC高级 | 前置:第64章 | 后续:— | 核心概念:攻击优先级、证据纪律、时间盒、WAF绕过

96.1 攻击优先级模型(不瞎打)

核心原则

不是所有漏洞等值: 高危占比有统计规律
时间有限: 先打"大概率高分"的,再打"低概率低分"的

三维评分(每维 0-3 分,总分 0-12):
  1. 漏洞严重性(数据影响/权限影响)
  2. 利用条件(是否需要认证/前置)
  3. 影响范围(单用户/全站/全库)
→ 得分高者优先

16 类漏洞的高危占比(统计排序)

高占比(优先打):
  RCE / 未授权访问 / SQL 注入 / 越权(IDOR)/
  反序列化 / 文件上传 / SSRF / 逻辑漏洞

中占比:
  信息泄露 / XSS(存储型 > 反射型)/ CSRF / 目录遍历

低占比:
  XSS(反射型普通)/ 低危配置 / 纯信息类

经验: 先扫"未授权 + RCE + 注入"三类(出洞率最高)

链式价值(Chain to escalate)

单点低危 ≠ 无用: 低危可能组合成高危
  例: 信息泄露(找接口)→ 未授权接口 → 任意文件读 → RCE
原则: 每个发现记录"能链到什么"(第 64 章 IDOR 送分洞思路)

96.2 时间盒管理(SRC 时间打法)

4 种时间模板(按目标类型)

模板 A: 6 小时快速(新上线系统/小众资产)
  前 2h: 信息收集+接口枚举
  中 2h: 主攻 3 类高危(未授权/RCE/注入)
  后 2h: 深挖可疑点 + 报告

模板 B: 定向深挖(指定目标/重点系统)
  侦察 → 功能全梳理 → 逐功能深测 → 逻辑漏洞重点

模板 C: HVV/攻防演练(时间紧迫)
  优先"能进"的(弱口令/未授权/漏洞利用)
  不求全,求突破

模板 D: SRC 日常刷分(碎片时间)
  每天固定 1-2h,按 96.1 优先级打

探索预算(时间分配)

每个功能/参数的探索时间预算:
  核心功能(登录/上传/支付): 深挖(长预算)
  边缘功能(统计/导出): 快速扫(短预算)
  超预算 → 记录待办,换目标(避免死磕)

96.3 证据纪律(提交不被拒的核心)

三条铁律

1. 还原原貌: 截图/请求展示"漏洞发生时"的真实状态
   (不修饰/不伪造/不事后补)
2. 双份证据: 请求+响应都要(单份易被质疑)
3. 步骤可复现: 任何人按你的步骤能复现(关键!)

证据要素:
  □ 完整请求(方法/URL/头/体)
  □ 完整响应(状态码/头/体)
  □ 时间戳(漏洞发现时间)
  □ 环境信息(浏览器/工具版本)
  □ 截图(关键界面)

DNSLog / 带外平台(无回显时的证据)

场景: 盲注/无回显 XXE/SSRF 探测
工具: DNSLog.cn / ceye.io(带外回调)
用法:
  1. 申请专属域名
  2. payload 里嵌入(如 .xxx.dnslog.cn)
  3. 观察回调记录 = 证据(时间/IP/记录)

截图规范

□ 完整 URL 栏(证明在哪)
□ 完整请求/响应(Burp 截图)
□ 关键内容高亮(减少审核负担)
□ 不裁剪关键信息

96.4 WAF 绕过方法论(拿高分漏洞)

通用绕过框架

WAF 检测内容:
  □ 关键字(select/union/<script>)
  □ 模式(SQL 语法特征)
  □ 行为(异常请求频率)

绕过维度(按层):
  1. 编码层: URL 编码/双重编码/Unicode/十六进制
  2. 语法层: 等价替代(and→&&、=→like、空格→注释)
  3. 结构层: 分块/换行/大小写混合/垃圾字符
  4. 逻辑层: 从"被防护的点"绕(找未防护接口)

各漏洞的 WAF 绕过速查

SQL 注入:
  注释代替空格: select/**/from
  等价函数: substr→mid、=→like→rlike
  Hex 编码: 0x61646d696e → 'admin'
  大小写: SeLeCt

XSS:
  大小写: <ScRiPt>
  编码: &#x73;cript / javascript&#58;
  事件变体: onerror/onload/onfocus/onpointerenter
  无括号: alert`1` / confirm`x`

SSRF:
  IP 变体(第 58.4 节: 八进制/十进制/短格式)
  URL 解析差异(@/#/%23)

文件上传:
  后缀变体: .php5/.phtml/.pHp
  内容伪装: GIF89a 头 + 图片二次渲染绕过

命令注入:
  空格: ${IFS}/{} 语法(第 58.8)
  引号变体: c'a't / c""at
  通配符: /bin/c?t

定向绕过(针对框架漏洞)

Log4j RCE(Log4Shell): ${jndi:ldap://...} 变体编码
Spring Actuator: 路径变体(双 URL 编码/分号/大小写)
Fastjson RCE: @type 的 Unicode/十六进制编码/嵌套 JSON

96.5 提交前自检清单(避免被打回)

□ 漏洞真实存在(多次复现)
□ 步骤可复现(按文档走一遍)
□ 证据完整(请求+响应+截图)
□ 严重性判断合理(对照厂商标准)
□ 影响描述准确(不夸大/不缩小)
□ 修复建议可执行
□ 无越界操作(范围/数据)
□ 报告格式规范(模板)

96.6 SRC 高级检查清单

□ 攻击优先级(三维评分/高危优先)
□ 时间盒管理(模板选择+预算)
□ 未授权/RCE/注入优先扫
□ 链式价值评估(低危组合)
□ 证据纪律(原貌/双份/可复现)
□ DNSLog 带外验证
□ WAF 绕过(分层框架)
□ 提交前自检(防打回)
□ 沉淀: 每次出洞记录模式(复盘)

动手练习

  1. 对一个靶场按"三维评分"给 10 个候选漏洞排序,验证你的优先级选择。
  2. 练习 WAF 绕过:用 DVWA + 一个 WAF 插件(如 ModSecurity),尝试绕过 SQL 注入防护。
  3. 写一份"证据完整"的报告(对照 96.3 清单),自己先按步骤复现一遍。
  4. 用 DNSLog 完成一次带外验证(SSRF/盲注),记录回调证据。

深入阅读

  • 仓库:skills/pentest-tools/src-hunter/references/methodology/01-attack-priority.md(优先级评分)
  • 仓库:skills/pentest-tools/src-hunter/references/methodology/03-evidence-discipline.md(证据纪律)
  • 仓库:skills/pentest-tools/src-hunter/references/methodology/05-srctimebox-priority.md(时间盒)
  • 仓库:skills/pentest-tools/src-hunter/references/payloader/waf-bypass.md(WAF 绕过 payload 库)
  • 仓库:skills/pentest-tools/src-hunter/SKILL.md(SRC 总纲)
  • 仓库:skills/pentest-tools/src-hunter/references/payloader/by-category/web/(按漏洞类 payload)