☰
AutoPentestX的CVE情报从哪来?CIRCL/NVD API集成与CVSS评分实现深度剖析
2026/10/11 21:54:02 网站建设 项目流程

【免费下载链接】AutoPentestX

AutoPentestX – Automated Pentesting & Vulnerability Reporting Tool

项目地址:https://gitcode.com/gh_mirrors/au/AutoPentestX
点击查看免费下载

AutoPentestX 是一款自动化渗透测试与漏洞评估工具,它把「端口扫描 → 漏洞识别 → CVE 情报查询 → CVSS 风险评分 → PDF 报告」串成一条流水线。很多人好奇:扫描出的服务版本,到底是怎么变成一条条带分数的 CVE 漏洞的?这篇文章带你用几分钟搞懂 AutoPentestX 的 CVE 情报来源——CIRCL CVE API 与 NVD API 的集成方式,以及 CVSS 评分在代码里是如何落地为 CRITICAL / HIGH / MEDIUM / LOW 风险等级的。

一、CVE 情报从哪来?两大数据源一览 🗂️

AutoPentestX 在 modules/cve_lookup.py 中预置了两个权威漏洞数据库接口:

数据源接口地址角色定位
CIRCL CVE APIhttps://cve.circl.lu/api主力查询通道,实际发起搜索
NVD API(NIST 官方)https://services.nvd.nist.gov/rest/json/cves/2.0预留数据源,已接入配置待扩展

在 CVELookup 类的初始化部分可以看到,两个地址被分别赋给api_url与nvd_api。当前的查询流程走的是 CIRCL 通道:它以关键词搜索返回该产品的 CVE 列表,结构简洁、响应快,非常适合按「产品名 + 版本号」做快速情报匹配。NVD 则是美国国家标准与技术研究院的官方漏洞库,接口能力更强,代码与 config.json 中均已预留位置,便于后续做更精确的 CVE ID 级查询。

二、三步看懂 CVE 查询主流程 🔍

整个情报获取过程可以概括为「产品名映射 → API 搜索 → 解析评级」三步,核心逻辑集中在 search_cve_by_product 与 lookup_services 两个方法。

第 1 步:把服务名翻译成产品名

扫描阶段发现的服务名往往比较「泛」,比如http、ssh、netbios-ssn。extract_product_name 方法内置了一张映射表,把它们翻译成漏洞库里真实存在的产品名:

  • http/https/ssl/http→apache
  • ssh→openssh
  • microsoft-ds→microsoft windows
  • netbios-ssn→samba
  • smtp→postfix

如果映射表没命中,还会尝试从版本字符串里提取 apache、nginx、mysql 等常见产品关键词,确保搜索词尽量精准。

第 2 步:向 CIRCL API 发起搜索并过滤

拼好产品名后,工具会请求{api_url}/search/{产品名},并做了三件「克制」的事:

  1. 结果限量:只取前 10 条最相关结果,避免无关 CVE 刷屏;
  2. 版本过滤:若拿到了具体版本号,会用 version_matches 做版本匹配;
  3. 限速保护:每轮查询后time.sleep(1),对公共 API 保持友好,也呼应了 config.json 里rate_limit_delay: 1的设置。

第 3 步:解析条目并生成风险标签

parse_cve_entry 方法把每条原始 JSON 提炼成一个结构化的情报对象,包含 6 个关键字段:

  • cve_id:CVE 编号,如 CVE-2021-44790
  • description:漏洞描述(截断至 500 字)
  • cvss_score:CVSS 评分(下文详述)
  • risk_level:由评分换算出的风险等级
  • exploitable:是否存在公开利用
  • references:最多保留 3 条参考链接

解析完成后,main.py 的 PHASE 4 阶段会把这些 CVE 情报连同端口、服务、版本号一起写入 SQLite 数据库,供后续风险引擎和 PDF 报告直接使用。

三、CVSS 评分解析:一个分数如何定出风险等级 📊

CVSS(Common Vulnerability Scoring System)是业界通用的漏洞严重性评分标准,0~10 分。AutoPentestX 的取分逻辑兼容新老两版数据结构:优先读cvss字段;若没有,则依次回退到impact.baseMetricV3.cvssV3.baseScore(CVSS v3)和impact.baseMetricV2.cvssV2.baseScore(CVSS v2),见 parse_cve_entry 的取分代码。

