使用 Nikto 将扫描输出保存到文件

Kali LinuxBeginner
立即练习

引言

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

当你运行扫描时,结果通常会直接显示在你的终端中。为了进行文档记录、进一步分析或与团队共享,将此输出保存到文件至关重要。Nikto 提供了灵活的选项,可以将扫描报告保存为各种格式。

在本实验中,你将学习如何将 Nikto 扫描结果保存到文件。你将通过扫描一个简单的、本地运行的 Web 服务器来练习将输出保存为纯文本(.txt)和逗号分隔值(.csv)格式。

选择纯文本输出格式

在此步骤中,你将探索 Nikto 支持的不同输出格式。Nikto 使用插件来实现其报告功能,你可以列出它们来查看可用的格式。

-list-plugins 选项会显示所有可用的插件,包括报告插件。让我们运行此命令来查看我们可以使用的格式。

在你的终端中执行以下命令:

nikto -list-plugins

你将看到一个长长的插件列表。滚动输出并查找“Reporting”部分。此部分列出了你可以保存扫描结果的所有文件格式。

...
Reporting
--------------------------------------------------
        csv - Comma-separated value
        htm - HTML Report
        json - JSON Report
        nbe - Nessus NBE format
        sql - SQL (generic)
        txt - Plain text
        xml - XML
...

如你所见,txt 被列为“Plain text”(纯文本)格式。我们将首先使用此格式。

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

在此步骤中,你将了解用于指定输出文件的标志。要告诉 Nikto 将报告保存在何处,请使用 -o(或 --output)标志。

此标志必须与 -Format 标志一起使用,该标志指定了你在上一步选择的文件格式。基本语法是:

nikto -h <target> -Format <format> -o <filename>

让我们使用 -help 选项查看 -o 标志的官方描述。你可以将输出通过管道传递给 grep 来快速找到相关行。

运行此命令:

nikto -help | grep -- "-o "

输出将显示 -o--output 标志的用法。

-o, -output <file>      Write output to this file

现在你已知道如何同时指定格式和文件名。在下一步中,我们将结合使用它们来运行扫描并保存结果。

运行扫描并生成文本文件

在此步骤中,你将执行扫描并将输出保存到纯文本文件。我们将结合前几个步骤中的标志和信息。

我们的目标是运行在端口 8000 上的本地 Web 服务器。此服务器的 URL 是 http://127.0.0.1:8000

  • 目标主机 (-h): http://127.0.0.1:8000
  • 格式 (-Format): txt
  • 输出文件 (-o): scan_report.txt

现在,构建完整的命令并在你的终端中运行它。所有操作都应在默认的 ~/project 目录中执行。

nikto -h http://127.0.0.1:8000 -Format txt -o scan_report.txt

Nikto 将开始扫描。你将在终端中看到扫描进度,但最终报告将写入 scan_report.txt 文件。请等待扫描完成。

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ 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

命令完成后,将在你的当前目录(~/project)中创建一个名为 scan_report.txt 的新文件。

验证已保存文本文件的内容

在此步骤中,你将验证扫描结果是否已正确保存到文本文件。你可以使用 cat 等命令行工具来显示文件的内容。

运行以下命令以查看 scan_report.txt 的内容:

cat scan_report.txt

输出将是完整的 Nikto 报告,其内容应与你在扫描期间在终端中看到的输出非常相似。

Nikto V2.5.0
================================================================
+-----------+
| General |
+-----------+
Date: ...
Start Time: ...
End Time: ...
Version: 2.5.0
...
+-----------+
|  Target   |
+-----------+
IP: 127.0.0.1
Hostname: 127.0.0.1
Port: 8000
...
+-----------+
| Findings  |
+-----------+
+ The anti-clickjacking X-Frame-Options header is not present.
...

你已成功将 Nikto 扫描报告保存到纯文本文件。现在可以轻松存储、归档或共享此文件。

重复过程以 CSV 格式保存

在此步骤中,你将重复该过程,将扫描结果保存为另一种格式:CSV(逗号分隔值)。CSV 格式是结构化的,非常适合导入到 Excel 或 LibreOffice Calc 等电子表格中,或用于脚本处理。

过程几乎相同。你只需将 -Format 标志的值更改为 csv,并提供一个带有 .csv 扩展名的新文件名。

  • 目标主机 (-h): http://127.0.0.1:8000
  • 格式 (-Format): csv
  • 输出文件 (-o): scan_report.csv

运行以下命令以生成 CSV 格式的报告:

nikto -h http://127.0.0.1:8000 -Format csv -o scan_report.csv

扫描完成后,将创建一个名为 scan_report.csv 的新文件。让我们使用 cat 命令查看其内容。

cat scan_report.csv

输出将是结构化的,包含逗号分隔的字段,这是 CSV 文件的标准格式。

"Host","IP","Port","Banner","Date","Vulnerability","Method","Description","Reference"
"127.0.0.1","127.0.0.1","8000","","...","OSVDB-3233: The anti-clickjacking X-Frame-Options header is not present.","GET","",""
"127.0.0.1","127.0.0.1","8000","","...","OSVDB-3092: 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.","GET","",""
...

你现在已成功生成了两种不同格式的报告,这展示了 Nikto 输出选项的灵活性。

总结

在本实验中,你学习了如何管理 Nikto Web 服务器扫描器的输出。你成功扫描了一个本地 Web 服务器,并将结果保存到文件中以供后续使用。

具体来说,你练习了:

  • 使用 -list-plugins 选项列出可用的输出格式。
  • 使用 -o-Format 标志来控制输出文件及其格式。
  • 生成纯文本(.txt)格式的扫描报告。
  • 生成逗号分隔值(.csv)格式的扫描报告。

这项技能对于任何需要记录发现、进行离线分析或将扫描结果集成到更大报告系统中的安全专业人员来说都是基础性的。