简介
在本实验中,你将学习如何使用 Nmap 的 vuln
脚本扫描漏洞。该脚本通过检查默认凭证、过时软件和配置错误等常见问题,帮助识别潜在的安全弱点。
你将针对目标 IP 地址执行 vuln
脚本(在 LabEx VM 环境中,为便于演示使用 127.0.0.1
),扫描特定端口,增加详细程度以获取更详细的输出,将结果保存到文件,然后在 Xfce 终端中查看识别出的漏洞,并将它们与服务检测结果进行比较。
在本实验中,你将学习如何使用 Nmap 的 vuln
脚本扫描漏洞。该脚本通过检查默认凭证、过时软件和配置错误等常见问题,帮助识别潜在的安全弱点。
你将针对目标 IP 地址执行 vuln
脚本(在 LabEx VM 环境中,为便于演示使用 127.0.0.1
),扫描特定端口,增加详细程度以获取更详细的输出,将结果保存到文件,然后在 Xfce 终端中查看识别出的漏洞,并将它们与服务检测结果进行比较。
在这一步中,我们将使用 Nmap 的 vuln
脚本扫描目标 IP 地址,查找已知漏洞。vuln
脚本是一个强大的工具,可帮助识别系统中潜在的安全弱点。
在开始之前,让我们简要讨论一下什么是 Nmap 脚本。Nmap 脚本是用 Lua 编程语言编写的,可让你扩展 Nmap 的功能。它们可用于各种任务,包括漏洞检测、服务发现和网络侦察。
vuln
脚本是一组旨在识别常见漏洞的脚本。它会检查各种问题,例如默认凭证、过时的软件版本和配置错误。
让我们开始使用 vuln
脚本扫描目标 IP 地址 192.168.1.1
。由于 192.168.1.1
是一个私有 IP 地址,在 LabEx VM 环境中不太可能直接访问。为便于演示,我们将使用 127.0.0.1
(localhost)作为目标。这假设 LabEx VM 上运行着一个我们可以扫描的服务。
打开你的 Xfce 终端并执行以下命令:
sudo nmap --script vuln 127.0.0.1
你可能需要使用 sudo
,因为 Nmap 通常需要提升权限才能执行某些扫描。
此命令告诉 Nmap 针对 IP 地址 127.0.0.1
运行 vuln
脚本。然后,Nmap 将尝试识别目标系统上的任何漏洞。
输出将显示扫描结果。它将列出找到的任何漏洞,以及问题描述和潜在的修复步骤。
示例输出(实际输出将取决于在 127.0.0.1
上运行的服务):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
|_ vulners: Could not find vulnerability results.
80/tcp open http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
在此示例中,Nmap 扫描了 127.0.0.1
上的 22 和 80 端口。作为 vuln
脚本集一部分的 vulners
脚本,未能找到在这些端口上运行的服务的任何已知漏洞。这并不一定意味着系统完全安全,但确实表明没有立即明显的漏洞。
在上一步中,我们使用 vuln
脚本扫描了 127.0.0.1
上的所有端口。在这一步中,我们将扫描重点放在特定端口:80 端口。当你想快速检查某个特定服务是否存在漏洞而不扫描整个系统时,这很有用。80 端口通常用于 HTTP(网页)流量。
Nmap 中的 -p
选项允许你指定要扫描的端口。你可以指定单个端口、端口范围或用逗号分隔的端口列表。
要使用 vuln
脚本仅扫描 127.0.0.1
上的 80 端口,请在你的 Xfce 终端中执行以下命令:
sudo nmap --script vuln -p 80 127.0.0.1
此命令告诉 Nmap 针对 IP 地址 127.0.0.1
上的 80 端口运行 vuln
脚本。然后,Nmap 将尝试识别与该端口上运行的服务相关的任何漏洞。
输出将与上一步类似,但它只会显示 80 端口的结果。
示例输出(实际输出将取决于在 127.0.0.1
上运行的服务):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
80/tcp open http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.
Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds
如你所见,输出仅关注 80 端口。vulners
脚本再次未能找到任何已知漏洞。
扫描特定端口可以显著减少执行漏洞扫描所需的时间,特别是当你只对某个特定服务感兴趣时。
在这一步中,我们将为 Nmap 扫描添加详细输出。详细输出意味着 Nmap 将提供有关扫描过程的更详细信息。这有助于理解 Nmap 在做什么,并排查可能出现的任何问题。
Nmap 中的 -v
选项会增加详细程度。你可以多次使用 -v
进一步提高详细程度(例如,-vv
或 -vvv
)。
要以详细模式对 127.0.0.1
运行 vuln
脚本,请在你的 Xfce 终端中执行以下命令:
sudo nmap -v --script vuln 127.0.0.1
此命令告诉 Nmap 针对 IP 地址 127.0.0.1
运行 vuln
脚本,并提供详细输出。
现在,输出将包含有关扫描过程的更多信息,例如正在运行的脚本、正在扫描的端口以及完成每个步骤所需的时间。
示例输出(实际输出将取决于在 127.0.0.1
上运行的服务,并且会比非详细输出长得多):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 151 scripts for scanning.
Initiating Ping Scan at 10:10
Scanning 127.0.0.1 [4 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating SYN Stealth Scan at 10:10
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Completed SYN Stealth Scan at 10:10, 0.06s elapsed (1000 total ports)
Initiating Service scan at 10:10
Scanning 2 services on localhost (127.0.0.1)
Completed Service scan at 10:10, 6.41s elapsed (2 services total)
NSE: Script scanning 127.0.0.1.
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 10:10
Completed NSE at 10:10, 1.13s elapsed.
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p0 Ubuntu 7ubuntu2.4 (protocol 2.0)
|_ vulners: Could not find vulnerability results.
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
NSE: Script Post-scanning.
Initiating NSE at 10:10
Completed NSE at 10:10, 0.00s elapsed.
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 7.70 seconds
详细输出提供了扫描过程的更详细视图。你可以看到扫描的不同阶段、正在运行的脚本以及可能出现的任何错误或警告。
在这一步中,我们将学习如何将 Nmap 漏洞扫描的结果保存到文件中。这对于后续的分析、报告或随时间比较结果很有用。
Nmap 提供了几种以不同格式保存扫描结果的选项。-oN
选项以“普通”的人类可读格式保存结果。其他选项包括用于 XML 格式的 -oX
和用于可搜索格式的 -oG
。
要将 vuln
脚本扫描的结果以普通格式保存到名为 vuln.txt
的文件中,请在你的 Xfce 终端中执行以下命令:
sudo nmap --script vuln -oN vuln.txt 127.0.0.1
此命令告诉 Nmap 针对 IP 地址 127.0.0.1
运行 vuln
脚本,并使用普通输出格式将结果保存到 vuln.txt
文件中。vuln.txt
文件将在你当前的目录(~/project
)中创建。
扫描完成后,你可以使用像 nano
这样的文本编辑器查看 vuln.txt
文件的内容:
nano vuln.txt
这将在 nano
编辑器中打开 vuln.txt
文件,使你能够查看扫描结果。输出将类似于你在不使用 -oN
选项运行 Nmap 时在屏幕上看到的内容。
vuln.txt
的示例内容(实际内容将取决于在 127.0.0.1
上运行的服务):
## Nmap 7.80 scan initiated Tue Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
|_ vulners: Could not find vulnerability results.
80/tcp open http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.
## Nmap done at Tue Oct 27 10:15:07 2023 -- 1 IP address (1 host up) scanned in 7.00 seconds
你也可以使用其他 Linux 命令查看该文件,例如 cat
:
cat vuln.txt
将扫描结果保存到文件是漏洞评估和渗透测试中的关键步骤。它使你能够记录你的发现并随时间跟踪变化。
在这一步中,我们将直接在 Xfce 终端中查看漏洞扫描结果。这包括检查 nmap --script vuln
命令的输出,以识别目标系统上的潜在漏洞。
首先,让我们再次对 127.0.0.1
运行漏洞扫描。这将确保我们有最新的结果可供查看。在你的 Xfce 终端中执行以下命令:
sudo nmap --script vuln 127.0.0.1
仔细检查输出。vuln
脚本会通过检查服务版本和配置来尝试识别已知漏洞。查找任何表明潜在漏洞的行。
输出将显示开放的端口以及在这些端口上运行的服务。vulners
脚本是 vuln
脚本集的一部分,它会尝试将服务版本与已知漏洞进行匹配。
示例输出(实际输出将取决于在 127.0.0.1
上运行的服务):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
|_ vulners: Could not find vulnerability results.
80/tcp open http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.
Nmap done: 1 IP address (1 host up) scanned in 7.00 seconds
在这个示例中,vulners
脚本未能找到 SSH 和 HTTP 服务的任何漏洞结果。然而,如果发现了漏洞,输出将包括有关特定漏洞的详细信息以及相关资源的链接。
如果你看到表明潜在漏洞的输出,请进一步研究这些漏洞,以了解风险以及如何缓解它们。你可以使用服务版本信息(例如,“Apache/2.4.29 (Ubuntu)”)来搜索该特定软件版本中的已知漏洞。
这一步对于了解目标系统的安全态势以及识别潜在的关注领域至关重要。
在这一步中,我们将把漏洞扫描的结果与 Nmap 提供的标准服务检测结果进行比较。这将帮助我们了解 vuln
脚本是否提供了超出 Nmap 通常检测范围的额外信息。
首先,对 127.0.0.1
运行一次标准的 Nmap 服务检测扫描。在你的 Xfce 终端中执行以下命令:
sudo nmap -sV 127.0.0.1
-sV
选项告诉 Nmap 执行服务版本检测。这将尝试识别在开放端口上运行的服务的具体版本。
示例输出(实际输出将取决于在 127.0.0.1
上运行的服务):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p0 Ubuntu 7ubuntu2.4 (protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.00 seconds
现在,将此输出与你在上一步中运行的 nmap --script vuln 127.0.0.1
命令的输出进行比较。
具体来说,要查找以下内容:
-sV
扫描识别出的服务版本与 vuln
脚本识别出的是否相同?vuln
脚本通常依赖服务版本信息来识别潜在漏洞。vuln
脚本是否提供了 -sV
扫描输出中未出现的关于漏洞的任何额外信息?vuln
脚本使用 vulners
库根据服务版本检查已知漏洞。通过比较这两个输出,你可以更好地理解 vuln
脚本提供的价值。在许多情况下,vuln
脚本会识别出标准服务检测扫描中不立即明显的潜在漏洞。这是因为 vuln
脚本专门设计用于查找已知漏洞,而 -sV
扫描主要侧重于识别服务及其版本。
这种比较有助于你了解从 Nmap 可以获得的不同信息级别,以及如何使用不同的脚本和选项来获得最全面的安全评估。
在这个实验中,我们探索了如何使用 Nmap 的 vuln
脚本在目标系统上扫描漏洞。我们学习了如何使用命令 nmap --script vuln 127.0.0.1
针对特定的 IP 地址(由于实验环境,以 127.0.0.1
作为实际示例)执行该脚本,通常需要使用 sudo
来获取必要的权限。
该实验还展示了如何使用 nmap --script vuln -p 80 127.0.0.1
扫描特定端口,使用 nmap -v --script vuln 192.168.1.1
增加详细程度,以及使用 nmap --script vuln -oN vuln.txt 127.0.0.1
将扫描结果保存到文件中。最后,该实验包括在 Xfce 终端中查看漏洞扫描结果并将其与服务检测信息进行比较。