【POC】从 Redhat 获取 CVE 相关信息

概述:从 RedHat 获取 CVE 数据并保存到 json 文件

来源

主要是看到开源的漏扫工具,基本都用了类似的 API 接口来获取漏洞信息。参考 【架构】CVE扫描工具架构收集

其中 cve-bin-tool 用了多个平台的数据
 - Redhat
 - Open Source Vulnerability Database (OSV)
 - Gitlab Advisory Database (GAD),

选哪个平台的数据

我个人只看了 Redhat 平台的获取结果,感觉够用了,并且 Redhat 有一套自己的评分系统。

Redhat

API Documents

Documents

需求描述

从文件读取 CVE 列表,根据 CVE 命从 RedHat 获取相关信息并保存。

实现代码

逻辑比较简单,这里就不赘述了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import requests
import sys
import json
import os


def read_CVE_list(filename):
lines = open(filename, 'r').readlines()
return [line.strip() for line in lines]

def request_CVE_json(cve_list):
for cve in cve_list:
# 获取 CVE JSON 并处理
# 构建 GitHub API URL
api_url = f'https://access.redhat.com/hydra/rest/securitydata/cve.json?ids={cve}'

# 向 GitHub API 发起 GET 请求
response = requests.get(api_url)

if response.status_code != 200:
print(f'Error: Failed to fetch repositories. Status code: {response.status_code}')
continue

# 解析 JSON 响应并保存到CVE目录下的同名文件中
# 若 CVE 目录不存在,则创建
if not os.path.exists('CVE'):
os.makedirs('CVE')
data = response.json()
with open(f'CVE//{cve}.json', 'w') as f:
json.dump(data, f, indent=2)
print(f'Successfully fetched and saved {cve} data to {cve}.json')

# python main 函数
if __name__ == "__main__":
# 检查命令行参数的数量
if len(sys.argv) < 2:
print(f"Usage: python {sys.argv[0]} filename")
sys.exit(1)

print(f"读取cve列表文件{sys.argv[1]}")

filename = sys.argv[1]

# 从文件读取 CVE 列表
cve_list = read_CVE_list(filename)

#保存到文件
request_CVE_json(cve_list)



【POC】从 Redhat 获取 CVE 相关信息
https://hodlyounger.github.io/2024/10/18/A_内功/A_POC探索/工具/【POC】获取Redhat_CVE相关信息/
作者
mingming
发布于
2024年10月18日
许可协议