CVESearch部署、使用与原理分析


前言

  本博客的主要内容为CVESearch的部署、使用与原理分析。本博文内容较长,因为涵盖了CVESearch的几乎全部内容,从CVESearch的部署到如何使用CVESearch,以及对CVESearch的原理分析,相信认真读完本博文,各位读者一定会对CVESearch有更深的了解。以下就是本篇博客的全部内容了。


1、概述

  CVESearch是一个用于查找和浏览已知计算机安全漏洞的在线工具。它提供了一个数据库,其中包含了已公开披露的漏洞信息,这些漏洞通常由CVE(通用漏洞披露)编号标识。用户可以通过CVESearch搜索特定的漏洞,查看其详细信息,包括漏洞的描述、影响范围、解决方案等。这个工具对于安全专业人员、系统管理员和普通用户都非常有用,可以帮助他们了解当前的安全威胁并采取必要的防范措施。以下是一些关于CVESearch的详细介绍:

  • 漏洞数据库:CVESearch维护了一个包含已公开披露的计算机安全漏洞信息的数据库。这些漏洞通常由CVE(通用漏洞披露)编号标识,每个漏洞都有一个唯一的标识符。
  • 搜索功能:用户可以通过CVESearch进行漏洞搜索。他们可以输入关键词、CVE编号、漏洞类型或者其他相关信息来查找特定的漏洞。
  • 漏洞详情:CVESearch提供了详细的漏洞信息。这些信息通常包括漏洞的描述、影响范围、危害程度评级、受影响的软件或系统、漏洞披露时间以及可能的解决方案等。
  • 易于使用:CVESearch的用户界面简单直观,使得用户可以轻松地进行漏洞搜索和浏览相关信息。
  • 及时更新:CVESearch定期更新漏洞数据库,以确保用户能够获取到最新的安全漏洞信息。
  • 社区支持:CVESearch是一个开放的项目,得到了全球安全社区的支持和贡献。用户也可以参与到该项目中,提交漏洞信息或提供改进建议。

  总的来说,CVESearch是一个强大的工具,可以帮助用户了解和应对计算机安全漏洞,从而提高系统和网络的安全性。此外,CVESearch工具基于Python语言、HTML语言、JavaScript语言和CSS语言开发。

2、安装与使用

软件环境硬件环境约束条件
Ubuntu 22.04.1 LTS(内核版本5.15.0-43-generic)内存16GBCVESearch v5.0.1
具体的软件环境可见“2.1、源码安装”章节所示的软件环境共分配4个处理器,每个处理器4个内核,共16个处理器内核具体的约束条件可见“2.1、源码安装”章节所示的软件版本约束
暂无硬盘200GB暂无
暂无CVESearch部署在VMware Pro 17上的Ubuntu22.04.1系统上(主机系统为Windows11),硬件环境和软件环境也是对应的VMware Pro 17的硬件环境和软件环境暂无

2.1、源码安装

2.1.1、部署系统依赖组件

2.1.1.1、下载安装基础组件
  1. 执行如下命令来下载安装基础组件:
$ sudo apt-get update
$ sudo apt-get install git -y
2.1.1.2、下载安装MongoDB Community Edition 7.0
  1. 首先安装所需依赖:
$ sudo apt-get update
$ sudo apt-get install gnupg curl -y
  1. 然后导入MongoDB公有GPG密钥:
$ cd ~
$ curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
  1. 然后为MongoDB创建列表文件:
$ sudo touch /etc/apt/sources.list.d/mongodb-org-7.0.list
  1. 然后导入MongoDB的源:
$ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
  1. 然后重新加载本地包数据库:
$ sudo apt-get update
  1. 然后执行如下命令来安装7.0版本的MongoDB:
$ sudo apt-get install -y mongodb-org
  1. 然后执行如下命令锁定版本,防止意外升级:
$ echo "mongodb-org hold" | sudo dpkg --set-selections
$ echo "mongodb-org-database hold" | sudo dpkg --set-selections
$ echo "mongodb-org-server hold" | sudo dpkg --set-selections
$ echo "mongodb-mongosh hold" | sudo dpkg --set-selections
$ echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
$ echo "mongodb-org-tools hold" | sudo dpkg --set-selections
  1. 然后执行如下命令启动MongoDB,并设置开机自启,最后重启系统:
$ sudo systemctl start mongod
$ sudo systemctl enable mongod.service
$ reboot
  1. 系统重启后执行如下命令来连接MongoDB:
$ mongosh
  1. 打印如下图所示的信息即代表MongoDB安装并启动成功:
    在这里插入图片描述

  2. 若想退出MongoDB,执行如下命令即可:

test> quit

2.1.2、使用源码安装系统

