I Made an AI Agent That Reverses CVEs While I Sleep
整体摘要
这期视频完整演示了如何搭建一个"睡觉时自动逆向 CVE"的 AI Agent。核心方法论是 Reversing CVEs:每天都有数百个 CVE 带着公开补丁披露,能读懂补丁就能理解漏洞、写出可用 PoC 并转化为真实漏洞发现。系统的架构是"Claude Code 当大脑、Zapier MCP 当双手":Zapier MCP 挂载 GitHub 与 Google Sheets 两个应用负责写仓库和备份;数据源用 Patchstack 漏洞数据库,过滤出 CVSS ≥ 6 的 WordPress 插件高危漏洞;项目里的 Claude.md 充当"家规"规定完整工作流(拉数 → 过滤 → 跳过 admin-only → 按年份/CVE ID 归档 → 推送 GitHub),reversing skill 则规定逆向方法(映射 wordpress.org、下载漏洞版与修复版做 diff、定位 source/sink、产出含 HTTP 方法/endpoint/权限/参数/curl 的 PoC)与交付物(readme、report.md、poc.md、nuclei 模板)。一句 "get today's CVEs and reverse them" 即可批量触发,7 分钟逆向出一批 CVE(含未认证 SSRF 的完整报告与 nuclei.yaml),再挂上 cron 就是每天自动产出的"CVE 工厂"。彩蛋环节用 Agent 自己写的 PoC 在实验环境实测成功,全链路闭环。整套方案免费、开源,且明确限定为本地实验用途而非批量利用工具。
开场与核心概念——什么是 Reversing CVEs(00:00 - 01:46)
提出"逆向 CVE"这一核心方法论——每天有数百个 CVE 带着公开补丁披露,能读懂补丁就能理解漏洞、写出可用 PoC 并转化为真实漏洞发现。作者据此构建了一个全自动 AI Agent,并说明为什么选 WordPress 作为训练场。
| 时间 | 类型 | 说明 |
|---|---|---|
| 00:19 | 核心概念 | Reversing CVEs:读补丁 → 理解 bug → 写出可用的 PoC → 变成真实 finding |
| 00:26 | 重点结论 | 不必从零找漏洞:每天都有数百个 CVE 披露,补丁就公开摆在那里 |
| 00:29 | 核心概念 | AI Agent 全自动流水线:每天早晨拉取新的重要 WordPress CVE → 逆向工程 → 生成 POC 和 nuclei 模板 → 睡觉时把完整 write-up 提交到 GitHub 仓库 |
| 00:42 | 核心概念 | 架构分工:Zapier MCP 是"胶水/双手",Claude Code 是"大脑" |
| 00:52 | 关键点 | WordPress 三大优势:开源(插件补丁的前后对比就在 diff 里)、漏洞量惊人(永远不缺练习素材)、进攻更大闭源目标前的完美训练场 |
| 01:13 | 重点结论 | 整套东西(CVE 逆向 skill、自动化、完整 setup)全部免费,并在作者的 GitHub 开源 |
| 01:30 | 重点结论 | 快速总览:Claude Code 负责查找和逆向 CVE;Zapier MCP 负责连接 GitHub、写表格、提 issue 等具体动作——几乎不用写代码 |
视频开门见山给出一个大多数人入门漏洞众测(bug bounty)时没意识到的事实:你不需要从零开始找漏洞。每天都有数百个 CVE 被披露,而且补丁(patch)就公开摆在那里。只要你能读懂补丁,你就能理解对应的 bug,写出能跑的 PoC(概念验证),并把它变成一个真实可提交的漏洞发现——这套做法叫"逆向 CVE(reversing CVEs)",比听上去容易得多。
作者构建的 Agent 完整自动化了这条链路:每天早晨自动拉取新披露的高危 WordPress CVE,做逆向工程,自动生成 PoC 和 nuclei 漏洞扫描模板,然后在作者睡觉时把完整分析报告提交到 GitHub 仓库。整个系统的粘合剂是 Zapier MCP,大脑是 Claude Code。
选 WordPress 作为切入点的理由:它是互联网上最容易起步的地方——代码开源,插件修补 bug 时前后代码对比(diff)直接可见;漏洞数量惊人,永远不缺练习对象;是进攻更大闭源目标前的完美训练场。作者强调,视频里展示的一切(CVE 逆向 skill、自动化流程、整套 setup)都是免费的,并且会在他的 GitHub 上开源,观众看完视频就能自己克隆运行。
搭建 Zapier MCP"双手"(01:46 - 05:17)
完整演示 Zapier MCP 的配置流程:在 mcp.zapier.com 创建 MCP server,挂载 GitHub 与 Google Sheets 两个应用并授权相应操作,然后把 MCP 接入 Claude Code,最后用一个"创建 README"的小任务验证连通性。
| 时间 | 类型 | 说明 |
|---|---|---|
| 01:47 | 关键步骤 | 第一步:登录 mcp.zapier.com,点击 "new MCP server",客户端选择 Claude Code |
| 02:08 | 提示 | 除 Claude Code 外也支持 Cursor、ChatGPT、Gemini CLI 等客户端 |
| 02:18 | 注意 | 新建的 MCP server 默认没有任何应用,需要手动 Add apps |
| 02:24 | 关键步骤 | Add apps 可挂载的能力:邮件、Notion、Slack、Discord 等 |
| 02:42 | 关键步骤 | 本视频只挂两个应用,第一个是 GitHub,授权:创建评论、创建/更新文件、创建 gist、创建 issue、创建 PR |
| 02:57 | 关键步骤 | 第二个是 Google Sheets,用于把所有成果备份到表格(两份存储非必需;作者偏好双份是因为表格比 GitHub 更好搜索) |
| 03:17 | 关键步骤 | 接入 Claude Code:复制页面给出的命令 → 到终端执行 → 自动写入 cloud.json 配置 |
| 03:38 | 关键步骤 | 运行 claude mcp → 选择 Zapier → 确认认证 → 浏览器自动打开 → 点击 Allow 完成授权 |
| 04:09 | 示例 | 连通性验证:对 Claude Code 说 "using Zapier MCP, create a readme for this repository that says this will be my CVE repository for all my reverse engineered CVEs from WordPress" |
| 04:39 | 注意 | 中途遇到 Anthropic 账号登录失效(可能是更新导致),重新登录后重试即可 |
| 05:05 | 重点结论 | 返回 "Call Zapier. Done. Readme created.",README 成功出现在仓库里,MCP 权限验证通过 |
这一章是"双手"部分的搭建。流程:登录 mcp.zapier.com 后点击 "new MCP server";由于要接 Claude Code,客户端点击 Claude Code(也提供 Cursor、ChatGPT、Gemini CLI 等选项)。
刚创建好的 MCP server 里没有任何应用(作者为避免泄露邮箱等信息提前建好了自己的),需要点 "add apps" 挂载想让 MCP server 操控的能力:发邮件、写 Notion、Slack、Discord 都可以。本项目只用两个:
- GitHub——授权创建评论、创建/更新文件、创建 gist、创建 issue、创建 PR,由它负责把逆向出的 CVE 写进仓库做归档;
- Google Sheets——把所有内容再备份到表格。作者强调两者不必都做,他偏好双份只是因为表格检索比 GitHub 方便。
接入 Claude Code:复制 Zapier 给出的命令,到终端里执行,配置会自动写入 cloud.json。然后运行 claude mcp,选择 Zapier,确认认证,浏览器自动打开授权页,点 Allow,几秒后显示 authentication successful。
验证环节:作者让 Claude Code 用 Zapier MCP 给仓库创建一个写着"这是我所有 WordPress 逆向 CVE 仓库"的 README。中途因 Anthropic 登录失效重登了一次,重试后返回 "Call Zapier. Done. Readme created.",刷新仓库即可看到——确认 Claude Code 确实能通过 MCP 操作 GitHub 后,才继续往下搭。
漏洞数据源——Patchstack 漏洞库与过滤条件(05:17 - 06:48)
确定 CVE 输入源为 Patchstack 漏洞数据库,并设置三个过滤条件(WordPress、插件、CVSS ≥ 6~7),同时通过 WP Meta SEO 条目展示单个 CVE 条目的信息结构,指出这类条目没有现成 POC——这正是本项目要自动补上的东西。
| 时间 | 类型 | 说明 |
|---|---|---|
| 05:17 | 关键步骤 | 一切就绪后需要真正的漏洞清单:访问 patchstack.com,滚动到页面底部的 vulnerability database |
| 05:35 | 关键步骤 | 过滤条件 1:软件类型只选 WordPress(Joomla、Drupal 也能做,本视频保持简单) |
| 05:46 | 关键步骤 | 过滤条件 2:组件类型选 plugin(不关心 themes) |
| 05:52 | 关键步骤 | 过滤条件 3:CVSS 评分高于 7 或 6,得到高危到严重级别的漏洞列表 |
| 06:07 | 重点结论 | 最终输入 = Patchstack 库中严重度 6-10 的 WordPress 插件漏洞 |
| 06:16 | 示例 | 打开单个条目示例(WP Meta SEO):显示 medium 优先级、受影响版本、无官方补丁,可查看软件全部数据甚至认领所有权 |
| 06:36 | 注意 | 这类条目没有现成的真实 POC——正是本视频要自动化解决的部分 |
| 06:40 | 重点结论 | 视频目标:全自动地把 CVE 逆向成可用 POC,甚至 nuclei 模板 |
Agent 的"大脑"和"双手"就绪后,需要喂给它真实的漏洞清单。作者使用 Patchstack 漏洞数据库:打开 patchstack.com 拉到页面底部即可找到。需要做几个过滤调整:
- 只看 WordPress(Joomla、Drupal 等其他 CMS 同样可行,留待扩展);
- 组件类型限定 plugin(不关心主题);
- CVSS 严重度设为高于 7 或 6,筛出的就是高危到严重(high to critical)的插件漏洞。
作者点开一个条目(WP Meta SEO 插件)演示条目结构:能看到优先级(medium)、受影响版本、尚无官方补丁等字段,还能查看软件完整信息、在 Patchstack 上认领所有权。但关键问题是:这些条目没有现成的真实 POC。所以本项目的期望就是:建立一条自动化通道,把每天新出的 CVE 自动逆向成可工作的 POC,甚至附上 nuclei 模板。
Claude.md 家规与 Reversing Skill(06:48 - 09:42)
拆解项目的两个核心配置文件:Claude.md(家规,规定取数、过滤、跳过 admin-only、按年份/CVE ID 归档、推送 GitHub 的完整流程)和 skills/reversing/skill.md(逆向技能,含允许工具、版本对比、POC 要素、交付物清单),并给出最重要的合规边界——只做本地实验,不做一键批量利用脚本。
| 时间 | 类型 | 说明 |
|---|---|---|
| 06:53 | 核心概念 | Claude.md = "家规"(house rules):告诉它做什么、怎么运作、去哪里取数 |
| 07:06 | 关键步骤 | 家规规定的工作流:从数据库拉取条目 → 按 CVSS 过滤 → 跳过 admin-only → 逆向 → 按年份 + CVE ID 建目录归档 → 推送到 GitHub → 打标签 |
| 07:12 | 警告 | 跳过 admin-only 漏洞的原因:众测项目里不会拿到管理员权限 |
| 07:43 | 核心概念 | skill 与 command 是一回事:/CVE 命令即可调用 reversing skill |
| 07:56 | 关键步骤 | skills/reversing/skill.md 的内容结构:name、description、要创建的 nuclei 模板、查看版本、做 diff、识别 bug、写仓库交付物 |
| 08:13 | 核心概念 | allowed tools:bash、web fetch、read、write |
| 08:21 | 核心概念 | skill 核心逻辑:看漏洞、看补丁、看改了什么,据此构建可用的 POC |
| 08:29 | 警告 | 合规边界:仅面向本地实验(local lab),不是一键大规模利用脚本(not turn-key mass exploitation scripts) |
| 08:34 | 关键步骤 | 软件定位:从插件条目的 affected software 映射到 wordpress.org |
| 08:45 | 关键步骤 | 版本对拍:下载漏洞版本 vs 修复版本(示例:漏洞版 3.15.05 / 修复版 3.15.06),对两者做 diff |
| 09:07 | 重点结论 | POC 必备要素:HTTP 方法、endpoint、所需权限、参数,另附一条可直接用的 curl 命令 |
| 09:20 | 重点结论 | 仓库交付物四件套:readme、report.md、poc.md、nuclei 模板 |
进入"有趣的部分":一切如何靠 Claude + Zapier + Claude skills 串起来。项目文件夹里有两个关键文件:
Claude.md(家规):告诉 Claude 该做什么、如何工作、去哪里取数。具体规则包括:从 Patchstack 数据库拉取条目;按之前设定的 CVSS 过滤;跳过所有 admin-only 漏洞(因为众测项目不会有管理员权限);逆向后按"年份 + CVE ID"建文件夹归档;推送到 GitHub;再附带一些标签和规则。
reversing skill(skill.md):同时提供了一个等价的 /CVE 命令(command 与 skill 本质相同)。这个文件相当大,结构上包含:name、description、要创建的 nuclei 模板、查看版本、做 diff、识别 bug、写仓库交付物,以及 allowed tools——bash、web fetch、read、write。核心逻辑一句话:看漏洞、看补丁、看补丁改了什么,然后基于变化构建可工作的 POC。作者在 skill 里写明合规边界:这是给本地实验环境用的,不是一键式大规模利用脚本。
执行时的软件定位流程:从插件条目里的 affected software 信息映射到 wordpress.org,从 wordpress.org 下载"漏洞版本"和"修复版本"两个版本(例如漏洞在 3.15.05、修复于 3.15.06),把两个版本都下下来做 diff,据此产出 PoC。
POC 的质量要求:必须包含 HTTP 方法、endpoint、所需权限、参数,作者还额外要求附一条现成的 curl 命令。最终交付到仓库时包含:readme、report.md、poc.md 和 nuclei 模板,全部信息都写进这些文件,并遵循 skill 里的规则。
实例走查——一个被自动逆向的 SQL 注入 CVE(09:42 - 11:24)
打开一个之前由 Claude 自动完成的真实产出,逐文件讲解:readme 里写明漏洞代码位置与根因(wffnadmin.php 中 get_funnels 参数的 SQL 注入,仅转义引号导致无引号 SQL 上下文不安全),report.md 包含摘要/复现步骤/影响,poc.md 给出带 WP nonce 与登录 cookie 的 sleep 5 时间盲注 PoC。
| 时间 | 类型 | 说明 |
|---|---|---|
| 09:44 | 示例 | 打开一个之前让 Claude 完成的逆向成果,changes 视图可直接看改动 |
| 10:02 | 示例 | readme 中包含更完整的细节:看过 diff 后说明改了什么 |
| 10:04 | 核心概念 | 漏洞定位:admin class 文件 wffnadmin.php 中的 get_funnels 参数(SQL 注入点) |
| 10:14 | 核心概念 | 根因分析:代码用多个攻击者可控的值拼接查询,但只做了引号转义,在无引号的 SQL 上下文里并不安全 |
| 10:24 | 关键步骤 | 方法论:看修复代码即可确认 bug;定位 source 与 sink——位于 ORDER BY 的 meta 请求参数(admin 端点) |
| 10:32 | 示例 | 报告会给出置信度(confidence),并指引"想报告请看 report.md" |
| 10:41 | 示例 | report.md 内容:摘要、CVE 编号、受影响组件、复现步骤(搭建本地 WordPress、下载安装、观察响应)、影响说明 |
| 10:57 | 示例 | poc.md:给出它实际使用的精确 POC——让服务器 sleep 5 秒作为时间盲注证明;需要 WP nonce 头 + admin REST token + 已登录 cookie;并附基线请求 |
作者展示了一个之前让 Claude 独立完成的逆向成果来对照第四章的规则。在仓库的 changes 视图里可以直接看到改动,而 readme 里保留了更完整的分析细节:看过 diff 后,它指出漏洞代码位于 admin class 的 wffnadmin.php 文件中的 get_funnels 参数——该处用多个攻击者可控的值构建查询,但只对引号做了转义,值在无引号的 SQL 上下文中并不安全(典型的 SQL 注入根因表述)。
报告还会对照修复代码确认 bug 的存在,并定位 source(入口)和 sink(注入点)在 ORDER BY 的 meta 请求参数上(admin 端点),同时标注自己的置信度,提示"原始补丁的 diff 可以自己看,正式报告在 report.md"。
report.md 里包含:摘要、对应 CVE、受影响组件、复现步骤(搭建本地 WordPress、下载安装该插件、发出请求并观察响应)以及影响说明。poc.md 则给出它实际使用的精确 PoC:通过让服务器 sleep 5 秒作为时间盲注证明;请求需要携带 WP nonce 头与 admin REST token,以及已登录的 cookie,并附上基线请求供对照。至此理论上整套流程已经完整跑通过一次。
批量运行——"get today's CVEs and reverse them"(11:24 - 13:35)
把单次成功升级为规模化:在工作目录对 Claude Code 说一句 "get today's CVEs and reverse them",它会加载工具、抓取 Patchstack 数据库并派出多个子 Agent 并行逆向;约 7 分钟后 2026 目录已产出一批 CVE,包含未认证 SSRF 报告、可复现 POC 和 nuclei.yaml 模板。
| 时间 | 类型 | 说明 |
|---|---|---|
| 11:26 | 重点结论 | 单跑成功一次还不够,需要用 Claude Code 做"批量(in mass)" |
| 11:32 | 关键步骤 | 两种触发方式:输入 /CVE,或在项目目录直接说 "get today's CVEs and reverse them" |
| 11:48 | 注意 | 批处理耗时较长,需要等待 |
| 11:54 | 关键步骤 | 运行过程:加载工具 → 检索数据库 → 按要求抓取 Patchstack 数据 |
| 12:05 | 示例 | 运行约 5-6 分钟后,已针对一批不同 CVE 启动了多个 agent 并行处理 |
| 12:12 | 关键步骤 | 查看产出:打开本地 2026 年份目录,已有一批 CVE 文件夹 |
| 12:25 | 示例 | 成果示例:未认证 SSRF(可导致响应刷新/内网访问、通用数据凭据窃取、内网 post host 等),并已生成 POC(plugins link preview 中用该文件与 URL 即可取回内容) |
| 12:53 | 示例 | nuclei.yaml 已生成:描述完善,match 逻辑为发出该请求 → 匹配 HTTP 字样确认 → 再找 atproxy → curl error |
| 13:13 | 重点结论 | 作者自评:匹配逻辑未必最优,但这是 v1 版本;运行仅 7 分钟就逆向出一批 CVE,效果已算不错 |
理论验证通过后,要让它规模化。做法非常简洁:在项目工作目录下对 Claude Code 直接下达自然语言指令——"get today's CVEs and reverse them"(或用等价的 /CVE 命令)。
批处理会花一段时间。能看到它先加载工具、检索数据库,然后按要求抓取 Patchstack 数据。运行约五六分钟后,它已经针对一批不同的 CVE 启动了多个 agent 并行处理。打开本地的 2026 目录检查,已经躺着一排 CVE 文件夹。
抽查其中一个 report:识别出的是未认证 SSRF,影响包括内网访问、通用数据凭据窃取、内网 post host 等,且全部确认真实可利用;POC 也已生成——在 plugins link preview 里用对应文件加 URL 发请求即可取回内容。再看 nuclei.yaml:也已自动生成,描述写得不错,匹配逻辑是先发请求、在响应里找 HTTP 字样确认存在,再匹配 atproxy 和 curl error。作者坦承匹配规则不一定是最优解,但作为 v1 版本,运行 7 分钟就有这样的产出已经"not bad"。
定时化、成果归档与扩展思路(13:35 - 15:37)
把批处理挂进 cron 定时任务即可拥有每天自动产出 POC 的"CVE 工厂";GitHub 仓库自动更新出带作者、Patchstack 链接、置信度、摘要的完整条目;作者建议从 WordPress 这个最小 CVE 池起步再扩展,并展望用它监控任意 GitHub 项目的补丁、配合 Discord webhook 做新漏洞告警。
| 时间 | 类型 | 说明 |
|---|---|---|
| 13:36 | 关键步骤 | 把整个流程挂进 cron job / 计划任务(scheduled task),按需每天定时跑 |
| 13:46 | 重点结论 | 效果 = 拥有自己的"CVE 工厂",持续产出 POC 并不断壮大数据库、推送 GitHub |
| 13:53 | 示例 | 刷新 GitHub 仓库:已自动出现一批新文件夹,readme 含作者、Patchstack 链接、置信度、摘要——漏洞利用数据库所需的要素齐备 |
| 14:21 | 注意 | 这些产出对众测是否有用是另一回事,有时确实有帮助;本质是先盯住最小的 CVE 池(WordPress),再扩展到其他平台 |
| 14:37 | 关键点 | Patchstack 平台本身也支持 Drupal 等其他 CMS,可按同思路扩展 |
| 14:44 | 扩展思路 | 已掌握逆向能力的人可用这套系统监控任意 GitHub 项目的补丁 → 自动逆向 → 通过 Discord webhook 在新漏洞出现时即时告警 |
| 15:00 | 重点结论 | 发挥空间很大,"想想用它都能做什么";正片至此结束 |
批处理验证可行后,下一步是无人值守化:把这条流水线挂进 cron 定时任务(或系统计划任务),让它每天自动运行——相当于拥有一座自己的"CVE 工厂",持续产出 PoC,数据库不断增长,并持续推送 GitHub。
刷新 GitHub 仓库可以看到它刚更新过:多出一批文件夹,每个条目的 readme 都带作者、Patchstack 链接、置信度、摘要——作为个人漏洞利用数据库的要素已经齐备。
作者对价值的定位很务实:这些产出对众测是否直接有用是另一个问题,有时确实很有帮助;但本质上这套系统先盯住最小的 CVE 池(WordPress 插件),之后可以像前面演示的那样扩展到其他平台(Patchstack 也支持 Drupal 等)。更大的想象空间在于:如果你本来就懂漏洞逆向,可以把这套系统用来监控一批 GitHub 项目的补丁提交,自动完成逆向,再接一个 Discord webhook——每当有新漏洞/新利用出现就立刻通知你。
彩蛋——用生成的 POC 实测验证(15:37 - 16:23)
留给看到最后的观众:拿 Agent 自己写的 POC 在实验环境实测——初次因端口未开放失败,改用 80 端口后成功命中 CVE lab(源 IP 可见),验证 POC 与 nuclei 模板真实可用,全片闭环。
正片结束后的彩蛋环节是整个项目的最后一块拼图——实测。作者直接使用 Agent 写好的 poc.md 在实验环境里验证:第一次运行提示端口没有打开,于是把目标换成 80 端口重试;这次页面成功显示出 CVE lab,来源正是发起请求的 IP 地址,说明 SSRF PoC 真实生效。虽然这个目标拿不到 metadata,但对环境里的端口和其他 IP 继续扫描完全可行。
结论:"There you have it. It worked."——第一个自动逆向的漏洞在测试实例上确认成功,从 CVE 拉取、补丁 diff、PoC 生成到 nuclei 模板的整条自动化链路就此闭环。
整体总结
这期视频的价值在于把"逆向 CVE"从手工技巧变成了一条可复用的自动化流水线,其工程思路可以概括为四层:
- 方法论层:漏洞挖掘不必从零开始。公开披露的 CVE 自带补丁,补丁 diff 就是漏洞的"答案之书"——读懂改动即理解 bug,复现改动前的行为即得到 PoC。WordPress 插件生态(开源 + 高产出 + wordpress.org 可下载任意历史版本)是这套方法最理想的训练场。
- 架构层:Claude Code 充当大脑(分析、逆向、写 PoC),Zapier MCP 充当双手(操作 GitHub 写仓库、写 Google Sheets 备份),两者通过 mcp.zapier.com 创建的 MCP server 打通,几乎不需要写代码。
- 规则层:行为约束全部沉淀在两个文件里——Claude.md 定义业务流程(Patchstack 取数、CVSS ≥ 6 的 WordPress 插件、跳过 admin-only、按年份/CVE ID 归档、推送 GitHub),reversing skill 定义技术流程(映射 wordpress.org → 下载漏洞版/修复版 → diff → 定位 source/sink → 产出含 HTTP 方法/endpoint/权限/参数/curl 的 PoC → 交付 readme/report.md/poc.md/nuclei 模板)。这体现了 Agent 工程的关键实践:把"怎么做"固化成规则和技能,而不是每次现写提示词。
- 运营层:一句 "get today's CVEs and reverse them" 触发多 Agent 并行批量逆向(7 分钟产出一批含 SSRF 在内的完整成果),挂上 cron 即成为每天自动运行的"CVE 工厂"。
需要保留的两点清醒认识:其一,作者明确划定了合规边界——这套产出仅用于本地实验环境,不是一键批量利用工具;其二,产出的 PoC/nuclei 模板对真实众测的价值因目标而异,nuclei 匹配逻辑(v1)也未必最优。扩展方向包括接入 Drupal 等更多 CMS 数据源、监控任意 GitHub 项目补丁、以及用 Discord webhook 做新漏洞即时告警。