Files
reverse-skill/skills/pentest-tools/src-hunter/references/methodology/03-evidence-discipline.md
T
2026-08-08 18:32:33 +08:00

7.4 KiB
Raw Blame History

黑盒证据纪律

视角:报漏洞之前,确保你说的每一句都站得住,平台审核员复现得了


1. 一句话原则

每个漏洞结论 = 一段可复现的 HTTP 流量 + 一段可观察的副作用证据。

没有这两段 → 不是漏洞,是猜测,不要写进报告。


2. 黑盒"幻觉"是怎么产生的

幻觉类型 典型表现 真实情况
响应特征幻觉 看到 500 + "syntax error" 就报 SQLi 可能只是参数类型不匹配,不一定可注入
延时幻觉 sleep(5) 后响应变慢就说时间盲注 可能是网络抖动 / 限流 / 偶发慢
回显幻觉 把自己输入的 payload 看到,就说 XSS 可能在 <textarea> / 已转义 / Content-Type=text/plain
报错幻觉 错误页提到 /var/www/html/... 就说路径泄露 可能本来就是公开文档
猜版本幻觉 看到 Server: nginx/1.x 就报 CVE 没有任何 PoC 验证
内部 IP 幻觉 DNSLog 收到一条记录就说 SSRF 可能是浏览器预读 / 第三方扫描
平台数据幻觉 "我以为是该公司的资产" 资产不在 scope,提交就违规

SRC 平台审核员每天看几百份报告,"我以为"漏洞会被秒拒并降低你的信誉分。


3. 黑盒证据三原则

原则 1:流量原貌

报告中的 PoC 必须是可以复制粘贴到 curl / Repeater 直接复现的。

不要写:

"在 search 接口提交 ' or 1=1-- 即可触发 SQL 注入"

要写:

POST /api/search HTTP/1.1
Host: target.com
Authorization: Bearer eyJhbGc...(脱敏到前 10 字符)
Content-Type: application/json
Content-Length: 45

{"keyword":"a' UNION SELECT version()-- -"}

加上:

  • 完整 URL(含协议)
  • 完整方法 + Header(敏感 Header 脱敏)
  • Body 一字不漏
  • 响应关键片段(截图 + 文本)

原则 2:差分证明

漏洞 = 行为偏离预期。证明偏离需要"对照组"。

测试 至少要有这 3 包
SQLi(盲) 真条件包(5s 延时) + 假条件包(即时返回) + baseline 干净包
IDOR 自己资源 200 + 他人资源 200(含他人数据) + 不存在资源 404
越权 普通用户拒绝 403 + 管理员通过 200 + 普通用户绕过 200(关键证据)
逻辑 正常流程的响应 + 篡改流程的响应 + 篡改后的真实副作用(订单出现)
SSRF 内网 IP 拒绝(参考) + 内网 IP 允许(漏洞) + 外网回连(DNSLog)

原则 3:副作用可观察

代码执行类漏洞,必须有"在目标上发生事情"的证据:

漏洞类型 副作用证据
RCE DNSLog / HTTP 外带回显 / 文件创建并读回 / 命令输出截图
SSRF 收到内网响应正文 / 元数据 token / 外部 callback 服务器日志
任意文件读 目标文件实际内容(/etc/passwd 含 root: 行 / 配置含真实数据库地址)
文件上传 上传后访问文件,得到非 404 响应
SQLi 实际数据:version()、current_database()、admin hash 前缀
XSS 弹窗截图 + URL bar / 配合 SRC 自家 XSS Hunter 平台收到 callback

严禁:拖库 / 删数据 / 改密码 / 留 shell。证据取到"足以证明能做"即停。


4. 复现率要求

漏洞等级 最小复现率 复现次数
P0 RCE / 鉴权绕过 100% 至少 3 次,间隔 1h+
P1 SQLi / IDOR 95%+ 至少 3 次
P1 逻辑 / 越权 90%+ 至少 5 次(不同账号 / 不同时间)
P2 / 时间盲 80%+ 至少 5 次,附带统计延时差
竞态 "在 N 次中能稳定 hit" 5 次以上,给脚本

