引言
Nikto 是一个流行的开源 Web 服务器扫描器,它对 Web 服务器进行全面的测试,检查超过 6700 个潜在危险文件/程序,检查超过 1250 个服务器的过时版本,以及超过 270 个服务器的版本特定问题。
手动扫描大量主机可能既繁琐又耗时。更有效的方法是将所有目标列在一个文件中,然后让 Nikto 依次扫描它们。在本实验中,你将学习如何创建一个包含多个目标主机的文本文件,并使用 Nikto 通过一个命令对所有目标执行漏洞扫描。
Nikto 是一个流行的开源 Web 服务器扫描器,它对 Web 服务器进行全面的测试,检查超过 6700 个潜在危险文件/程序,检查超过 1250 个服务器的过时版本,以及超过 270 个服务器的版本特定问题。
手动扫描大量主机可能既繁琐又耗时。更有效的方法是将所有目标列在一个文件中,然后让 Nikto 依次扫描它们。在本实验中,你将学习如何创建一个包含多个目标主机的文本文件,并使用 Nikto 通过一个命令对所有目标执行漏洞扫描。
在此步骤中,你将创建一个简单的文本文件,其中包含你要扫描的目标主机名。Nikto 可以读取此文件并扫描其中列出的每个主机。每个主机名或 IP 地址都应占新的一行。我们将使用 nano 文本编辑器在当前工作目录 ~/project 中创建此文件。
首先,使用 nano 打开一个名为 targets.txt 的新文件:
nano targets.txt
现在,在 nano 编辑器中,添加以下两个主机名。这些是可用于测试目的的公共站点。
scanme.nmap.org
example.com
要在 nano 中保存文件,请按 Ctrl+O,然后按 Enter 确认文件名。要退出 nano,请按 Ctrl+X。
你可以使用 cat 命令验证文件的内容:
cat targets.txt
你应该会看到以下输出:
scanme.nmap.org
example.com
现在你已准备好用于 Nikto 的目标文件。
-h 标志并指定文本文件路径在此步骤中,我们将准备 Nikto 命令以执行多目标扫描。-h (或 --host) 标志用于指定目标。虽然它通常接受单个主机名或 IP 地址,但也可以接受文件路径。当你提供文件路径时,Nikto 会识别出它应该从该文件中读取目标。
此操作的基本语法是:
nikto -h /path/to/your/file.txt
由于我们的文件 targets.txt 位于当前目录 (~/project),我们可以直接使用文件名。
在运行实际扫描之前,熟悉 Nikto 的选项是一个好习惯。你可以通过运行以下命令来查看帮助菜单:
nikto -Help
滚动浏览输出,你将找到 -h / -host 选项的描述,确认它可以接受一个主机或一个主机文件。我们将在下一步执行实际扫描。
既然你已经创建了目标文件并理解了命令结构,现在是时候启动扫描了。Nikto 将读取 targets.txt 文件,并逐一扫描其中列出的每个主机。
在终端中执行以下命令开始扫描。请耐心等待,因为对多个主机进行全面扫描可能需要几分钟时间。
nikto -h targets.txt
终端现在将显示扫描的实时进度。
在此步骤中,你将观察 Nikto 生成的输出。无需运行新命令。随着扫描的进行,你将看到每个目标的详细信息。
首先,Nikto 将显示其横幅(banner)并开始扫描第一个目标 scanme.nmap.org。你将看到其 IP 地址、服务器软件以及发现的任何漏洞等信息。
第一个主机初始输出的截断示例可能如下所示:
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 45.33.32.156
+ Target Hostname: scanme.nmap.org
+ Target Port: 80
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: Apache/2.4.7 (Ubuntu)
... (scanme.nmap.org 的漏洞检查和发现) ...
一旦 scanme.nmap.org 的扫描完成,Nikto 将自动开始扫描下一个目标 example.com。输出将清晰地指示切换到新目标:
... (scanme.nmap.org 扫描结束) ...
+ 1 host(s) tested
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 93.184.216.34
+ Target Hostname: example.com
+ Target Port: 80
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: ECS (sjc/4E5D)
... (example.com 的漏洞检查和发现) ...
只需观察终端,直到整个过程完成。
当 Nikto 完成对 targets.txt 中所有主机的扫描后,它将打印最终摘要。此摘要包括测试的总主机数和扫描的结束时间。所有主机的完整扫描日志将在你的终端中可见。
虽然在终端中查看输出很有用,但为了文档记录或进一步分析,最好将结果保存到文件中。你可以使用 -o(或 -output)标志来实现这一点。
让我们再次运行扫描,但这次我们将输出保存到名为 scan_results.txt 的文件中。
nikto -h targets.txt -o scan_results.txt
此命令将执行相同的扫描,但除了在屏幕上显示输出外,还会将其写入 scan_results.txt。扫描完成后,你可以使用 cat 命令查看已保存报告的内容:
cat scan_results.txt
这样,你就可以随时查看所有扫描主机的结果,而无需再次运行扫描。
在此实验中,你已成功学会如何使用 Nikto 自动化扫描多个 Web 服务器。你练习了在文本文件中创建目标列表,每个目标占一行。然后,你使用 -h 标志将 Nikto 指向此文件,使其能够顺序扫描每个主机。最后,你学会了如何使用 -o 标志将多主机扫描的合并结果保存到输出文件中,以便于审查和记录。此方法是提高网络侦察和漏洞评估工作流程效率的基本技术。