Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
nmap-vulners — Nmap NSE 脚本,可查询 Vulners API,识别检测到的网络服务中的已知漏洞(CVE),通过自动 CVE 查找和 CVSS 评分增强标准端口扫描。 | Kitploit
工具/GitHubGitHub/vulnerscom/nmap-vulners
漏洞扫描器漏洞分析信息收集网络安全
GitHubvulnerscom/nmap-vulners

nmap-vulners

Nmap NSE 脚本,可查询 Vulners API,识别检测到的网络服务中的已知漏洞(CVE),通过自动 CVE 查找和 CVSS 评分增强标准端口扫描。

查看仓库
3.4k559201天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

nmap-vulners

将 nmap 服务扫描转化为按风险排序的 CVE、漏洞利用及野外攻击目标列表。

一个 NSE 脚本,它获取 nmap 已识别的软件信息,向 Vulners 数据库查询已知情报,并将结果打印在扫描报告中——按实际可利用性从高到低排列。

tests license nmap data stars

三次扫描:一个无 API 密钥的 SSH 端口、同一端口带密钥,以及一个 Web 端口,扫描结果识别出 Coyote 横幅背后的 Tomcat

对公开可扫描主机的真实扫描。先无密钥,再有密钥,最后是 Web 端口:nmap 的 -sV 报告了 Coyote 横幅,扫描识别出其背后的 Tomcat 和 jQuery。


功能说明

对于每个开放端口,它会查询 nmap 识别的软件信息——即 -sV 生成的 CPE——并打印 Vulners 已知的相关情报:按实际被利用情况而非仅按评分从高到低排列,每一行都链接到对应的详情页面。

在 HTTP 端口上,它还会对 Web 技术栈本身进行指纹识别,从而识别出 -sV 无法看到的软件——例如应用框架、CMS、反向代理背后的 PHP 版本。721 条规则会读取响应中携带版本信息的各个部分:Server 头、X-Powered-By、Cookie、页面标题、<meta> 标签、<script src> 文件名以及响应正文。这些识别出的身份信息也会被查询,并发布到该端口上,供扫描的其他部分使用。

除扫描之外,它还有两项额外功能:

  • 读取 nmap 自身的服务横幅。 当 -sV 无法识别服务时,原始横幅会与针对 FTP、SMTP、SSH、MySQL、DNS、NTP、LDAP 等的规则进行匹配。这不会产生额外的请求开销,而且这正是端口在其他情况下将一无所获的场景。
  • 询问不愿透露版本的产品。 一个 CMS 自报名称却隐藏版本号的情况很常见,而无论多少模式匹配都无法从页面中提取出不存在的数字。当产品被识别但版本未知时,会向能给出答案的地方发送一次请求——Drupal 的 /CHANGELOG.txt、Joomla 的 /administrator/manifests/files/joomla.xml。如果主机未运行这六种被探测的产品中的任何一种,则不会发送任何额外请求。```sh nmap -sV --script vulners
这就是整个界面。它无需 API 密钥即可工作;有了密钥,它会告诉你更多信息。这里没有模式切换。```
PORT      STATE SERVICE VERSION
80/tcp    open  http    Apache httpd 2.4.7 ((Ubuntu))
| vulners: cpe:/a:apache:http_server:2.4.7  272 findings, 56 exploitable
|   SEVERITY  CVSS    AI  FLAGS    LINK
|   ========  ====  ====  =======  ==============================================================
|   CRITICAL  10.0   8.8  EXP      https://vulners.com/gitee/3E6BA608-776F-5B1F-9BA5-589CD2A5A351
|   CRITICAL   9.8   9.9  EXP      https://vulners.com/zdt/1337DAY-ID-39214
|   CRITICAL   9.8   9.6  EXP      https://vulners.com/packetstorm/PACKETSTORM:171631
|   CRITICAL   9.8   9.9           https://vulners.com/cve/CVE-2021-44790
|   CRITICAL   9.8   9.8           https://vulners.com/cve/CVE-2023-25690
|_  262 more not shown; -v shows all, -vv adds where each was found

