使用 Nikto 的调优选项控制扫描行为

Kali LinuxBeginner
立即练习

引言

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

虽然默认扫描非常全面,但它也可能耗时且产生大量输出。为了进行更具针对性的评估,Nikto 提供了 -Tuning 选项。此功能允许你指定要运行的测试类型,从而使你的扫描更快、更集中。

在本实验中,你将学习如何使用 -Tuning 选项来控制 Nikto 的扫描行为。你将练习运行不同调优级别的扫描,以查找特定的漏洞并比较结果。

理解 -Tuning 选项的用途

在此步骤中,你将了解 -Tuning 选项以及它可以控制的不同测试类别。-Tuning 选项有助于你将扫描集中在特定的感兴趣区域,从而节省时间并减少输出中的噪音。

Nikto 将其测试分为几个类型。你可以使用数字或字母来选择特定的类别。让我们看一下主要的调优选项。你可以通过查看帮助信息来了解这些选项。

执行以下命令显示 Nikto 的帮助菜单:

nikto -h

滚动输出并找到 -Tuning 部分。它看起来会像这样:

   -Tuning
       Tuning options control the test that Nikto will use against a target.
       By default, Nikto runs the default set of tests. The tuning options
       are a bitwise value, so they can be combined (e.g. -Tuning 12).
       The options are:
           0 - File Upload
           1 - Interesting File / Seen in logs
           2 - Misconfiguration / Default File
           3 - Information Disclosure
           4 - Injection (XSS/Script/HTML)
           5 - Remote File Retrieval - Inside Web Root
           6 - Denial of Service
           7 - Remote File Retrieval - Server Wide
           8 - Command Execution / Remote Shell
           9 - SQL Injection
           a - Authentication Bypass
           b - Software Identification
           c - Remote Source Inclusion
           x - Reverse Tuning Options (i.e., include all except specified)

如你所见,每个数字都对应一个特定的测试类别。例如,1 代表“Interesting File”(有趣的文件),2 代表“Misconfiguration”(配置错误)。x 选项比较特殊;它会反转逻辑,告诉 Nikto 运行所有测试,除了 你指定的那些。

运行带 -Tuning 1 的扫描以查找有趣的文件

在此步骤中,你将执行一次聚焦扫描,仅搜索“有趣的文件”。此类扫描会查找可能未直接从 Web 应用程序链接,但可能包含敏感信息的文件,例如备份文件、配置文件或日志。我们的设置脚本为此创建了一个 config.bak 文件。

我们将使用 -Tuning 1 选项来指示 Nikto 只运行“Interesting File / Seen in logs”(有趣的文件 / 日志中可见)类别中的测试。Web 服务器正在端口 8000 上的 127.0.0.1 上运行。

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

nikto -h http://127.0.0.1:8000 -Tuning 1

扫描完成后,你将看到类似以下的输出。请注意,Nikto 找到了 config.bak 文件。

- 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
+ /config.bak: A backup file was found.
+ 1 host(s) tested

这演示了你如何在不运行完整、耗时的扫描的情况下快速找到潜在的敏感文件。

运行带 -Tuning 2 的扫描以查找配置错误

在此步骤中,你将使用 -Tuning 2 选项扫描常见的服务器配置错误和默认文件。一种常见的配置错误是允许目录索引,当目录中不存在索引文件(如 index.html)时,它会列出目录的内容。我们正在使用的简单 Python 服务器就具有此行为。

让我们执行一次仅专注于配置错误的扫描。

执行此命令:

nikto -h http://127.0.0.1:8000 -Tuning 2

输出将显示与配置错误相关的发现。你应该会看到一条消息表明目录索引已启用。

- 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
+ /: Directory indexing is enabled.
+ 1 host(s) tested

请注意,此扫描未报告 config.bak 文件,因为我们将测试限制在了“Misconfiguration”(配置错误)类别。

使用 -Tuning x 执行反向调优扫描

在此步骤中,你将学习如何使用反向调优。有时,你希望执行一次广泛的扫描,但排除一个你知道不相关或过于冗余的特定测试类别。-Tuning 中的 x 选项允许你执行此操作。

例如,假设你想运行所有测试,但 _排除_“Interesting File”(有趣的文件)检查。你可以通过将 x1 结合来实现这一点。

运行以下命令以执行排除“Interesting File”测试的反向扫描:

nikto -h http://127.0.0.1:8000 -Tuning x1

观察输出。你将看到各种发现,例如目录索引配置错误,但 config.bak 文件将 不会 被报告。

- 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.
+ /: Directory indexing is enabled.
...
+ 1 host(s) tested

反向调优是一种通过移除当前评估不需要的特定检查来定制扫描的强大方法。

比较不同调优级别的输出

在最后这个实践步骤中,你将组合多个调优选项来创建一个更全面但仍可定制的扫描。-Tuning 选项接受多个值,以运行所有指定类别中的测试。

让我们运行一个结合了“Interesting Files”(有趣的文件)(1)和“Misconfigurations”(配置错误)(2)搜索的扫描。

执行以下命令:

nikto -h http://127.0.0.1:8000 -Tuning 12

现在,检查输出。你将看到 Nikto 报告了两个类别中的发现。它将同时找到 config.bak 文件和目录索引问题。

- 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
+ /: Directory indexing is enabled.
+ /config.bak: A backup file was found.
+ 1 host(s) tested

通过将此扫描的结果与之前的扫描进行比较,你可以清楚地看到 -Tuning 选项如何让你精确控制安全评估的范围。你可以混合搭配选项来构建你需要的确切扫描。

总结

在本实验中,你学习了如何使用 -Tuning 选项有效地控制 Nikto 的扫描行为。这个强大的功能对于进行高效且有针对性的 Web 安全评估至关重要。

你练习了:

  • 理解 Nikto 中可用的不同测试类别。
  • 使用 -Tuning 1 运行针对“Interesting Files”(有趣的文件)的聚焦扫描。
  • 使用 -Tuning 2 扫描“Misconfigurations”(配置错误)。
  • 执行反向扫描以排除特定测试,使用 -Tuning x
  • 组合多个调优选项以创建自定义扫描配置文件。

通过掌握 -Tuning 选项,你可以显著提高使用 Nikto 的工作效率,从而能够快速聚焦于特定类型的漏洞,并减少分析扫描结果所需的时间。