介绍
在本实验中,你将学习如何使用开源 Web 服务器扫描工具 Nikto 来检测潜在的漏洞。你将安装 Nikto,扫描一个测试 Web 服务器,保存扫描结果,并分析发现的问题以识别安全弱点。通过这些动手实践,你将掌握 Web 安全评估的基础技能。
安装并验证 Nikto
在开始扫描漏洞之前,你需要安装 Nikto 工具。本步骤将指导你更新系统的软件包列表,并使用 apt 软件包管理器安装 Nikto。所有命令都将在终端中运行。你的默认工作目录是 /home/labex/project。
首先,更新软件包列表,以确保你获取到存储库中可用的最新软件版本。
sudo apt update
接下来,安装 Nikto。-y 标志会自动确认安装,因此你无需手动输入「Y」。
sudo apt install -y nikto
安装完成后,按照惯例应验证工具是否已正确安装。你可以通过检查其版本号来完成此操作。
nikto -Version
你应该会看到显示 Nikto 版本号的输出,如下所示。具体版本号可能会有所不同。
---------------------------------------------------------------------------
- Nikto v2.5.0
---------------------------------------------------------------------------
成功安装 Nikto 后,你现在可以开始扫描 Web 服务器了。
执行基础扫描
既然 Nikto 已经安装完毕,你的下一步是对目标 Web 服务器运行基础扫描。在本实验中,你的环境中已经运行了一个测试 Web 服务器。在扫描之前,你应该始终确认目标是否在线且可访问。
首先,验证目标 Web 服务器是否正在运行。我们将使用带有 -I 标志的 curl 命令,仅从服务器获取 HTTP 响应头(Headers)。本实验的目标地址是 http://localhost:8000。
curl -I http://localhost:8000
成功的响应将包含 HTTP/1.0 200 OK 这一行,这表明服务器处于活动状态并准备好接受请求。
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.12
Date: ...
Content-type: text/html
Content-Length: 71
现在,运行你的第一次 Nikto 扫描。使用 -h(或 -host)标志来指定你的目标。
nikto -h http://localhost:8000
Nikto 将开始扫描目标。当它执行各种测试时,你会在终端中看到实时输出。扫描将从目标信息开始,然后列出它发现的所有潜在漏洞。
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
...
+ 1 host(s) tested
你现在已经完成了一次基础的 Web 服务器扫描。在下一步中,你将学习如何保存这些结果以便后续分析。
将扫描结果保存到文件
运行扫描并在终端查看输出对于快速检查非常有用,但对于专业的评估工作,你必须保存结果。保存的报告可以作为发现问题的记录,并可以分享给他人进行修复。
Nikto 允许你以多种格式保存扫描结果。在本步骤中,你将把报告保存为纯文本文件。使用 -o(或 -output)标志来指定输出文件。
再次运行扫描,这次将输出重定向到名为 nikto_report.txt 的文件中。
nikto -h http://localhost:8000 -o nikto_report.txt
扫描将像之前一样运行,但这次除了在屏幕上显示结果外,它还会将结果保存到当前目录(/home/labex/project)下的指定文件中。
扫描完成后,使用 ls -l 命令验证报告文件是否已创建,该命令会列出文件及其详细信息。
ls -l nikto_report.txt
你应该能看到列出的新报告文件,且文件大小大于零。
-rw-rw-r-- 1 labex labex 1234 ... nikto_report.txt
要快速确认文件内容,你可以使用 head 命令查看前 20 行。
head -n 20 nikto_report.txt
这将显示报告的开头部分,包括扫描摘要和前几项发现。现在你已经拥有了扫描的永久记录。
分析扫描报告
保存扫描结果后,最后一步是分析报告以了解识别出的漏洞。这包括阅读报告并对其进行过滤,以突出最重要的信息。
首先,你可以使用 cat 命令查看整个报告。这对于全面了解 Nikto 收集的所有信息非常有用。
cat nikto_report.txt
完整的报告可能会很长,因此过滤报告通常更有效率。Nikto 在行首使用 + 符号来表示有趣的发现或潜在漏洞。你可以使用 grep 命令仅显示这些行。
grep '+' nikto_report.txt
此命令将过滤报告,并向你展示 Nikto 标记的所有项目的简明列表。
+ Target Host: localhost
+ Target Port: 8000
+ GET /: The anti-clickjacking X-Frame-Options header is not present.
+ HEAD /: SimpleHTTP/0.6 appears to be outdated (current is at least 1.2)
在审查这些发现时,请注意那些指示配置错误(如缺失安全响应头)或存在敏感文件的描述。每一项发现都为进一步的调查提供了切入点。
总结
在本实验中,你成功安装了 Nikto 并对目标 Web 服务器执行了漏洞扫描。你学习了如何执行扫描、将发现结果保存到报告文件中,以及如何分析结果以识别潜在的安全问题。这些基础技能,包括安装安全工具、运行扫描和解读报告,对于任何开始从事网络安全和渗透测试的人员来说都是至关重要的。