使用密钥时,对同一主机的相同扫描会给出不同答案——KEV 表示 CISA 已将该漏洞记录为已在野外被利用,而 EPSS 是 其将被利用的已发布概率:``` | vulners: cpe:/a:apache:http_server:2.4.7 272 findings, 78 exploitable | SEVERITY CVSS EPSS FLAGS LINK | ======== ==== ==== ======= ============================================================== | CRITICAL 9.1 >99% KEV EXP https://vulners.com/cve/CVE-2024-38475 | CRITICAL 9.0 >99% KEV EXP https://vulners.com/cve/CVE-2021-40438 | CRITICAL 9.1 >99% KEV https://vulners.com/cnvd/CNVD-2024-36387 | CRITICAL 10.0 71% EXP https://vulners.com/gitee/3E6BA608-776F-5B1F-9BA5-589CD2A5A351 | CRITICAL 9.8 97% EXP https://vulners.com/cve/CVE-2021-44790 |_ 262 more not shown; -v shows all, -vv adds where each was found

同样的 272 项发现,顺序不同,顶行不同——而且其中 22 项已知可被利用,因为每个漏洞利用都通过一个键关联到它所利用的 CVE。这两个都是来自 vulners.com 的真实答案,是针对展示该横幅的本地服务器捕获的。

## 排序

事实优先于预测。发现按以下顺序排列:

1. **CISA KEV** —— 记录为已在野外被利用
2. **SSVC `active`** —— 协调方判断利用正在发生
3. **存在漏洞利用** —— 代码已发布,针对此漏洞或其命名的 CVE
4. **高 EPSS** —— 模型预期会被利用
5. 其他所有情况

CVSS 仅在带内打破平局,而非跨带:一个已被利用的 7.5 比一个未被利用的 9.8 问题更严重,而这个顺序正是表达这一点的。

列跟随数据。答案未携带的信号会失去其列,而不是显示空单元格,因为空白的 EPSS 读起来像“安静”,而这是缺失字段无法支持的断言。

## API 密钥带来的差异

| | |
|---|---|
| **无密钥** | nmap 发现的每个 CPE 都会在免费端点上查询。发现、评分、漏洞利用标志以及 Vulners 自身的 AI 评分。无需积分,无需账户 |
| **有密钥,无积分** | 每项发现都会获得 id 端点所知的额外信息:标题、日期、上游公告或漏洞利用页面、漏洞利用到 CVE 的关联、CISA KEV,以及——取决于许可证——EPSS 和 SSVC |
| **有密钥,一个积分** | 免费路径完全无法命名的软件会从其原始横幅中被识别出来。这是这里唯一需要花费任何费用的部分,且仅针对没有 CPE 的服务 |

已带有 CPE 的端口永远不会消耗积分:跨四个产品测量,免费查询对某个 CPE 返回的 **CVE 列表** 与付费查询相同。积分购买的是识别能力,而非更多漏洞。

免费密钥位于 [vulners.com/userinfo](https://vulners.com/userinfo)。

## 安装

**macOS、Linux、Kali、WSL** —— 一行命令,无需参数:```sh
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh

Windows - 以管理员身份运行 PowerShell:```powershell irm https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.ps1 | iex

安装程序会询问 nmap 其数据存放位置,将脚本及其数据文件复制到那里,重建脚本数据库,然后检查 `--script vulners` 是否确实解析到刚刚安装的内容——nmap 自带一个 `vulners.nse`,此操作会将其替换。

<details>
<summary><b>无 root 权限及其他选项</b></summary>```sh
# into ~/.nmap, no sudo; the installer prints the NMAPDIR line to add to your profile
curl -fsSL https://raw.githubusercontent.com/vulnersCom/nmap-vulners/master/install.sh | sh -s -- --user

# a specific directory
./install.sh --prefix /usr/local/share/nmap

# a specific release
./install.sh --ref v2.0

# remove everything it installed
./install.sh --uninstall

PowerShell 采用相同的选项:-User、-Prefix、-Ref、-Uninstall。

从检出目录安装```sh git clone https://github.com/vulnersCom/nmap-vulners cd nmap-vulners ./install.sh ``` 安装程序使用其旁边的文件,因此这会精确安装你所克隆的内容。直接从检出目录运行脚本也同样有效:```sh nmap -sV --script "$PWD/vulners.nse" ``` > 从检出目录运行时,请使用**绝对**路径。nmap 会先针对自身的 `script.db` 解析相对路径 > `--script ./vulners.nse`,然后静默运行随 nmap 附带的副本,而不是你的版本。
手动安装

