使用 Nmap 脚本引擎(NSE)
Nmap 脚本引擎(Nmap Scripting Engine,NSE)是一个强大的工具,它允许你使用 Lua 脚本扩展 Nmap 的功能。Lua 是一种轻量级的编程语言,这些脚本可以执行各种各样的任务。例如,它们可以帮助进行高级服务检测,即更精确地识别网络设备上运行的服务。它们还可用于漏洞扫描,这对于发现系统中的安全弱点至关重要。
让我们使用 NSE 来收集关于我们的 HTTP 服务器的更多信息。NSE 脚本被分为不同的类别。这些类别包括“default”(包含常用且安全的脚本)、“discovery”(用于发现网络服务)、“safe”(不会对目标系统造成任何损害)和“vuln”(用于漏洞扫描)。
首先,我们想查看有哪些与 HTTP 相关的脚本可用。为此,我们将使用以下命令:
ls /usr/share/nmap/scripts/http*
这个命令会列出 /usr/share/nmap/scripts/
目录下所有以 http
开头的 NSE 脚本。当你运行这个命令时,你会看到一系列旨在与 HTTP 服务进行交互的脚本。这些脚本可以执行不同的功能,从简单的信息收集(如获取网页标题)到更复杂的任务(如扫描 HTTP 服务中的漏洞)。
现在,让我们使用 http-title
脚本来提取我们网页的标题。http-title
脚本旨在查看 HTTP 服务并找出它所提供网页的标题。以下是运行此脚本的命令:
sudo nmap --script=http-title -p 8000 localhost > /home/labex/project/nmap_script_output.txt
在这个命令中,sudo
用于以管理员权限运行命令,因为某些 Nmap 操作可能需要这些权限。nmap
是主命令,--script=http-title
告诉 Nmap 使用 http-title
脚本。-p 8000
指定我们的目标是 8000 端口,这是我们的 HTTP 服务器运行的端口。localhost
是目标,这意味着我们正在对自己的机器进行扫描。>
符号将命令的输出重定向到文件 /home/labex/project/nmap_script_output.txt
。
让我们检查命令的输出。我们可以使用以下命令来完成:
cat /home/labex/project/nmap_script_output.txt
cat
命令用于显示文件的内容。当你运行这个命令时,你应该会看到包含我们网页标题信息的输出。输出可能如下所示:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000040s latency).
PORT STATE SERVICE
8000/tcp open http-alt
|_http-title: Directory listing for /
Nmap done: 1 IP address (1 host up) scanned in X.XX seconds
现在,让我们尝试使用多个脚本进行更全面的扫描。“default”类别包含提供有关目标有用信息的安全脚本。要针对我们 8000 端口上的 HTTP 服务器运行“default”类别中的所有脚本,我们使用以下命令:
sudo nmap --script=default -p 8000 localhost > /home/labex/project/nmap_default_scripts.txt
这个命令与前面的命令类似,但我们不是指定单个脚本,而是告诉 Nmap 运行“default”类别中的所有脚本。
让我们检查这次扫描的结果。我们可以再次使用 cat
命令来完成:
cat /home/labex/project/nmap_default_scripts.txt
输出将包含由各种默认运行的 NSE 脚本收集的关于我们 HTTP 服务器的更详细信息。
最后,让我们探索脚本帮助功能,以了解更多关于特定脚本的信息。如果你想了解更多关于 http-title
脚本的信息,你可以使用以下命令:
nmap --script-help=http-title
这个命令会显示 http-title
脚本的文档。文档包括脚本的用途、如何使用它以及其输出的格式。在使用 NSE 执行特定任务时,理解脚本文档至关重要,因为它可以帮助你了解脚本的功能以及如何正确使用它。