拿到分数后,calculate_risk_level 用一套清晰的阈值将其映射为风险等级:

CVSS 分数区间风险等级直观理解
9.0 ~ 10.0🔴 CRITICAL严重,必须立即处理
7.0 ~ 8.9🟠 HIGH高危,尽快修复
4.0 ~ 6.9🟡 MEDIUM中危,计划内修复
0.1 ~ 3.9🟢 LOW低危,择机关注
无评分⚪ UNKNOWN待人工研判

这套阈值在 config.json 的 risk_scoring 配置段 中也有对应定义(critical: 9.0 / high: 7.0 / medium: 4.0 / low: 0.1),保证了配置与代码语义一致。

值得一提的是 check_exploit_availability 方法:它会扫描 CVE 条目和参考链接中的exploit、poc、metasploit、exploit-db等关键词。一旦命中,说明该漏洞已有公开利用代码——在实战中,这意味着攻击门槛大幅降低,因此该标记会在后续风险计算中被重点加权。

四、CVSS 如何驱动整体风险评分?🧮

CVE 情报并非孤立的,它会被送入 modules/risk_engine.py 参与全局风险计算。calculate_port_risk 按端口维度累加风险分:

  • 每个 CVE 的 CVSS 分数按分数 / 2计入端口风险分;
  • 若该 CVE 有公开利用(上一步检测出的exploitable标记),端口风险分额外 ×1.3;
  • 本地漏洞库中「可被利用」的漏洞则 ×1.5;
  • 敏感服务(mysql、telnet、rdp 等)暴露会叠加基础分;
  • 最终结果截断到 0~10 分并再次套用 CVSS 阈值定级。

再往上,calculate_overall_risk 把所有端口风险、Web 漏洞(每条 +2 分)、SQL 注入(每条 +5 分)汇总,由 determine_overall_risk_level 输出系统级风险等级(CRITICAL / HIGH / MEDIUM / LOW / MINIMAL),并自动生成 整改建议清单——例如检测到 CRITICAL 级 CVE 时会直接给出「Patch Critical CVEs」的优先行动项。

五、如何验证 CVE 情报效果?🚀

在已获授权的测试环境中,按 QUICKSTART.md 安装依赖后运行一次完整评估:

python3 main.py -t 127.0.0.1

执行到 PHASE 4 时,终端会输出类似 SAMPLE_OUTPUT.md 中这样的 CVE 查询摘要:

[*] Searching CVEs for: apache 2.4.41 [✓] Found 4 relevant CVEs for apache [!] CVE-2021-44790 - CVSS: 9.8 (CRITICAL) [!] CVE-2021-44224 - CVSS: 8.2 (HIGH)

每条 CVE 都带着分数与等级实时回显,最终还会汇总到reports/目录下的 PDF 报告与database/autopentestx.db数据库中。想单独调试查询逻辑,也可以直接运行python3 modules/cve_lookup.py,它会用内置的样例服务(OpenSSH 7.4、Apache 2.4.6)跑一遍完整流程。

六、延伸阅读:核心文件导航 📚

文件说明
modules/cve_lookup.pyCVE 情报查询、CVSS 解析与利用性检测
modules/risk_engine.py端口级 / 系统级风险评分算法
config.jsonAPI 地址、评分阈值、限速参数配置
main.py七阶段流水线编排(PHASE 4 触发 CVE 查询)
SAMPLE_OUTPUT.md真实查询输出示例
INDEX.md全项目模块结构与数据流总览

小结:AutoPentestX 的 CVE 情报来自 CIRCL CVE API(主通道)与 NVD API(预留通道)双源架构;CVSS 分数通过兼容 v2/v3 的取分逻辑提取,再以 9.0 / 7.0 / 4.0 三级阈值转化为风险等级,并进一步驱动端口级与系统级风险评分、整改建议生成。理解了这条「API → 解析 → 评分 → 风险」的链路,你就掌握了这类自动渗透测试工具情报系统的核心脉络。

⚠️ 提醒:本工具仅可用于你拥有或已获书面授权的系统,未授权访问属于违法行为。使用前请阅读 DISCLAIMER.md。

【免费下载链接】AutoPentestX

AutoPentestX – Automated Pentesting & Vulnerability Reporting Tool

项目地址:https://gitcode.com/gh_mirrors/au/AutoPentestX
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询