2.1.2.1、安装CVESearch
  1. 首先来到当前用户的根目录中,下载CVESearch源码,并进入其目录中:
$ cd ~
$ git clone https://github.com/cve-search/cve-search.git
$ cd cve-search/
  1. 然后执行如下命令来安装系统级依赖组件:
$ xargs sudo apt-get install -y < requirements.system
  1. 然后执行如下命令来安装CVESearch及其Python依赖:
$ pip3 install -r requirements.txt
2.1.2.2、填充MongoDB数据库

  在CVESearch中,MongoDB数据库默认称为cvedb,共有11个集合:

  • cves(常见漏洞和曝光项)- 来源NVD NIST(API)
  • cpe(常见平台枚举项)- 来源NVD NIST
  • cwe(常见弱点枚举项)- 来源NVD NIST
  • capec(常见攻击模式枚举和分类)- 来源NVD NIST
  • ranking(每个组的排名规则)- 本地cve-search
  • MITRE参考键/映射 - 来源MITRE参考键/映射
  • info(每个集合的元数据,例如最后修改日期)- 本地cve-search
  • via4 VIA4CVE交叉引用,并有3个额外的来源:
    • MITRE参考键/映射。
    • Red Hat RPM的CVE数据库。
    • Red Hat RHSA的Oval数据库。

  CVESearch关于MongoDB的初始设置只发生一次,就是在安装时。我们可以按照如下步骤为MongoDB填充关于CVESearch的数据库。

  1. 首先来到CVESearch源代码目录中:
$ cd ~/cve-search/
  1. 然后执行如下命令来为MongoDB数据库填充数据:
$ ./sbin/db_mgmt_cpe_dictionary.py -p
$ ./sbin/db_mgmt_json.py -p
$ ./sbin/db_updater.py -c
  1. 如果想更新数据库,可以执行如下命令:
$ ./sbin/db_updater.py -v
2.1.2.3、填充Redis数据库

  CVESearch还使用了Redis,Redis共存储关于CVESearch的三个数据库,这3个Redis数据库的用途如下:

  • 数据库编号10:CPE(通用平台枚举)缓存 - 来源于MongoDB的cvedb集合cpe数据
  • 数据库编号11:通知数据库 - 来源于cve-search
  • 数据库编号12:CVE参考数据库 - 是一个针对CVE ID与各种供应商ID进行交叉引用的数据库,来源于NVD NIST/MITRE
  1. 首先来到CVESearch源代码目录中:
$ cd ~/cve-search/
  1. 然后执行如下命令来为Redis数据库填充数据:
$ ./sbin/db_updater.py -c

2.2、使用方法

  我们可以使用如下命令来使用CVESearch。注意:该命令执行的是“/cve-search/bin/search.py”文件。

search.py [-h] [-q Q] [-p P [P ...]] [--only-if-vulnerable] [--strict_vendor_product] [--lax] [-f F] [-c C] [-o O] [-l] [-n] [-r] [-a] [-v V] [-s S] [-t T] [-i I]

  可以发现该命令包含很多的参数,为了方便后续使用,将对于这些参数的具体使用方法以及含义总结为下表。

