使用 Nikto 生成 HTML 报告

Kali LinuxBeginner
立即练习

引言

Nikto 是一个流行的开源 Web 服务器扫描器,它针对 Web 服务器进行全面的测试,检查超过 6700 个潜在危险文件/程序,检查超过 1250 个服务器的过时版本,以及超过 270 个服务器的版本特定问题。

运行扫描很有用,但能够以清晰、可读且可共享的格式保存结果对于安全专业人员至关重要。Nikto 可以将扫描结果导出为多种格式,其中 HTML 是最方便分析的格式之一。

在本实验中,你将学习如何针对目标 Web 服务器运行 Nikto 扫描并生成结构良好的 HTML 报告。

使用 -Format html 指定 HTML 格式

在本步骤中,你将学习如何为 Nikto 扫描指定输出格式。Nikto 可以生成多种格式的报告,在本实验中,我们将重点关注 HTML 格式,它具有高度的可读性和易于导航的特点。

-Format 选项用于告知 Nikto 使用哪种报告格式。要生成 HTML 报告,你必须为该选项指定 html 作为参数。

让我们首先探索 Nikto 的帮助菜单,查看可用的格式选项。

nikto -Help | grep Format

你应该会看到列出可用格式的输出,其中包括 html

-Format       Scan report format (csv, htm, msf+, nbe, sql, txt, xml)

指定 HTML 格式的语法就是 -Format html。在接下来的步骤中,我们将把它与其他标志结合起来,构建完整的命令。

使用 -o 标志指定输出 HTML 文件

在本步骤中,你将学习如何指定 Nikto 保存报告的文件。仅仅将格式设置为 HTML 会将原始 HTML 代码打印到你的终端,这并没有太大用处。你需要将此输出定向到一个文件。

-o (或 --output) 标志用于此目的。你将所需的文件名作为参数提供给此标志。

让我们将其与前一步的格式标志结合起来。我们将报告文件命名为 nikto_report.html,并将其保存在当前目录 (~/project) 中。我们还需要使用 -h (或 --host) 标志指定要扫描的目标。在本实验中,我们的目标是运行在 http://127.0.0.1:8000 的本地 Web 服务器。

完整的命令结构将如下所示:

nikto -h http://127.0.0.1:8000 -Format html -o nikto_report.html

我们将在下一步执行这个完整的命令。现在,只需熟悉其结构和每个标志的用途即可。

执行扫描以创建报告

现在是时候将所有内容整合起来并运行扫描了。我们将使用在前面步骤中构建的命令来扫描我们的本地 Web 服务器,并将结果保存到 HTML 文件中。

在你的终端中执行以下命令。扫描可能需要几分钟才能完成。

nikto -h http://127.0.0.1:8000 -Format html -o nikto_report.html

在扫描过程中,Nikto 将在终端显示其进度。输出将类似于:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         2023-10-27 10:30:00
---------------------------------------------------------------------------
+ Server:             SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ 7528 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           2023-10-27 10:30:15
+ (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

扫描完成后,你可以通过列出当前目录中的文件来验证报告文件是否已创建。

ls -l nikto_report.html

你应该会在输出中看到 nikto_report.html 文件。

-rw-r--r-- 1 labex labex 21435 Oct 27 10:30 nikto_report.html

在 Web 浏览器中打开生成的 HTML 文件

在本步骤中,你将打开生成的 nikto_report.html 文件来查看其内容。由于它是一个 HTML 文件,最佳的查看方式是在 Web 浏览器中打开。

LabEx 环境包含了 Firefox Web 浏览器。你可以通过运行 firefox 命令后跟文件名,直接从终端打开报告。

执行以下命令。这将启动 Firefox 并打开你的报告。

firefox nikto_report.html

一个新的 Firefox 窗口应该会出现在你的屏幕上,显示 Nikto 扫描报告。如果窗口出现在终端后面,你可能需要移动终端窗口才能看到它。

浏览 HTML 报告的不同部分

最后一步是浏览你刚刚在 Firefox 中打开的报告。Nikto 生成的 HTML 报告结构清晰且信息丰富。

花点时间看看报告的不同部分:

  • 扫描详情 (Scan Details): 在顶部,你会找到扫描的摘要,包括目标 IP、主机名、端口以及扫描执行的时间。
  • 漏洞表 (Vulnerabilities Table): 报告的主要部分是一个列出所有发现的表格。每一行代表一个潜在问题。
  • 关键列 (Key Columns): 注意 URI 列,它显示了受影响的路径;以及 Description 列,它解释了发现的内容。许多发现都包含一个链接(通常是 OSVDB ID),你可以点击它来获取有关该特定漏洞的更多详细信息。

点击报告中的一些链接,看看它们如何提供额外的上下文。熟悉这个报告结构是分析安全扫描结果的关键技能。此步骤仅用于观察,无需执行任何命令。

总结

在本实验中,你学会了如何使用 Nikto 生成一份全面的 HTML 格式的 Web 服务器漏洞报告。

你练习了使用 -Format html 选项来指定报告类型,以及使用 -o 标志将输出保存到名为 nikto_report.html 的文件中。最后,你在 Web 浏览器中打开并浏览了生成的报告,学会了如何解读扫描摘要和详细发现。

这项技能对于有效记录和沟通安全评估至关重要。