我已经在 Ubuntu 12.04 服务器上安装了 nmap 6.25,并且正在尝试使用 redis-info 脚本。我已经下载了脚本并将其放在我的主目录中。当我运行时:
nmap -p 6379 -Pn my.ip.num.ber --script redis-info.nse
它只是进行正常扫描,甚至根本不检查脚本。
Host is up.
PORT STATE SERVICE
6379/tcp filtered unknown
就是这样。这是一个全新的安装,除了下载脚本外,我什么也没做。我错过了什么?
最佳答案
Nmap 的 NSE脚本有(至少)两个条件,它们在运行前必须满足:
- 必须选择脚本。在您的情况下,您使用
--script redis-info
选择了它,但也可以按类别选择它(例如--script discovery
)。 - 脚本的rule function必须返回 true。
在redis-info
的情况下,与大多数脚本一样,该规则要求打开特定端口。这是完整的规则:
portrule = shortport.port_or_service(6379, "redis-server")
在您的例子中,端口 6379 是 filtered
,这意味着它未打开,因此脚本不会运行。这是预期的,因为在未打开的端口上运行将没有用。您可以强制脚本运行而不考虑其规则的返回值,但这很少有用。为此,请在脚本名称前加上 +
前缀,如下所示:--script +redis-info
。请注意,这意味着它将在扫描的每个端口 上运行,所以不要轻易使用它!
关于ubuntu - nmap 忽略 --script 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174024/