scipag/vulscan

GitHub: scipag/vulscan

基于 Nmap NSE 的轻量级漏洞关联扫描模块,通过服务版本探测匹配离线漏洞库以识别潜在风险。

Stars: 3724 | Forks: 690

# vulscan - 使用 Nmap 进行漏洞扫描

## 简介 Vulscan 是一个将 nmap 增强为漏洞扫描器的模块。Nmap 的 -sV 选项会针对每个服务启用版本检测,用于根据识别出的产品来确定潜在的缺陷。相关数据会在 VulDB 的离线版本中进行查询。 ![Nmap NSE Vulscan](https://www.computec.ch/projekte/vulscan/introduction/screenshot.png) ## 安装说明 请将文件安装到您 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 ``` ## 漏洞数据库 目前提供以下预安装的数据库: * scipvuldb.csv - https://vuldb.com * cve.csv - https://cve.mitre.org * securityfocus.csv - https://www.securityfocus.com/bid/ * xforce.csv - https://exchange.xforce.ibmcloud.com/ * expliotdb.csv - https://www.exploit-db.com * openvas.csv - http://www.openvas.org * securitytracker.csv - https://www.securitytracker.com (已停止维护) * osvdb.csv - http://www.osvdb.org (已停止维护) ## 单数据库模式 您可以使用以下参数执行 vulscan 以使用单个数据库: ``` --script-args vulscandb=your_own_database ``` 也可以创建和引用您自己的数据库。这需要创建一个具有以下结构的数据库文件: ``` ; ``` 只需像引用预提供的数据库之一那样执行 vulscan 即可。欢迎与我分享您自己的数据库和漏洞关联信息,以便将其添加到官方仓库中。 ## 更新数据库 漏洞数据库会定期更新和汇编。为了支持最新披露的漏洞,请保持您的本地漏洞数据库处于最新状态。 要自动更新数据库,只需为 `update.sh` 文件设置执行权限并运行它: ``` chmod 744 update.sh ./update.sh ``` 如果您想手动更新数据库,请访问以下网站并下载这些文件: * https://www.computec.ch/projekte/vulscan/download/cve.csv * https://www.computec.ch/projekte/vulscan/download/exploitdb.csv * https://www.computec.ch/projekte/vulscan/download/openvas.csv * https://www.computec.ch/projekte/vulscan/download/osvdb.csv * https://www.computec.ch/projekte/vulscan/download/scipvuldb.csv * https://www.computec.ch/projekte/vulscan/download/securityfocus.csv * https://www.computec.ch/projekte/vulscan/download/securitytracker.csv * https://www.computec.ch/projekte/vulscan/download/xforce.csv 将文件复制到您的 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' ``` 动态报告模板支持以下元素: * {id} - 漏洞 ID * {title} - 漏洞标题 * {matches} - 匹配计数 * {product} - 匹配的产品字符串 * {version} - 匹配的版本字符串 * {link} - 漏洞数据库条目链接 * \n - 换行符 * \t - 制表符 每个默认数据库都带有一个 URL 和链接,在扫描过程中会使用该链接,并可在自定义报告模板中作为 {link} 访问。要使用自定义数据库链接,请使用以下参数: ``` --script-args "vulscandblink=http://example.org/{id}" ``` ## 免责声明 请记住,这种衍生漏洞扫描在很大程度上依赖于 Nmap 版本检测的置信度、已记录漏洞的数量以及模式匹配的准确性。潜在缺陷的存在未经过额外扫描或利用技术进行验证。</div><div><strong>标签:</strong>Cutter, CVE, Nmap, NSE脚本, rizin, SOC工具, Vulnerability Scanner, 密码管理, 插件系统, 数字签名, 服务指纹, 漏洞发现, 版本探测, 离线数据库, 网络安全, 虚拟驱动器, 资产评估, 隐私保护</div></article></div> <!-- 人机验证 --> <script> (function () { var base = (document.querySelector('base') && document.querySelector('base').getAttribute('href')) || ''; var path = base.replace(/\/?$/, '') + '/cap-wasm/cap_wasm.min.js'; window.CAP_CUSTOM_WASM_URL = new URL(path, window.location.href).href; })(); </script> </body> </html>