引言
Nikto 是一个强大的开源 Web 服务器扫描器,它针对 Web 服务器执行全面的测试,包括超过 6700 个潜在危险的文件/程序,检查超过 1250 个服务器的过时版本,以及超过 270 个服务器的版本特定问题。
默认情况下,Nikto 会运行大量的插件,这可能会耗费大量时间。为了更高效和有针对性的扫描,你可以选择特定的插件来运行。当你想要检查特定的漏洞或特定类型的错误配置时,这会非常有用。
在本实验中,你将学习如何列出所有可用的 Nikto 插件,然后使用单个特定插件执行一次聚焦扫描。
使用 -list-plugins 列出所有可用插件
在本步骤中,你将学习如何查看 Nikto 可用于扫描的所有插件。这是执行聚焦扫描的第一步,因为你需要知道可以从中选择的插件名称。
-list-plugins 选项告诉 Nikto 打印所有插件的详细列表,然后退出,而不执行扫描。
在你的终端中执行以下命令来列出所有可用插件:
nikto -list-plugins
你将看到一长串插件滚动显示。输出被格式化为列,显示插件的名称、作者及其用途的简要描述。
以下是输出内容的截断示例:
- Nikto 2.5.0
---------------------------------------------------------------------------
Plugin: apache_expect_header
Author: David Lodge <dave at cirt.net>
Description: See if an Expect header will crash Apache. Bugtraq ID 5253.
Type: Standard
Version: 2.5.0
CVSID: $Id: apache_expect_header.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $
Plugin: apacheusers
Author: Chris Forte
Description: Enumerate apache users via ~user requests
Type: Standard
Version: 2.5.0
CVSID: $Id: apacheusers.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $
... (更多插件) ...
花点时间浏览列表,了解 Nikto 可以执行的测试的种类。
选择一个特定插件来运行,例如 apacheusers
在本步骤中,我们将回顾上一步的列表,并为我们的聚焦扫描选择一个特定插件。这是一个概念性步骤,你根据特定的测试目标来识别插件。
在本实验中,我们将选择 apacheusers 插件。正如其描述所述,该插件尝试“通过 ~user 请求枚举 apache 用户”。这是一个常见的测试,用于查看 Web 服务器是否暴露了有效的系统用户名。
即使我们的目标服务器是一个简单的 Python 服务器而不是 Apache,我们也将使用此插件来演示选择和执行过程。该插件将运行,但它不会在我们的非 Apache 服务器上找到任何漏洞,这是一个有效且符合预期的结果。
在下一步中,你将学习如何构建命令来仅使用此插件。
使用 -plugins 选项指定所需插件名称
在本步骤中,你将学习如何构建 Nikto 命令来仅运行你选择的插件。
要指定要运行的插件,你使用 -plugins 选项,后跟插件名称。如果你想运行多个插件,也可以提供一个逗号分隔的列表,但对于本实验,我们将专注于单个插件。
基本命令结构是:
nikto -h <target_host> -plugins <plugin_name>
对于我们选择的 apacheusers 插件,以及在本地端口 8000 上运行的测试服务器,命令将是:
nikto -h 127.0.0.1:8000 -plugins apacheusers
让我们分解一下这个命令:
nikto: 我们正在运行的程序。-h 127.0.0.1:8000:-h(host) 选项指定目标。我们的测试服务器运行在本机 (127.0.0.1) 的8000端口上。-plugins apacheusers: 这是命令的关键部分。它告诉 Nikto 仅 运行apacheusers插件,并跳过所有其他插件。
在下一步中,你将执行此命令并查看聚焦扫描的结果。
在目标上执行聚焦扫描
在本步骤中,你将执行刚刚学到的命令,对测试 Web 服务器执行聚焦扫描。
在你的终端中运行以下命令。这将启动 Nikto,但它不会运行几分钟,而是会非常快速地完成,因为它只运行一个插件。
nikto -h 127.0.0.1:8000 -plugins apacheusers
输出将比标准的 Nikto 扫描短得多。它看起来会像这样:
- Nikto 2.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 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ Allowed HTTP Methods: GET, HEAD
+ 1 host(s) tested
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time: 2023-10-27 10:30:01 (GMT0) (1 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
请注意扫描完成的速度有多快。这展示了使用特定插件进行目标测试的主要优势。
分析插件特定输出
在最后一步,让我们分析一下我们聚焦扫描的输出。这是安全测试中的一项关键技能——理解结果的含义。
再次查看上一步的输出:
- Nikto 2.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
...
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
对我们分析最重要的行是:
+ 0 error(s) and 0 item(s) reported on remote host
这一行告诉我们 apacheusers 插件运行了,但没有找到它旨在检测的任何条件。这是预期的结果,因为我们的目标是 Python 服务器,而不是配置为暴露用户目录的 Apache 服务器。
在渗透测试中,阴性结果(未发现漏洞)与阳性结果同样重要。这意味着,对于这个特定的测试,服务器看起来是安全的。通过仅运行 apacheusers 插件,我们能够快速有效地确认这一点,而无需进行全面扫描的干扰和耗时。
总结
恭喜你完成了本次实验!
你已成功学会如何通过选择特定插件来执行 Nikto 的聚焦扫描。这项技术对于高效且有针对性的 Web 安全评估至关重要。
在本次实验中,你练习了以下技能:
- 使用
-list-plugins选项列出所有可用的 Nikto 插件。 - 理解如何为特定测试选择相关插件。
- 使用
-plugins选项指示 Nikto 只运行指定的插件。 - 执行聚焦扫描并分析简洁、插件特定的输出。
通过掌握这项技能,你可以显著加快测试工作流程,并将精力集中在对给定目标最重要的漏洞上。


