by v-yun
Claude Code skill: turn confirmed vulnerabilities into submission-ready DOCX reports | 漏洞报告成稿 skill(SRC/0day 提交稿、分层验证门、Step 式 PoC、截图铁律)
# Add to your Claude Code skills
git clone https://github.com/v-yun/vuln-report-skillGuides for using ai agents skills like vuln-report-skill.
vuln-report-skill is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by v-yun. Claude Code skill: turn confirmed vulnerabilities into submission-ready DOCX reports | 漏洞报告成稿 skill(SRC/0day 提交稿、分层验证门、Step 式 PoC、截图铁律). It has 50 GitHub stars.
vuln-report-skill's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/v-yun/vuln-report-skill" and add it to your Claude Code skills directory (see the Installation section above). vuln-report-skill ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh vuln-report-skill against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
EN: This skill turns confirmed vulnerabilities into submission-ready DOCX reports. The body is in Chinese because the target platforms (Chinese SRCs, CNVD/CNNVD, EDUSRC) require Chinese reports; the methodology is language-agnostic. See README.md for an English overview.
这是薄编排层,只做一件事:把已确认的漏洞写成可直接提交给审核方的 DOCX 提交稿。 漏洞怎么挖、怎么验证不在本 skill 范围;但"什么漏洞够格写成报告"的分层验证门已内联在本文,自成一体。
前置铁律:无 PoC = 不存在漏洞;影响没落地到链路终局 = 不写报告。P3 以下不写。
别把所有判断都攒到写报告前——那时才驳回,验证花的 token 全浪费了。第一道筛在挖掘过程中就跑,明显不够格的当场止损,根本不进报告候选;只有过了第一道筛的候选漏洞,才走到第二道完整验证门。
信号 ≠ 漏洞。每遇到一个信号,先花几秒钟分三档:
| 档位 | 判据 | 动作 |
|---|---|---|
| 当场止损 | 只读到自己测试账号的数据;内容是公开页面/默认样例/模板;疑似 catch-all 路由(用 zzz不存在<时间戳> 同协议跑一次就露馅);只有版本号/指纹/安全头缺失这类无危害信息 |
不再追、不进候选、不记录为漏洞 |
| 待验证信号 | 有异常但还没打到终局 | 继续往"别人的数据 / 真实生效的操作 / 命令执行回显"方向追;追不到就停在信号,不写报告 |
| 候选漏洞 | 已看到他人真实数据 / 操作真实生效 / 命令执行回显等终局迹象 | 标记候选、补证据,成稿前过第二道 |
第一道的目的是把"注定写不成报告的方向"在深挖之前砍掉,省的是整段验证的 token。
第二道:成稿前分层验证门 —— 候选漏洞走到写报告这一步时,过下方完整判据(硬门 + 类型命门 + 质量项),缺一不写。
分两层:硬门(所有漏洞必过,缺一不报)+ 按类型命门(不同类型的"关键钥匙")+ 质量项(尽力,不卡报告)。
zzz不存在<时间戳> 跑同协议,看是不是 catch-all/公开/样例;越权→用合法 body 重测排除 400 假阳性、POST 排除 SPA 回退;SSRF→确认是不是服务端正常连接功能而非越过边界。证伪不掉,才可能是漏洞;证伪掉了,作废不报。| 漏洞类型 | 命门(硬条件) |
|---|---|
| 数据泄露 | 别人的数据 + ≥3 敏感字段 + 非公开/非样例/非模板;自己测试账号数据 ≠ 漏洞 |
| 越权 / IDOR | A/B 交叉证明:A 拥有的资源,B 的 token 能读/改;只读到自己不报 |
| RCE / 命令执行 | 真实命令执行实证;"别人的数据"对 RCE 天然不适用,能执行命令本身就是危害 |
| SSRF | 服务端发出(回调 UA 证明 Java/Go/Python,非客户端 JS fetch)+ 有官方靶场必须先过靶场(不过不收);无靶场必须回显内网数据(云元数据/内网服务 banner/内网页面内容)。DNSlog 只是其中一步:出网响了 = 敲门砖,必须继续打到回显/危害终点,仅 dnslog 记录直接交 = 半成品不收 |
| 认证绕过 / ATO | 任意用户可绕过/接管,不只证明自己能登自己号;OAuth/JWT/密码重置逻辑要 A/B 双账号证明 |
| 业务逻辑 / 资金 | 操作真实生效 + 影响的是他人业务状态(金额/订单/状态机跳转),不是自己测试数据 |
| 文件上传 | 造成实际效果才算:webshell 可执行(getshell)或存储型 XSS 触发(HTML/SVG 被服务端解析);只传上去/能访问但纯存储不解析 = 不成立 |
| 注入 (SQL/NoSQL/SSTI/XXE) | 有确定输出/副作用证明(错误回显、时间差、OOB marker),不是"报错就报";SQL 注入最低共识 = 注出库名 database()(盲注需时间差 + 库名内容,特殊情况另议) |
各收录平台(CNNVD/CNVD/补天/厂商 SRC 等)规则取最严并集,任一否决项命中 = 不按 0day 成稿。
A. 版本与公开性(最新版不带洞 = 不是 0day)
B. 类型与前提(平台明文不收的类型,一票否决)
C. 案例与证据
D. 投递纪律(诚信红线)
报告必须同时满足两个维度,缺一份都不合格:
① 小白可复现 —— 让完全不懂安全的审核者也能照着一步步复现出来:
② 技术不空洞 —— 该有的技术深度一分不能少:
判断标准:一个产品经理照着能复现,一个安全工程师看了觉得技术扎实、无懈可击。两个都过才算合格。
生成方式:python-docx。从同目录 template.docx 复制起步(已含全部样式),逐节 append。不要手写 HTML 再转换。
样式(模板已内置,直接用样式名):
Normal(微软雅黑 11pt);章节标题 Heading 2(13pt 加粗);Step 标题 Heading 3;bullet 用 List Bullet。章节骨架(Heading 2 按此顺序,可选节用〔〕标注):
| 章节(Heading 2) | 内容要求 |
|---|---|
| 漏洞名称 | 一句话:资产 存在 漏洞类型 + 终局危害 漏洞 |
| 漏洞等级 | 严重/高危/中危 + 一句定级依据(标题就叫"漏洞等级",不加"自评"等后缀) |
| 漏洞类型 | 类型全称 + CWE(如有) |
| 漏洞影响资产 | 主资产域名/范围 + API 路径 + 关联资产 |
| 漏洞URL | 纯 URL 列表,一行一个,不写注解("它是干什么的、参数怎么被利用"归漏洞描述讲) |
| 漏洞描述 | 功能如何工作 → 根因 → 攻击者能干什么(编号列点)→ 关键验证结论(规模数字/IP/已确认事实) |
| 〔测试账号与会话上下文〕 | 测试角色、account_id、复验用 Cookie/token(注明"过期重登替换即可") |
| 漏洞复现步骤(POC) | 见下方 Step 规格 |
| 漏洞危害 | 危害枚举(编号,每条带已验证事实)+ 影响数据明文样本(便于审核直接验证,不打码)+ 边界声明(未做的越权动作)。就这一节,不另开"影响数据示例" |
| 修复建议 | 具体可执行(编号,含网段/参数级细节;根因已在漏洞描述讲清,不另开"根因分析"节) |
报告正文到「修复建议」为止。「复验清单」「建议评级说明」「实际攻击场景」「根因分析」「漏洞关键点」「影响数据示例」一律不单开节——复验走上方分层验证门(内部动作);定级理由只保留「漏洞等级」里的一句;攻击链时序和根因并进漏洞描述;数据样本并进漏洞危害。
成稿前先过上方「0day 收录审查门」(A 版本公开性 / B 类型前提 / C 案例证据 / D 投递纪律,任一否决项命中不成稿)。审查门没过 = 不按 0day 交付,回挖掘或换平台通道。
0day、通用产品漏洞不用上面的 SRC 章节骨架,一律按通用型漏洞报告模板成稿。章节顺序:
漏洞报告标题 → 漏洞发现时间 → 漏洞技术类型 → 漏洞描述(两段式:第一段产品介绍、第二段成因+危害)→ 漏洞危害 → 漏洞厂商全称 → 已知受影响产品及版本(附资产-产品强相关证明截图)→ 互联网资产证明(精准测绘语法 / 独立 IP 数量文字描述 / 测绘平台截图)→ 1、漏洞技术细节(完整 PoC:原始请求块+每步真实截图;触发条件)→ 2、复现证明(黑盒:3 个详细案例 + 10 个以上其他受影响目标)→ 3、修复方案(厂商修复 + 运维临时方案)→ 4、备注(边界声明)。
Step 规格(POC 章节内,每步严格这个结构):
[Heading 3] Step N:一句话标题
[Normal] 一两句话交代这步做什么、在哪个 URL 操作(必要背景并入此处,不写"为什么:"标签)
[Normal] PoC:
[Normal] POST /path HTTP/2 ← 抓包工具原始请求块整段贴入(纯文本段落,不打码)
Host: ...
...
[Normal] 结果: 一句结论(证明了什么)。**不贴返回数据包原文**——响应内容以截图为准,文字只写结论
[Normal] 截图(说明这是什么的截图):
<内嵌图片> ← docx.add_picture,紧跟"截图"段
[Normal] 图:xx_说明.png ← 图注一句
简洁硬规(违反即返工):
去AI腔硬规(违反即返工): 报告要读起来像安全工程师手写的,不像模型生成的。
写任何新报告前,先 Glob/Read 目标单位的报告目录,按四项查重:
资产(同域名/IP) 根因(同一鉴权缺失/同一逻辑缺陷) 接口/功能点 影响面
逐条打勾,硬门缺一不写:
[ ] 硬门0 证伪:假设"这是正常功能"并跑了否定实验,证伪不掉
[ ] 硬门1 PoC 可复现:能直接粘贴原始请求块,不需额外解释
[ ] 硬门2 危害是链路终局:资金/数据/接管/RCE/横向,不是中间信号
[ ] 硬门3 服务端/权限边界确认:不是浏览器 JS 假象/调试/渲染
[ ] 硬门4 命中类型命门(见上方按类型命门表对应行)
[ ] 硬门5 同根因接口穷举完、纵深追到边界,或记录"为什么到此为止"
[ ] 质量 否定实验:对存疑结论写出"如果这不是漏洞最可能的解释"并证伪
[ ] 质量 跨环境/跨账号/跨IP 至少一种复现
[ ] 质量 WAF:有防护记录绕过;无防护说明确认方式
[ ] 截图 每一步都有真实截图(浏览器打开原始 URL / 抓包工具实际响应,后台截图不抢前台),无一处自造渲染
[ ] 双读 小白照着能复现(操作→PoC→结果)且技术不空洞(根因+原理+关键证据)
硬门全过 → 写。质量项缺 → 不卡报告,但报告里说明。
复制 template.docx → python-docx 按「DOCX 版式规格」逐节填充。要求:
doc.add_picture(png路径, width=Inches(6)) 内嵌,紧跟"截图(...):"段落。报告每一步都必须配真实截图,绝不允许自己 PS/仿造/手绘渲染效果。
Page.captureScreenshot 等),禁止把浏览器窗口激活/聚焦到前台。截图 PNG 统一放临时目录 shots/(与 DOCX 同目录)。图片已内嵌 DOCX,报告成稿交付后 shots/ 随其它临时产物一并删除,不长期留存。
AI 不是天生会截图——截图能力来自浏览器自动化工具(MCP)。成稿流程开始时先检测当前环境,按三级阶梯走:
claude mcp add playwright -- npx @playwright/mcp@latest)。用户愿意装 → 装完回到第 1 级全自动。shots/step<N>_<说明>.png",用户放好后嵌入对应位置。禁止因为没工具就静默跳过截图、用"此处应有截图"占位、或用文字描述代替。用户也不提供截图 → 报告不满足截图铁律,明确告知"缺真实截图的报告大概率被平台驳回",由用户决定是否继续,不偷偷降级成无图报告。
平台审核开始用 AI 检测+人工直觉筛报告,模板化 AI 腔会被降权/忽略。逐条过:
文件名格式:资产 存在 漏洞类型 漏洞.docx
api.example.com 存在订单接口越权读取他人敏感信息漏洞.docx
console.example.com 存在文件上传绕过致存储型XSS漏洞_详细复现_2026-08-01.docx
阶段总结类可用:单位SRC测试工作存在阶段总结报告.docx
报告统一放 reports/ 下按单位/类型分目录:
| 目标 | 目录 |
|---|---|
| 企业 SRC | reports/<单位>src/ |
| EDU | reports/edu报告/(根目录,不放子目录) |
| 0day / 通用产品 | reports/0day/(走通用型模板;报告内需含测绘语法、独立 IP 数、统计来源和时间) |
| 其他新单位 | 在 reports/ 下新建 <单位>src/ |
只有确认漏洞的最终 DOCX 进这里。JS/抓取归档/临时产物一律不进,任务结束即删。
shots/ 截图目录随对应临时目录/中间产物一并删除(图片已内嵌 DOCX;Markdown 稿、转换中间文件也删)。flowchart TD
A0["挖掘中遇到信号"] --> A1{"⓪ 信号快筛<br/>止损 / 待验证 / 候选"}
A1 -->|"明显不够格"| A2["当场止损,不烧 token 深挖"]
A1 -->|"候选漏洞"| A["验证确认(有 PoC、打到真实危害)"]
A --> B["触发:/report 或「写报告」"]
B --> C{"① 查重<br/>同资产+同根因+同接口+同影响面?"}
C -->|"撞车"| C1["不新写 → 补强旧报告 / 换资产"]
C -->|"无重复"| D{"② 分层验证门<br/>硬门 + 类型命门"}
D -->|"硬门缺一"| D1["打回继续验证,不允许开写"]
D -->|"全过"| E["③ 生成 DOCX<br/>章节骨架 + Step 式 PoC + 真实截图"]
E --> F["④ 语义化命名 + 归档"]
F --> G{"平台审核"}
G -->|"驳回"| H["⑤ 底部追加申诉证据(不重写)"]
G -->|"通过"| I["收录 ✓"]
演示对象为虚构靶标
demo-shop.example,仅展示生成报告的版式与结构;第 3 张为公共靶场(AltoroJ / demo.testfire.net)实拍,演示真实浏览器渲染页的嵌入效果。 Demo uses a fictional target to showcase the layout of generated reports; page 3 is a real browser capture from a public practice target, showing how rendered pages are embedded.
| 报告首页(章节骨架) | PoC 步骤页(Step + 请求块 + JSON 截图) | PoC 步骤页(真实浏览器渲染截图) |
|---|---|---|
![]() |
![]() |
![]() |
A Claude Code skill that turns confirmed vulnerabilities into submission-ready DOCX reports for SRC (Security Response Center) and 0day platforms.
It doesn't find vulnerabilities — it makes sure the report is good enough to survive review.
template.docx ships all styles (Heading 2 sections, uniform black, linear plain document), generated section by section with python-docx.Copy the directory into Claude Code's skills directory:
# project-level
cp -r vuln-report-skill <your-project>/.claude/skills/report
# or user-level (global)
cp -r vuln-report-skill ~/.claude/skills/report
SKILL.md and template.docx must stay in the same directory.
Once a vulnerability is verified, just say:
/report
or "写报告 / 出报告 / 成稿 / 生成漏洞报告". The skill triggers automatically and runs gates → layout → workflow end to end.
python-docx: pip install python-docxclaude mcp add playwright -- npx @playwright/mcp@latest. The AI then opens original URLs and captures each step itself.shots/ — it embeds them for you. It will never fabricate a render or silently skip a screenshot.shots/ is temporary: images are embedded into the DOCX, and the folder is deleted when the report is finished.SKILL.md) is written in Chinese because the target platforms (Chinese SRCs, CNVD/CNNVD, EDUSRC) require Chinese reports. The methodology — verification gates, per-type criteria, PoC structure, anti-AI-tone rules — is language-agnostic.一个 Claude Code skill:把已确认的漏洞写成可直接提交 SRC / 0day 平台审核方的 DOCX 提交稿。
它不教你怎么挖漏洞,只解决一件事:报告写得够不够好。
template.docx 内置全部样式(微软雅黑、Heading 2 章节、全文统一黑色),python-docx 逐节生成,朴素线性文档,不堆表格卡片。把整个目录复制到 Claude Code 的 skills 目录:
# 项目级
cp -r vuln-report-skill <your-project>/.claude/skills/report
# 或用户级(全局可用)
cp -r vuln-report-skill ~/.claude/skills/report
目录内需保持 SKILL.md 与 template.docx 同级。
漏洞验证到位后直接说:
/report
或"写报告 / 出报告 / 成稿 / 生成漏洞报告",skill 会自动触发,按验证门 → 版式 → 流程走完全程。
python-docx(生成 DOCX):pip install python-docxclaude mcp add playwright -- npx @playwright/mcp@latest,AI 就能自己打开原始 URL 逐步截图。shots/ 目录,我来嵌入"。绝不会自造渲染图,也不会静默跳过截图。shots/ 是临时目录:图片已内嵌 DOCX,报告成稿后该目录自动清除。前提:你已经验证确认了一个漏洞(有可用 PoC、打到真实危害)。这个 skill 不负责挖漏洞,只负责成稿。
你: 我刚确认了 api.example.com 的订单接口越权,B 的 token 能读 A 的订单,
手机号/地址/身份证都拿到了,Burp 抓包和截图都在。写报告。
Claude:(自动触发本 skill)
1. 查重 —— 翻你历史报告目录,确认没写过同根因的
2. 过验证门 —— 逐条核对硬门/类型命门,不够格会直接告诉你缺什么
3. 生成 DOCX —— 按固定版式:章节骨架 + Step 式 PoC + 内嵌截图
4. 语义化命名 ——「api.example.com 存在订单接口越权读取他人敏感信息漏洞.docx」
5. 归档到 reports/<单位>src/;shots/ 截图目录成稿后自动清除(图片已内嵌 DOCX)
产物只有一份 DOCX,可以直接交平台。被驳回后说"报告被驳回了,补充申诉证据",会走底部追加模式而不是重写。
它会拒绝写什么:只有信号没到终局危害的、自己测试账号的数据、P3 以下、CORS/安全头类——验证门会直接拦下并说明原因,不会硬凑一份垃圾报告。
MIT — 详见 LICENSE。