news 2026/4/18 0:23:47

使用PHP构建基于GitHub仓库的CVE漏洞POC查找工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用PHP构建基于GitHub仓库的CVE漏洞POC查找工具

创建基于PHP的应用,通过CVE-ID从GitHub查找POC/漏洞利用程序

2021年4月9日,我创建了一个名为git-cve的基于命令行的Python3应用程序,它可以为指定的CVE-ID搜索漏洞利用程序/概念验证代码。但我对此并不满意,因为它不够稳定。我考虑创建一个类似但基于Web图形界面的工具。我看到了来自vulners的一篇帖子,他们发布了一个新的机器人,用于查找CVE-ID的POC/漏洞利用程序。

来源:Vulners Facebook 页面

所以我想,让我们也创建一个类似的东西,但仅使用PHP且无需任何成本。在创建我的Git-CVEPython脚本时,我发现了一个GitHub仓库,它自动收集CVE ID的POC/漏洞利用程序,有趣的是,这些收集到的信息都以JSON格式存储。这对我来说是一个加分项。

GitHub 仓库
GitHub - nomi-sec/PoC-in-GitHub

因此,我考虑将这个仓库用作我应用程序的API,因为它是开源的并且经常更新。那么,让我们开始编写代码。

通过点击“raw”,我们可以查看此页面的原始格式,URL看起来像这样:
https://raw.githubusercontent.com/nomi-sec/PoC-in-GitHub/master/2021/CVE-2021-21975.json

如果我更改/2021/CVE-2021-21975的值,它将显示指定CVE编号的结果。我们将保持其他内容不变,只将这两个值替换为用户输入,.json保持不变。我们不需要从用户那里获取两个输入,因为CVE-ID包含了其发布的年份。

所以,首先让我们使用PHP获取用户输入。我们可以通过HTML表单或使用参数来实现。在本例中,我将使用GET方法和URL参数来获取用户输入。

让我们创建一个名为cve_id的变量,并将用户输入存储在其中。它将通过名为id的URL参数获取用户输入,并将其存储到cve_id变量中。

示例
https://url.tld/cve.php?id=CVE-2020-1234

获取用户输入后,我们的第一步是清理用户输入,因为我们不希望其恶意负载在我们的网页中执行。我们不打算创建另一个变量来存储清理后的输入,而是直接使用htmlentities()从其源头清理用户输入。

现在,我们的首要任务是从这个CVE ID中分割出年份,因为我们需要年份来获取CVE-ID的POC/漏洞利用信息。PHP有一个名为explode的函数,它可以帮助使用特殊字符分隔文本。我们的CVE ID包含一个分隔cve-year-id的特殊字符。我们将使用(-)explode函数来分割年份。分割后,我们将得到3个值:0、1、2。0是CVE,1是YEAR,2是ID。现在让我们分割它。

在上面的代码中,首先我创建了一个名为spl的变量来存储所有分割后的数组,然后,我将数组编号1存储到名为year的变量中。现在我们的任务是调用那个GitHub仓库,以获取关于用户CVE ID的POC的所有信息。

请求URL将以JSON格式响应我们,现在我们必须处理JSON以提取关于CVE-ID的确切信息。PHP内置了一个名为json_decode的函数来解码JSON并提取信息,我们将使用这个json_decode来解码响应。首先让我们看看JSON包含什么。

它包含id、仓库名称、html_url、创建日期等。我们不需要所有这些。我们只提取这个POC的URL和作者名称。如果需要,您可以扩展它,但出于文章目的,我只提取作者的用户名和POC链接。首先,让我们使用PHP函数file_get_contentsjson_decode从URL获取JSON并提取其内容。让我们开始吧。

我们的框架现在已经准备好了,让我们将这些数据提取到我们的客户端页面。

输出将类似于下图。

源代码:
我的项目:https://git-cve.system00-sec.com/

感谢您的阅读。我的主要动机是从旧事物中创造新事物并使它们开源,我并不想取笑他人或在经济上伤害他人,本文只是解释了我如何创建我的项目,仅此而已。
CSD0tFqvECLokhw9aBeRquC3oGLY3Hy/RSVByZf07xCye9yyF8xWYomSZASCxc0RUXVhyF8CC+N/LJEJJQDkE7Uxyy4CIErqFLDnJWdLQ2l5HPWwQtn/yYw2C9E0EWMovZsPQAblzWomQn5u0fo3kA==
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 13:38:06

5分钟彻底掌握WindowResizer:解决顽固窗口的终极方案

5分钟彻底掌握WindowResizer:解决顽固窗口的终极方案 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在日常电脑使用中,你是否被那些无法自由调整大小的顽固…

作者头像 李华
网站建设 2026/4/16 4:26:52

Z-Image-Turbo能否用于印刷?CMYK色彩空间转换研究

Z-Image-Turbo能否用于印刷?CMYK色彩空间转换研究 引言:AI生成图像的印刷适配挑战 随着生成式AI技术的普及,越来越多的设计从业者开始尝试将AI生成图像直接应用于商业印刷场景。阿里通义推出的Z-Image-Turbo WebUI作为一款高效、易用的本地化…

作者头像 李华
网站建设 2026/4/4 21:13:27

如何用AI解决Java编译中的TypeTag未知错误

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Java项目,演示如何处理com.sun.tools.javac.code.TypeTag :: UNKNOWN编译错误。项目应包含:1. 一个简单的Java类,故意触发此错误&#…

作者头像 李华
网站建设 2026/4/16 15:28:13

实战:用这些VS Code插件打造高效Python开发环境

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Python项目模板生成器,自动配置完整的VS Code开发环境。功能包括:1. 根据Python版本自动安装Pylance、Python扩展 2. 配置适合Python的代码格式化规…

作者头像 李华
网站建设 2026/4/16 10:55:51

React面试题库:从大厂真题看考核重点

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请模拟阿里巴巴P6级前端开发岗位的React技术面试,生成完整的面试流程:1) 开场白和自我介绍引导 2) 3道基础知识题(如setState原理) 3) 2道编程题(实现自定义…

作者头像 李华
网站建设 2026/4/10 23:37:11

AI一键转换:Altium Designer导出GERBER文件全攻略

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Altium Designer GERBER文件导出助手工具,要求:1. 自动识别AD工程文件中的各层设置 2. 智能检测常见设计错误(如未定义板框、缺少阻焊层…

作者头像 李华