Vulscan 是一个模块,它将 nmap 增强为漏洞扫描器。nmap 的 -sV 选项可对每个服务进行版本检测,用于根据识别出的产品确定潜在漏洞。数据在 VulDB 的离线版本中查找。
请将文件安装到 Nmap 安装目录的以下文件夹中:
Nmap\scripts\vulscan\*
像这样克隆 GitHub 仓库:
git clone https://github.com/scipag/vulscan scipag_vulscan
ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan
您需要运行以下最小命令来启动简单的漏洞扫描:
nmap -sV --script=vulscan/vulscan.nse www.example.com
目前有以下预安装的数据库可用:
您可以使用以下参数执行 vulscan 来使用单一数据库:
--script-args vulscandb=your_own_database
也可以创建并引用您自己的数据库。这需要创建一个具有以下结构的数据库文件:
<id>;<title>
只需像引用预交付数据库之一那样执行 vulscan 即可。欢迎您与我分享自己的数据库和漏洞关联,以便将其添加到官方仓库中。
漏洞数据库会定期更新和汇编。为了支持最新披露的漏洞,请保持本地漏洞数据库为最新。
要自动更新数据库,只需为 update.sh 文件设置执行权限并运行:
chmod 744 update.sh
./update.sh
如果您想手动更新数据库,请访问以下网站并下载这些文件:
将文件复制到您的 vulscan 文件夹:
/vulscan/
如果版本检测能够识别软件版本,并且漏洞数据库提供了此类详细信息,那么也会匹配这些数据。
禁用此功能可能会引入误报,但也可能消除漏报并略微提高性能。如果您想禁用额外的版本匹配,请使用以下参数:
--script-args vulscanversiondetection=0
Vulscan 的版本检测仅取决于 Nmap 版本检测和漏洞数据库条目的质量。某些数据库未提供确切的版本信息,这可能导致大量误报(如在 Apache 服务器上所见)。
该脚本仅尝试识别最佳匹配。如果未找到正面匹配,则会显示最佳可能匹配(可能是误报)。
如果您想显示所有匹配(可能会引入大量误报,但对于进一步调查可能有用),请使用以下参数:
--script-args vulscanshowall=1
交互模式帮助您覆盖每个端口的版本检测结果。使用以下参数启用交互模式:
--script-args vulscaninteractive=1
所有匹配结果逐行打印。默认布局为:
[{id}] {title}\n
可以使用以下参数使用另一种预定义报告结构:
--script-args vulscanoutput=details
--script-args vulscanoutput=listid
--script-args vulscanoutput=listlink
--script-args vulscanoutput=listtitle
您可以使用以下参数强制使用自己的报告结构(一些示例):
--script-args vulscanoutput='{link}\n{title}\n\n'
--script-args vulscanoutput='ID: {id} - Title: {title} ({matches})\n'
--script-args vulscanoutput='{id} | {product} | {version}\n'
动态报告模板支持以下元素:
每个默认数据库都带有一个 URL 和一个链接,在扫描期间使用,并可在自定义报告模板中作为 {link} 访问。要使用自定义数据库链接,请使用以下参数:
--script-args "vulscandblink=http://example.org/{id}"
请记住,这种衍生漏洞扫描在很大程度上依赖于 nmap 版本检测的置信度、已记录漏洞的数量以及模式匹配的准确性。潜在缺陷的存在未经额外扫描或利用技术验证。