复现率不到 → 在报告里主动说明("在 5 次测试中 4 次成功"),不要装作 100%。


5. DNSLog / 带外平台选择

用途 推荐平台
DNS 外带 dnslog.cn、ceye.io、Burp Collaborator、interactsh(免费、私有部署)
HTTP 外带 Burp Collaborator、requestbin.com、自建 webhook
LDAP(JNDI/Log4Shell) 自建 JNDI-Injection-Exploit / marshalsec
通用回连 webhook.site(界面友好,便于截图)

强烈建议自建 OOB 服务器:

  • 能保留完整证据日志
  • 不会和别的研究员撞 token
  • 可以放在不同 IP 段验证 SSRF "外网可达"

报告里写:

带外回显域名:xx.attacker.com(攻击者控制)
DNS 解析记录:2025-05-09 10:23:45 UTC,源 IP a.b.c.d 查询 xx.attacker.com
完整日志见附件 dns_log.txt

6. 截图规范

每张截图至少包含:

  • 完整 URL bar(证明域名 + 路径 + 参数)
  • 浏览器 / Burp 时间戳
  • 响应内容(与漏洞强相关的字段高亮)
  • 如有数据:马赛克脱敏,但保留位数和格式(手机号 138****1234、ID 12*****345)

报告封面页通常需要 1 张"漏洞总览图"(一眼看到结果)。


7. 录屏规范(高分漏洞建议)

P0/P1 漏洞,附 30s–2min 录屏极大提升过审速度。

录屏要点:

  • 开头露出 URL + 当前用户身份
  • 实时演示请求 + 响应
  • 关键页面/数据上有马赛克
  • 时间戳可见
  • 录完不剪辑(剪辑会被怀疑伪造)

工具:OBS、ScreenToGif、Burp 自带 Logger 录像、ffmpeg ffmpeg -f x11grab ...。


8. 范围 / 合规边界

报告之前自检:

  • 域名 / IP 在 program scope 内(看 H1/Bugcrowd policy)
  • 没有访问到他人的 PII(如果访问到了,立即停止 + 在报告中说明 + 不在报告中放原始数据)
  • 没有触发 DDoS / 大量请求(fuzzing 限速 1–5 rps,IDOR 遍历最多取 10 条样本)
  • 没有删除 / 修改任何数据
  • 没有上传可被他人访问的内容(webshell / 钓鱼页面)
  • 没有访问其他用户账号(OAuth 测试只用自己控制的两个账号)

不合规的"证据"会让漏洞作废 + 账号封禁。


9. 反模式(这些写法会被审核员秒拒)

❌ "可能存在 SQL 注入,建议进一步验证。"
❌ "推测后端使用了 MySQL,从而有时间盲注。"
❌ "由于 Header 里有 X-Powered-By: PHP,可能是反序列化漏洞。"
❌ "通过黑盒猜测,admin/admin 可能可登录。"(必须实测且只测 1–3 次,避免暴力)
❌ "我没有 PoC,但理论上可以..."
❌ "已上传 webshell,地址 /uploads/x.php"(违规)
❌ "我已经把 1000 条用户数据下载到本地"(违规)

正确:

✓ "通过 sleep(5) 与 sleep(0) 在同一参数下的稳定 5 秒延时差异,
   确认时间盲注存在。完整流量见附件 1,复现 5/5 次。"
✓ "通过两个测试账号 A、B,A 可以读取 B 的订单详情,
   附 HTTP 包 + 截图 + 仅 1 条样本(已脱敏)。
   未尝试遍历或导出。"

10. 自检清单(提交前过一遍)

  • 标题符合 [等级][条件][类型] 端点 - 一句话 格式
  • 资产在 scope
  • 复现步骤逐条编号,含完整 HTTP 包
  • 至少 1 张响应截图 + 1 张 URL 可见的截图
  • 副作用证据(外带 / 数据 / 文件)
  • 至少 3 次复现成功
  • CVSS 3.1 / 4.0 vector + 影响段
  • 修复建议(具体 + 可操作)
  • 未对生产数据造成不可逆影响
  • 个人 PII / 第三方数据已脱敏

走完这 10 条再点 Submit。