# 黑盒证据纪律

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

---

## 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 注入"
```

要写：
```http
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。
