cvemap-CVE漏洞库工具(内含解析脚本)

一、前言

1.1 来自官方的介绍

   在快速发展的网络安全格局中,2023 年是网络安全威胁大量涌入的一年,国家漏洞数据库 (NVD)报告的新 CVE(常见漏洞和暴露)条目数量达到惊人的 24,804 条。海量的数据可能令人难以承受,但我们最新的创新借助cvemap旨在正面应对这一挑战。在 的支持下cvemap-api,我们的工具定期从 NVD 和其他关键来源收集 CVE 数据,将它们整合到一个单一的综合存储库中。

   这种战略聚合将复杂且不断扩大的 CVE 范围转变为一种易于管理且用户友好的格式。借助cvemap的作用不仅仅是穿越密集的 CVE 数据“丛林”;它充当可靠的指南,为在这个复杂且不断变化的网络安全领域导航提供清晰的地图和指南针。借助cvemap,您不仅可以跟上网络安全发展的步伐,还可以与网络安全的发展保持同步。您将能够自信地驾驭并保持领先地位。

img

1.2 Github地址和文档地址

# github地址
https://github.com/projectdiscovery/cvemap
# 文档地址
https://blog.projectdiscovery.io/announcing-cvemap-from-projectdiscovery/
https://docs.projectdiscovery.io/tools/cvemap/running#prerequisites-for-cvemap

二、工具搭建与使用

2.1 工具搭建

  1. 安装Golang编译环境,官方说cvemap 需要Go 1.21才能成功安装,我机器原本有安装有Go,1.19.3我也安装成功了。

在这里插入图片描述

  1. 要安装,只需运行以下命令或从发布页面下载预编译的二进制文件。
go install github.com/projectdiscovery/cvemap/cmd/cvemap@latest

在这里插入图片描述

  1. 需要到获取API密钥,直接用github账号登录就行。

    https://cloud.projectdiscovery.io/templates?ref=api_key
    

在这里插入图片描述

  1. 设置API密钥

    # 输入以下命令,然后粘贴API Key即可
    ./cvemap -auth
    

2.2 工具使用

# 常用示例,具体用法可参照官方文档
./cvemap
./cvemap -h1
./cvemap -poc
./cvemap -product confluence
./cvemap -id CVE-2024-0519
./cvemap -json > ./cvemap.json

在这里插入图片描述

三、CVEMAP数据导出解析脚本

3.1 CVE导出Json格式

./cvemap -json > ./cvemap.json

3.2 Python解析脚本源码

# @艺说IT
import json
import csv

header = ["漏洞编号", "漏洞描述", "危害等级","漏洞产品","产品所属公司","漏洞类型","披露时间","是否有POC","POC链接"]

# json列表
file_list = ["cvemap.json","h1-cvemap.json","confluence-cvemap.json"]
filename = "cve.csv"
with open(filename, "w", encoding="UTF8") as f:
    writer = csv.writer(f)
    # 写入头
    writer.writerow(header)

for file_name in file_list:
    with open(file_name,"r") as file:
        # 读取JSON数据
        data = json.load(file)
        print("条数:",len(data))
        for i in range(len(data)):
            cve_name = data[i]["cve_id"]
            cve_description = str(data[i]["cve_description"]).replace("\n","")
            # 风险等级
            severity = data[i]["severity"]
            # 漏洞发布日期
            published_at = data[i]["published_at"]
            # 漏洞点
            if "weaknesses" in data[i]:
                weaknesses = str(data[i]["weaknesses"])
            else:
                weaknesses = "无"
            # poc
            if "poc" in data[i]:
                if len(data[i]["poc"]) > 0:
                    poc = str(data[i]["poc"])
                    is_poc = "有"
                else:
                    is_poc = "无"
            else:
                is_poc = "无"
                poc = "无"
            
            if "cpe" in data[i]:
                # 漏洞产品
                product = str(data[i]["cpe"]["product"])
                # 产品所属公司
                vendor = str(data[i]["cpe"]["vendor"])
            else:
                # 漏洞产品
                product = "无"
                # 产品所属公司
                vendor = "无"
    # ["漏洞编号", "漏洞描述", "危害等级","漏洞产品","产品所属公司","漏洞类型","披露时间","是否有POC","POC链接"]
            time_ip_args_rule = cve_name + " #### " + cve_description + " #### " + severity + " #### " + product + " #### " +vendor + " #### " + weaknesses + " #### " + published_at + " #### " + is_poc + " #### " + poc
            new_data = [str(time_ip_args_rule).split(" #### ")]
            print(new_data)
            # 打开 CSV 文件,以追加模式写入数据
            with open(filename, "a", newline="") as file:
                writer = csv.writer(file)
                writer.writerows(new_data)

在这里插入图片描述

四、总结

   之前就有想法收集漏洞列表,形成自己的漏洞库,方便以后的查找、复盘、集合工具……,所以这个工具提供了很大的便利,非常不错。微信公众号搜索关注艺说IT,分享各种原创技术干货文章,对你有用的话请一键三连,感谢🙏。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值