选项含义
-h, --help显示帮助消息并退出。
-q Q在pip需求文件中搜索CVE,例如“dep/myreq.txt”。
-p P [P …]搜索一个或多个产品,例如o:microsoft:windows_7o:cisco:ios:12.1o:microsoft:windows_7 o:cisco:ios:12.1。如果只希望获取直接影响该产品的漏洞,请添加--only-if-vulnerable选项。
--only-if-vulnerable使用此选项,-p仅返回直接分配给该产品的漏洞。也就是说,如果windows_7仅作为Adobe Reader漏洞中受影响的操作系统而提及,它将不予考虑。
--strict_vendor_product使用此选项将执行严格的供应商产品搜索。-p中的值应格式化为供应商:产品,例如microsoft:windows_7
--lax严格搜索软件版本已禁用。请注意,此选项仅支持仅包含数字值的产品描述(格式为cisco:ios:1.2.3)。
-f F表示在漏洞摘要中进行自由文本搜索。
-c C搜索一个或多个CVE-ID。
-o O表示输出格式,包括[csv
-l按降序排序
-n查找受影响配置的完整CPE(通用平台枚举)名称
-r查找受影响配置的排名
-a查找与CWE弱点相关的CAPEC
-v V在参考网址中查找的供应商名称
-s S在摘要文本中搜索
-t T在过去的n天内搜索
-i I将输出限制为n个元素(默认:不限)

3、测试用例

3.1、搜索指定产品的漏洞

  我们可以使用下面的命令搜索cisco:ios:12.4产品相关的漏洞信息。若想搜索其它产品的相关漏洞信息,替换目标产品即可。

$ cd ~/cve-search
$ ./bin/search.py -p cisco:ios:12.4

  执行完上面的命令后就会打印关于cisco:ios:12.4产品的漏洞信息。
在这里插入图片描述

  我们还可以使用下面的命令将搜索到的结果以JSON格式打印,这方便后续的存储以及其它操作。

$ ./bin/search.py -p cisco:ios:12.4 -o json

  执行上面的命令后,会在命令行终端打印如下信息。
在这里插入图片描述

3.2、搜索指定漏洞

  我们可以使用如下命令来搜索指定漏洞(比如CVE-2010-3333)。若想搜索其它漏洞,替换目标漏洞即可。

$ ./bin/search.py -c CVE-2010-3333

  执行上面的命令后,将会打印关于CVE-2010-3333漏洞的信息。
在这里插入图片描述

3.3、使用排名数据库

  排名数据库允许根据软件漏洞的通用平台枚举名称对其进行排名。排名可以按组织内的每个组织或部门进行,也可以按任何有意义的名称进行。例如,可以查找特定CVE-ID的排名。

$ cd ~/cve-search/
$ ./bin/search.py -c CVE-2012-4341  -r  -n

  执行上面的命令将会打印如下内容。
在这里插入图片描述

3.4、比较CVSS值

  可以根据CPE名称比较某些产品的CVSS(通用漏洞评分系统)值。比如比较oracle:java和sun:jre,并对它们的CVSS值进行一些统计:

$ sudo apt install r-base-core -y
$ cd ~/cve-search/
$ python3 bin/search.py -p oracle:java -o json  | jq -r '.cvss' | Rscript -e 'summary(as.numeric(read.table(file("stdin"))[,1]))'

  首先统计oracle:java的CVSS值(即执行上面的命令),这将会在命令行终端中打印如下图所示的内容。
在这里插入图片描述

  然后统计sun:jre的CVSS值。

$ python3 bin/search.py -p sun:jre -o json  | jq -r '.cvss' | Rscript -e 'summary(as.numeric(read.table(file("stdin"))[,1]))'

  执行上面的命令后将会在命令行终端中打印如下图所示的内容。
在这里插入图片描述

3.5、全文检索

  我们可以使用如下命令对当前MongoDB集合中的所有CVE进行索引。注意,进行全文索引的时间会比较长。

$ cd ~/cve-search/
$ ./sbin/db_fulltext.py -l 0

  完成全文检索后,就可以通过执行下面的命令来查询全文索引以获得匹配CVE-ID的列表。

$ ./bin/search_fulltext.py -q NFS -q Linux

  执行完上面的命令后,会打印如下图所示的信息。
在这里插入图片描述

  然后我们还可以通过执行下面的命令来查询全文索引,并为每个CVE-ID输出JSON对象。

$ ./bin/search_fulltext.py -q NFS -q Linux -f

  执行完上面的命令后,会打印如下图所示的内容。
在这里插入图片描述

3.6、配合工具使用

  由于CVESearch是基于一组工具的,因此它可以与标准Unix工具一起使用和组合。如果我们想知道哪些顶级供应商使用“unknown”一词来表示其漏洞,可以执行下面的命令。注:需完成“3.5、全文检索”章节的内容。

$ python3 bin/search_fulltext.py -q unknown -f | jq -c '. | .vulnerable_configuration[0]' | cut -f5 -d: | sort  | uniq -c  | sort -nr | head -10

  执行完上面的命令后,将会打印如下图所示的信息。
在这里插入图片描述

3.7、使用Web界面

  Web界面是查看CVE条目和查询特定CVE的最小界面。我们可以使用以下命令启动Web界面:

$ cd ~/cve-search/web/
$ python3 index.py

  执行完上面的命令后,使用浏览器访问下面的链接。

http://127.0.0.1:5000

  访问该链接后,将会在浏览器中得到如下图所示的内容,这就可以通过Web界面来查看漏洞信息了。
在这里插入图片描述

4、总结

4.1、CVESearch检测的漏洞对象

  CVESearch只是漏洞信息的存储库,并不会对漏洞进行扫描,故CVESearch没有漏洞检测对象。

4.2、CVESearch的漏洞信息来源

  通过“2.1.2、使用源码安装系统”可知,CVESearch的数据都被保存到MongoDB数据库中(Redis数据库中存储的只是MongoDB数据库的缓存,故MongoDB数据库中存储的数据才是主体)。

  所以,我们通过将MongoDB数据库中的有效数据导出来检索CVESearch的具体数据来源。由“2.1.2、使用源码安装系统”章节可知,CVESearch在MongoDB中的对应数据库名称为cvedb。所以我们使用如下命令来将该数据库导出到“~/data/”目录中。

$ mongodump --db cvedb --out ~/data/

  然后来到数据导出目录,再将有效数据转换为JSON格式。为了实现该目的,我们可以顺序执行如下命令。

$ cd ~/data/cvedb/
$ mkdir ~/data/final_data/
$ bsondump ./capec.bson > ~/data/final_data/capec.json
$ bsondump ./cpe.bson > ~/data/final_data/cpe.json
$ bsondump ./cves.bson > ~/data/final_data/cves.json
$ bsondump ./cwe.bson > ~/data/final_data/cwe.json
$ bsondump ./via4.bson > ~/data/final_data/via4.json

  最后将在“~/data/final_data/”目录中得到的JSON格式的数据进行分析即可得到下表。该表记录了CVESearch的漏洞信息来源。

序号漏洞信息来源备注
1.RHSARHSA(Red Hat Security Advisory)是红帽公司发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
2.DSADSA(Debian Security Advisory)是Debian发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
3.CVECVE(Common Vulnerabilities and Exposures,通用漏洞和暴露)是一个用于标识和跟踪计算机系统中公共漏洞的字典,为安全研究人员和厂商提供了一个统一的标准和标识体系。
4.SA-CORESA-CORE(Security Advisory CORE)是Drupal发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
5.cisco-sacisco-sa是思科(Cisco)发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
6.VMSAVMSA(VMware Security Advisory)是VMware发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
7.BIDBID(Bugtraq ID)是一个用于标识计算机安全漏洞的唯一标识符,通常在安全公告和漏洞数据库中使用。
8.OSVDBOSVDB(Open Sourced Vulnerability Database)是一个旨在收集和提供计算机安全漏洞信息的开源数据库,帮助用户了解和管理潜在的安全风险。
9.OVEOVE(OpenVAS Vulnerability Description Language)是一种用于描述漏洞信息和扫描结果的开放式标准,通常与 OpenVAS(开放式漏洞评估系统)一起使用。
10.VTSVTS(Vulnerability Testing Service)是一种用于对计算机系统进行安全漏洞测试和评估的服务。
11.ZDIZDI(Zero Day Initiative)是一家安全研究公司,专注于收集和发布零日漏洞信息,并与软件供应商合作解决这些漏洞。
12.DLADLA(Debian LTS Advisory)是Debian长期支持(LTS)团队发布的安全公告,用于通报和解决Debian稳定版本中发现的安全漏洞,为用户提供更新和修补程序的建议。
13.FEDORAFEDORA是Fedora发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
14.GLSAGLSA(Gentoo Linux Security Advisories)是Gentoo Linux发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
15.CESACESA(CentOS Errata and Security Advisory)是CentOS发布的错误和安全公告,用于通知用户有关系统错误和安全漏洞的信息,并提供更新和修补程序。
16.openSUSE-SUopenSUSE-SU是openSUSE发布的安全更新通告,用于通知用户有关系统中发现的安全漏洞,并提供更新和修补程序的信息。
17.USNUSN(Ubuntu Security Notice)是Ubuntu发布的安全通告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
18.USE-SUSUSE-SU是SUSE Linux Enterprise Server(SLES)和SUSE Linux EnterpriseDesktop(SLED)发布的安全更新通告,用于通知用户有关系统中发现的安全漏洞,并提供更新和修补程序的信息。
19.ALASALAS(Arch Linux Security Advisories)是Arch Linux发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
20.ELSAELSA(Enterprise Linux Security Advisories)是Oracle Linux和CentOS发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
21.stable-channel-update-for-desktopstable-channel-update-for-desktop是Ubuntu桌面版中稳定渠道的更新通告,用于通报和解决发现的安全漏洞和其他问题,为用户提供更新和修补程序的建议。
22.MFSAMFSA(Mozilla Foundation Security Advisory)是Mozilla基金会发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。
23.WPVDBWPVDB(WordPress Vulnerability Database)是一个专注于收集和发布WordPress平台相关漏洞信息的公开数据库。

5、参考文献

  1. cve-search/cve-search: cve-search - a tool to perform local searches for known vulnerabilities
  2. CVE-Search安装环境配置及使用
  3. 开源软件CVE_Search的配置与使用(详细)
  4. CVE-Search — CVE-Search documentation
  5. How to install mongodb 7.0 to Ubuntu 22.04
  6. Install MongoDB Community Edition on Ubuntu — MongoDB Manual

总结

  以上就是本篇博文的全部内容,可以发现,CVESearch的部署与使用过程并不复杂,我们本篇博客对其进行了详细的分析。相信读完本篇博客,各位读者一定对CVESearch有了更深的了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IronmanJay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值