文章目录
- 前言
- 1、概述
- 2、安装与使用
- 2.1、源码安装
- 2.1.1、部署系统依赖组件
- 2.1.1.1、下载安装基础组件
- 2.1.1.2、下载安装MongoDB Community Edition 7.0
- 2.1.2、使用源码安装系统
- 2.1.2.1、安装CVESearch
- 2.1.2.2、填充MongoDB数据库
- 2.1.2.3、填充Redis数据库
- 2.2、使用方法
- 3、测试用例
- 3.1、搜索指定产品的漏洞
- 3.2、搜索指定漏洞
- 3.3、使用排名数据库
- 3.4、比较CVSS值
- 3.5、全文检索
- 3.6、配合工具使用
- 3.7、使用Web界面
- 4、总结
- 4.1、CVESearch检测的漏洞对象
- 4.2、CVESearch的漏洞信息来源
- 5、参考文献
- 总结
前言
本博客的主要内容为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) | 内存16GB | CVESearch 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、下载安装基础组件
- 执行如下命令来下载安装基础组件:
$ sudo apt-get update
$ sudo apt-get install git -y
2.1.1.2、下载安装MongoDB Community Edition 7.0
- 首先安装所需依赖:
$ sudo apt-get update
$ sudo apt-get install gnupg curl -y
- 然后导入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
- 然后为MongoDB创建列表文件:
$ sudo touch /etc/apt/sources.list.d/mongodb-org-7.0.list
- 然后导入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
- 然后重新加载本地包数据库:
$ sudo apt-get update
- 然后执行如下命令来安装7.0版本的MongoDB:
$ sudo apt-get install -y mongodb-org
- 然后执行如下命令锁定版本,防止意外升级:
$ 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
- 然后执行如下命令启动MongoDB,并设置开机自启,最后重启系统:
$ sudo systemctl start mongod
$ sudo systemctl enable mongod.service
$ reboot
- 系统重启后执行如下命令来连接MongoDB:
$ mongosh
-
打印如下图所示的信息即代表MongoDB安装并启动成功:
-
若想退出MongoDB,执行如下命令即可:
test> quit
2.1.2、使用源码安装系统
2.1.2.1、安装CVESearch
- 首先来到当前用户的根目录中,下载CVESearch源码,并进入其目录中:
$ cd ~
$ git clone https://github.com/cve-search/cve-search.git
$ cd cve-search/
- 然后执行如下命令来安装系统级依赖组件:
$ xargs sudo apt-get install -y < requirements.system
- 然后执行如下命令来安装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的数据库。
- 首先来到CVESearch源代码目录中:
$ cd ~/cve-search/
- 然后执行如下命令来为MongoDB数据库填充数据:
$ ./sbin/db_mgmt_cpe_dictionary.py -p
$ ./sbin/db_mgmt_json.py -p
$ ./sbin/db_updater.py -c
- 如果想更新数据库,可以执行如下命令:
$ ./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
- 首先来到CVESearch源代码目录中:
$ cd ~/cve-search/
- 然后执行如下命令来为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_7 或o:cisco:ios:12.1 或o: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. | RHSA | RHSA(Red Hat Security Advisory)是红帽公司发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
2. | DSA | DSA(Debian Security Advisory)是Debian发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
3. | CVE | CVE(Common Vulnerabilities and Exposures,通用漏洞和暴露)是一个用于标识和跟踪计算机系统中公共漏洞的字典,为安全研究人员和厂商提供了一个统一的标准和标识体系。 |
4. | SA-CORE | SA-CORE(Security Advisory CORE)是Drupal发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
5. | cisco-sa | cisco-sa是思科(Cisco)发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
6. | VMSA | VMSA(VMware Security Advisory)是VMware发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
7. | BID | BID(Bugtraq ID)是一个用于标识计算机安全漏洞的唯一标识符,通常在安全公告和漏洞数据库中使用。 |
8. | OSVDB | OSVDB(Open Sourced Vulnerability Database)是一个旨在收集和提供计算机安全漏洞信息的开源数据库,帮助用户了解和管理潜在的安全风险。 |
9. | OVE | OVE(OpenVAS Vulnerability Description Language)是一种用于描述漏洞信息和扫描结果的开放式标准,通常与 OpenVAS(开放式漏洞评估系统)一起使用。 |
10. | VTS | VTS(Vulnerability Testing Service)是一种用于对计算机系统进行安全漏洞测试和评估的服务。 |
11. | ZDI | ZDI(Zero Day Initiative)是一家安全研究公司,专注于收集和发布零日漏洞信息,并与软件供应商合作解决这些漏洞。 |
12. | DLA | DLA(Debian LTS Advisory)是Debian长期支持(LTS)团队发布的安全公告,用于通报和解决Debian稳定版本中发现的安全漏洞,为用户提供更新和修补程序的建议。 |
13. | FEDORA | FEDORA是Fedora发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
14. | GLSA | GLSA(Gentoo Linux Security Advisories)是Gentoo Linux发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
15. | CESA | CESA(CentOS Errata and Security Advisory)是CentOS发布的错误和安全公告,用于通知用户有关系统错误和安全漏洞的信息,并提供更新和修补程序。 |
16. | openSUSE-SU | openSUSE-SU是openSUSE发布的安全更新通告,用于通知用户有关系统中发现的安全漏洞,并提供更新和修补程序的信息。 |
17. | USN | USN(Ubuntu Security Notice)是Ubuntu发布的安全通告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
18. | USE-SU | SUSE-SU是SUSE Linux Enterprise Server(SLES)和SUSE Linux EnterpriseDesktop(SLED)发布的安全更新通告,用于通知用户有关系统中发现的安全漏洞,并提供更新和修补程序的信息。 |
19. | ALAS | ALAS(Arch Linux Security Advisories)是Arch Linux发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
20. | ELSA | ELSA(Enterprise Linux Security Advisories)是Oracle Linux和CentOS发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
21. | stable-channel-update-for-desktop | stable-channel-update-for-desktop是Ubuntu桌面版中稳定渠道的更新通告,用于通报和解决发现的安全漏洞和其他问题,为用户提供更新和修补程序的建议。 |
22. | MFSA | MFSA(Mozilla Foundation Security Advisory)是Mozilla基金会发布的安全公告,用于通报和解决发现的安全漏洞,为用户提供更新和修补程序的建议。 |
23. | WPVDB | WPVDB(WordPress Vulnerability Database)是一个专注于收集和发布WordPress平台相关漏洞信息的公开数据库。 |
5、参考文献
- cve-search/cve-search: cve-search - a tool to perform local searches for known vulnerabilities
- CVE-Search安装环境配置及使用
- 开源软件CVE_Search的配置与使用(详细)
- CVE-Search — CVE-Search documentation
- How to install mongodb 7.0 to Ubuntu 22.04
- Install MongoDB Community Edition on Ubuntu — MongoDB Manual
总结
以上就是本篇博文的全部内容,可以发现,CVESearch的部署与使用过程并不复杂,我们本篇博客对其进行了详细的分析。相信读完本篇博客,各位读者一定对CVESearch有了更深的了解。