Vulscan 是一个将 nmap 增强为漏洞扫描器的模块。 nmap 选项 -sV 启用每个服务的版本检测,用于根据已识别的产品确定潜在缺陷。数据在 VulDB 的离线版本中查找。
请将文件安装到 Nmap 安装的以下文件夹中:
Nmapscriptsvulscan*
像这样克隆 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}nn'
--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 版本检测的置信度、记录的漏洞数量以及模式匹配的准确性。潜在缺陷的存在无法通过额外的扫描或利用技术来验证。