news 2026/8/7 1:40:11

基于PHP构建:利用GitHub仓库通过CVE-ID查找POC/漏洞利用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于PHP构建:利用GitHub仓库通过CVE-ID查找POC/漏洞利用

基于PHP的应用:通过CVE-ID从GitHub查找POC/漏洞利用

在2021年4月9日,我创建了一个名为git-cve的基于命令行(cli)的Python3应用程序。git-cve可以根据指定的CVE-ID搜索漏洞利用(Exploit)或概念验证(POC)。但我对此并不满意,因为它不够稳定。我当时想创建一个类似的工具,但要基于Web图形用户界面(GUI)。我看到了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表单或URL参数来实现。在本例中,我将使用GET方法和URL参数来获取用户输入。

让我们创建一个名为cve_id的变量,并将用户输入存储在其中。

<?php $cve_id = $_GET['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,分别对应CVE、YEAR、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和作者姓名。如果需要,你可以扩展它,但出于本文目的,我只提取作者的GitHub用户名和POC链接。

首先,让我们使用PHP函数file_get_contents从URL获取JSON,并使用json_decode来提取JSON内容。开始吧。

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

输出将类似于下面的图片。

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

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

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

【专家级部署教程】:智谱Open-AutoGLM GPU加速部署全流程详解

第一章&#xff1a;智谱Open-AutoGLM模型部署概述智谱Open-AutoGLM是一款面向自动化任务的大型语言模型&#xff0c;支持代码生成、自然语言理解与多轮对话等能力。其开源版本可在本地或私有云环境中部署&#xff0c;适用于企业级AI应用开发与定制化服务构建。核心特性 支持自然…

作者头像 李华
网站建设 2026/7/25 0:38:45

AI技术驱动下的SEO关键词优化策略与实践分享

随着AI技术的发展&#xff0c;SEO关键词优化的方式也随之转变。AI提供的数据分析能力使企业可以更深入地理解用户的搜索行为。这一点尤为关键&#xff0c;因为正确选择核心关键词&#xff0c;能够提升网站在搜索引擎中的可见性。此外&#xff0c;智能算法的应用使得关键词选择不…

作者头像 李华
网站建设 2026/7/21 12:09:50

7Arduino 结构体

Arduino 结构体什么是Arduino结构体&#xff1f;在Arduino编程中&#xff0c;**结构体&#xff08;Struct&#xff09;**是一种用户定义的数据类型&#xff0c;允许你将多个不同类型的变量组合在一起。结构体非常适合用于组织和存储相关数据&#xff0c;例如传感器读数、设备状…

作者头像 李华
网站建设 2026/7/31 8:59:55

8Arduino 联合体

Arduino 联合体介绍在Arduino编程中&#xff0c;联合体&#xff08;Union&#xff09;是一种特殊的数据结构&#xff0c;它允许在同一内存位置存储不同的数据类型。联合体的所有成员共享同一块内存空间&#xff0c;这意味着在任何时候&#xff0c;联合体只能存储其中一个成员的…

作者头像 李华
网站建设 2026/8/4 18:22:31

毕业/期刊/职称论文必备!9款AI论文工具一键极速生成论文!

对于大学生、研究生、科研人员而言&#xff0c;论文写作不仅是学术能力的集中体现&#xff0c;更是毕业、发表、晋升的核心门槛。面对紧迫的时间、复杂的资料检索、严苛的格式与查重要求&#xff0c;一款真正高效的AI论文工具&#xff0c;足以改变写作格局。本文直击痛点&#…

作者头像 李华
网站建设 2026/8/6 21:43:33

Emu3.5-Image:新一代AI绘图解决方案,10万亿数据训练!

导语 【免费下载链接】Emu3.5-Image 项目地址: https://ai.gitcode.com/BAAI/Emu3.5-Image BAAI团队推出的Emu3.5-Image凭借10万亿多模态 tokens 的训练规模和创新的原生多模态架构&#xff0c;重新定义了AI图像生成的技术标准&#xff0c;为行业带来兼具高质量创作与高…

作者头像 李华