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

使用安装脚本安装Vuls
安装完依赖项后,你将使用安装脚本来安装Vuls。这将自动编译并安装Vuls及其附加工具到你的系统中。
要安装Vuls,执行以下命令。这将下载Vuls安装脚本install.sh并运行它。
bash <( curl -s https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh )

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



安装完成后,检查/usr/local/bin目录,你将看到Vuls及其工具的二进制文件。
ls /usr/local/bin/
你现在可以使用以下vuls help命令查看帮助信息。
vuls help

配置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创建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



该过程完成后,你的CVE数据库将在/opt/vuls目录中可用。使用以下命令检查/opt/vuls目录。
ls /opt/vuls/*.sqlite3
使用Vuls扫描本地主机
此时,你已经配置了Vuls并创建了CVE数据库。现在你可以使用Vuls扫描你的本地主机或本地机器了。
要扫描本地机器,运行以下vuls命令。
vuls scan localhost
该过程完成后,你将在终端中看到简单的扫描结果。
现在运行以下vuls tui命令查看详细的扫描报告。
vuls tui
以下是localhost的详细扫描报告。

按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

现在生成新的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的详细报告。

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