之前写过三个平台的规则差异,这篇换个角度:拿我自己的三份提交稿当样本,复盘”一份能过审的提交稿是怎么写的”。目标信息按惯例脱敏。
0x01 案例一:一条三级链的定级论证
链路:目标产品官网版本记录里的安装包分发地址 → 子域枚举发现运维主机 → Nacos(8848)/Redis(6379)/MySQL(3306) 三个服务裸奔公网。
链上每一环都实测:
- Nacos 2.0.4 带
User-Agent: Nacos-Server绕过认证(CVE-2021-29442 系),读取全部命名空间配置; - 某开发命名空间的
application.yml里有本机 Redis 明文密码; - 密码登录 Redis 5.0.14,主从复制加载恶意模块 RCE(容器内 redis 用户);
- 同一密码直接登 MySQL
root@'%',9 个业务库全量可读。
定级是这个案例最值得学的部分:结论定”高危”而不是直接抄 CVSS 9.8 的”严重”档,理由写明——严重档的 C/I/A 三项分别对应”配置全读/命令执行/缓存可清空”,其中 A 项(缓存清空)我实测过副作用并当场恢复;匿名可达、无前置条件,链路满配。“每一环均为实测”这半句话是审核最认的——推演链和实测链的定级待遇完全不同。
另一个细节是资产归属论证:运维主机域名和主站不同域,报告里用 ICP 备案号 + 官方版本记录中的分发域引用把归属闭环——SRC 打回的头部原因就是归属不清,这段论证宁可写长。
0x02 案例二:OIDC redirect_uri 前缀绕过
厦航统一登录的 authorize 端点,redirect_uri 校验用前缀匹配——.evil.com/@evil.com 一类的后缀拼接即可让授权码落到攻击者域(账号接管链的入口)。报告结构上我固定了一个模板:
基本信息表(类型/CWE/OWASP 映射/CVSS 向量逐项给出)
→ 复测时间戳 + 漏洞存活声明(实网验证,管理员最关心"现在还在不在")
→ 最小化 PoC(一个 URL,而非一堆变体)
→ 危害推演到业务(授权码 → token → 账号接管)
→ 修复建议(严格白名单全匹配 + state 校验)
CWE-601 + OWASP A01 的映射看起来是形式,实际是给审核员的”归类定位”,减少来回沟通。
0x03 案例三:OA 未授权访问(EDUSRC)
/api/folder/read/ 零认证(不带任何 Cookie/Session/Token),返回带 next 分页的目录接口,122 份内部文件可分页拉取。提交要点:
- “零认证”三个字单独成行加粗——EDUSRC 审核对”是否需要前置条件”极其敏感;
- 危害量化:文件数量、抽样内容类型(不粘贴敏感正文,截图中打码);
- 复核时间精确到秒(
2026-08-01 01:28:10 GMT,HTTP 200)——有精确复测时间戳的报告,打回率显著低。
0x04 提交稿写法五条(自我总结)
- 归属论证前置:备案号 + 官方引用闭环,别让审核员替你猜资产是谁的;
- 每一环标注【实测】:没测的写”推演”并降级表述——诚实反而是加分项;
- CVSS 给向量不给结论:向量是论证,分值是结论,让审核员能复核你的每一个值;
- PoC 最小化 + 危害最大化分开写:复现步骤越短越好,危害描述允许完整推演;
- 精确时间戳 + 复测声明:所有”存活”判断都挂时间,规避”无法复现”打回。
相关旧文
- SRC 漏洞提交实战笔记、我的第一个漏洞
- SSRF 深入利用(Redis 主从复制 RCE 的原理篇)