单个文件:将 vulners.nse 复制到 <nmap data dir>/scripts/ 并运行 sudo nmap --script-updatedb。无需放置其他内容——该脚本会在扫描时下载其字典,且不会向磁盘写入任何内容——因此也不会遗漏任何东西,而遗漏曾会导致脚本运行后一无所获,却对原因只字不提。

如果你是从 1.x 升级,请同时删除该目录下的 vulners_enterprise.nse 和 http-vulners-regex.nse。残留的 http-vulners-regex.nse 仍带有 default 类别,并会在普通的 -sC 下持续扫描目标。安装程序会为你完成此操作。

nmap 数据目录通常是 /usr/share/nmap(Debian、Ubuntu、Kali)、 /usr/local/share/nmap(从源码构建)、/opt/homebrew/share/nmap (Homebrew)或 C:\Program Files (x86)\Nmap(Windows)。要确定具体位置,请询问 nmap:```sh nmap -d2 --script-help probe 2>&1 | grep nse_main.lua

存放 `nse_main.lua` 的目录就是此 nmap 所使用的目录。

</details>

## 脚本参数

| 参数 | 默认值 | 含义 |
|---|---|---|
| `vulners.mincvss` | `0` | 隐藏评分低于此值的发现结果。无评分的公告以及任何已知漏洞利用的内容,无论阈值如何都会显示 |
| `vulners.paths` | 已发布的 939 条路径 | Web 扫描的路径:一个 Lua 列表、一个字符串(指向每行一条路径的文件),或 `none` 以关闭扫描。您指定的文件若无法读取,会停止扫描并说明原因,而不是回退到已发布的列表 |
| `vulners.width` | `80` | 表格布局所针对的终端宽度 |
| `vulners.max_items` | `32` | 整个扫描计费项目的上限 |
| `vulners.api_key` | - | API 令牌。有泄露风险:nmap 会将其自身命令行复制到 `-oX` 中 |
| `vulners.api_key_file` | - | 文件的绝对路径,其第一行为令牌 |
| `vulners.api_host` | `vulners.com` | API 的主机名 |
| `vulners.api_port` | `443` | `api_host` 上的端口 |

裸名称同样有效,因此 `--script-args mincvss=7` 就足够了。

1.x 版本的参数前缀——`vulners_enterprise.*` 和
`http-vulners-regex.paths`——在一个版本内仍被接受,并会打印
弃用通知。

## API 密钥存放位置

按优先级顺序:

1. `~/.nmap/vulners.key`,单行,权限 600——安装程序会提供写入选项
2. 环境变量中的 `VULNERS_API_KEY`
3. `--script-args vulners.api_key_file=/absolute/path`
4. `--script-args vulners.api_key=<token>`

最后一种方式方便但有泄露风险:nmap 会将其自身命令行复制到每份
报告中,因此令牌会出现在 `-oX` 输出的 `args` 属性中以及您的
shell 历史记录里。脚本本身绝不会将令牌写入任何位置,包括其
调试输出——有一项回归测试对此进行了验证。

您明确指定的密钥文件若无法读取,会停止运行而不是静默
回退——操作员指定了文件就意味着要用该文件——并且报告会
说明是哪个文件。拼写错误的路径不会看起来像一次干净的扫描。

## 指纹来源

脚本本身不携带指纹。每次扫描时,它会在接触第一台主机之前
下载三份字典:```
https://raw.githubusercontent.com/vulnersCom/nmap-vulners/catalog/
    index.json          what exists, at which serial
    fingerprints.json   721 product and version rules
    paths.json          939 paths the sweep requests
    probes.json         targeted version probes

每次扫描会发出四个请求——每个文件一个,而不是每个主机或每个端口——在 nmap 的预扫描阶段,从 250 KB 的 JSON 中压缩出 40 KB。这是针对已发布分支进行测量的。因此,已安装的脚本无需更新即可获取新的指纹。

它不会向你的文件系统写入任何内容。 字典仅在扫描期间保留,随后即被丢弃,这与 nmap 随附的所有脚本行为一致:在 611 个脚本中,有 26 个会打开文件进行写入,且每个都只写入脚本参数指定的位置。没有脚本保留缓存,本脚本也不例外。

下载工具