Vuls是一款无代理、免费且开源的Linux和FreeBSD漏洞扫描器。Vuls主要使用Go语言编写,可以在任何地方运行。你可以在云端、本地环境和Docker中运行Vuls,并支持主流发行版。Vuls提供高质量的扫描,支持多种漏洞数据库,如NVD、JVN、OVAL、RHSA/ALAS/ELSA/FreeBSD-SA。

使用Vuls,你可以通过多种方法扫描多个操作系统。你可以扫描本地主机,也可以通过SSH扫描远程主机/服务器。它还提供多种扫描方式:不需要root权限的快速扫描和需要root权限的深度扫描。Vuls可以一次扫描多个目标服务器。扫描完成后,你可以通过电子邮件和Slack发送结果。

在本教程中,你将学习如何在Debian 12服务器上安装Vuls漏洞扫描器。你将安装Vuls,设置CVE数据库,然后使用Vuls扫描本地系统和远程机器。

前提条件

在开始之前,请确保你具备以下条件:

- 一台Debian 12服务器
- 一个具有管理员权限的非root用户
- 其他服务器(如Rocky Linux/Ubuntu)作为远程扫描目标

安装依赖

在安装Vuls之前,必须确保已安装依赖项。在本节中,你将安装debian-goodies和reboot-notifier包作为Vuls的依赖。

首先,运行以下命令更新Debian软件包索引。

sudo apt update

现在使用以下命令安装debian-goodies和reboot-notifier包。输入Y确认安装。

sudo apt install debian-goodies reboot-notifier

Debian 12安装Vuls依赖包

使用安装脚本安装Vuls

安装完依赖项后,你将使用安装脚本来安装Vuls。这将自动编译并安装Vuls及其附加工具到你的系统中。

要安装Vuls,执行以下命令。这将下载Vuls安装脚本install.sh并运行它。

bash <( curl -s https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh )

运行Vuls安装脚本

现在安装脚本将安装最新版本的Golang,然后编译并安装Vuls的多个工具,如go-cti、go-cve-dictionary、goval-dictionary、go-exploitdb、go-kev、go-msfdb和gost。

编译安装go-cve-dictionary

安装gost工具

安装Vuls二进制文件

安装完成后,检查/usr/local/bin目录,你将看到Vuls及其工具的二进制文件。

ls /usr/local/bin/

你现在可以使用以下vuls help命令查看帮助信息。

vuls help

Vuls帮助信息

配置Vuls

安装Vuls后,在扫描任何计算机或服务器之前需要对其进行配置。在本节中,你将创建Vuls的新目录和配置文件。你将把CVE数据库定义为特定的SQLite数据库,并为localhost创建第一个扫描配置。

创建新目录/opt/vuls并进入该目录。然后使用nano编辑器创建新文件config.toml。

mkdir -p /opt/vuls; cd /opt/vuls
nano config.toml

输入以下配置以将CVE数据库与Vuls集成。在最后一行,你正在定义localhost的扫描配置。

[cveDict]
type = "sqlite3"
SQLite3Path = "/opt/vuls/cve.sqlite3"

[ovalDict]
type = "sqlite3"
SQLite3Path = "/opt/vuls/oval.sqlite3"

[gost]
type = "sqlite3"
SQLite3Path = "/opt/vuls/gost.sqlite3"

[metasploit]
type = "sqlite3"
SQLite3Path = "/opt/vuls/go-msfdb.sqlite3"

[servers]

[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast-root" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]

完成后保存并退出文件。

最后,运行以下vuls命令来验证你的配置。

vuls configtest

如果你的配置正确,你将看到以下输出:

验证Vuls配置

使用Vuls创建CVE数据库

在本节中,你将使用Vuls工具从各种来源构建新的CVE数据库。你将为Debian安全跟踪器、NVD、OVAL和Metasploit数据库创建CVE数据库。

首先,进入/opt/vuls目录:

cd /opt/vuls

现在运行以下命令从多个来源下载并构建CVE数据库。在本示例中,你将使用来自Debian安全跟踪器、NVD、OVAL和Metasploit数据库的CVE数据库。

gost fetch debian --dbpath /opt/vuls/gost.sqlite3
go-cve-dictionary fetch nvd --dbpath /opt/vuls/cve.sqlite3
goval-dictionary fetch debian 12 --dbpath /opt/vuls/oval.sqlite3
go-msfdb fetch msfdb --dbpath /opt/vuls/go-msfdb.sqlite3

下载gost数据库

下载NVD CVE数据库

下载OVAL数据库

该过程完成后,你的CVE数据库将在/opt/vuls目录中可用。使用以下命令检查/opt/vuls目录。

ls /opt/vuls/*.sqlite3

使用Vuls扫描本地主机

此时,你已经配置了Vuls并创建了CVE数据库。现在你可以使用Vuls扫描你的本地主机或本地机器了。

要扫描本地机器,运行以下vuls命令。

vuls scan localhost

该过程完成后,你将在终端中看到简单的扫描结果。

现在运行以下vuls tui命令查看详细的扫描报告。

vuls tui

以下是localhost的详细扫描报告。

Vuls TUI扫描报告

按Ctrl+c退出Vuls终端用户界面。

使用Vuls扫描远程服务器

在本节中,你将使用Vuls扫描远程服务器。在本示例中,目标服务器将是IP地址为192.168.10.45的Rocky Linux 9服务器,用户为rock。

首先,运行以下命令下载RedHat 9的OVAL CVE数据库:

goval-dictionary fetch redhat 9 --dbpath /opt/vuls/oval.sqlite3

下载RedHat OVAL数据库

现在生成新的SSH公钥和私钥,然后将公钥上传到目标服务器。在本示例中,目标服务器是IP地址为192.168.10.45的Rocky Linux 9服务器,SSH用户为rock。

ssh-keygen -t ed25519
ssh-copy-id rock@192.168.10.45

现在使用以下ssh命令登录到目标服务器,并使用以下命令安装lsof包。

ssh rock@192.168.10.45
sudo dnf install lsof -y

输入exit从Rocky Linux服务器注销。

接下来,进入/opt/vuls目录,使用nano编辑器编辑config.toml文件。

cd /opt/vuls/
nano config.toml

插入以下配置以创建新的远程系统Rocky Linux 9服务器扫描。同时,确保将IP地址和用户的详细信息更改为你自己的信息。

[servers.debian-server]
host = "192.168.10.45"
port = "22"
user = "rock"
keyPath = "/root/.ssh/id_ed25519"
scanMode = [ "fast-root" ] # "fast", "fast-root" or "deep"

保存文件并退出编辑器。

使用新配置,你现在可以使用以下命令测试你的config.toml文件。

vuls configtest

验证远程服务器配置

如果没有错误,使用以下vuls命令扫描远程服务器。

vuls scan rocky9

最后,运行以下vuls命令访问远程扫描的报告。

vuls tui

以下是远程服务器Rocky Linux 9的详细报告。

Vuls远程扫描结果

总结

恭喜!你已在Debian 12服务器上完成了Vuls漏洞扫描器的安装。你还学习了如何使用Vuls附加工具构建CVE数据库。之后,你还学习了如何使用Vuls扫描本地和远程服务器/机器。