利用代码执行漏洞

17 Mar 2025 | 6 分钟阅读

在本节中,我们将更深入地了解 Metasploit,并学习如何利用它来利用某个服务中存在的漏洞。这是一个代码执行漏洞,可以让我们完全访问目标计算机。现在回到 Nmap 的结果,我们将执行与之前相同的操作。我们复制服务名称,然后检查它是否有任何漏洞。目前,我们将查看端口 139,该端口运行着 Samba 服务器 3.X 版本。与上一节一样,我们将转到 Google,搜索 Samba 3.X 漏洞利用。我们会看到有很多结果,但我们感兴趣的是 Rapid7。Rapid7 是开发 Metasploit 框架的公司,因此我们选择这个特定的漏洞利用。我们将使用的漏洞利用是 username map script。这是一个命令执行漏洞。该漏洞的名称是 exploit/multi/samba/usermap_script,与我们在 FTP 服务中使用的恶意后门相同。正如下面的截图所示,这只是我们将要使用的不同名称。

Exploiting a Code Execution Vulnerability

我们转到 Metasploit 并运行 msfconsole。我们将像上一节一样输入命令。我们将输入 use,然后输入我们要使用的漏洞利用的名称。接下来我们将执行 show options。命令如下:

Exploiting a Code Execution Vulnerability

使用这些漏洞利用的方法总是大同小异。唯一的区别在于我们可以为每个漏洞利用设置的选项。我们总是先输入 use,然后输入漏洞利用的名称,然后执行 show options 来查看我们可以更改以与此漏洞利用一起工作的内容。每当我们想运行漏洞利用时,我们都会输入 use <漏洞利用名称>,然后执行 show options 来查看我们要配置的选项。但是,使用漏洞利用、设置选项和运行它们的方法始终是相同的。

我们需要设置 RHOST,即目标计算机的 IP 地址。我们将以与上一节相同的方式进行设置。设置选项始终是相同的。就像我们之前做的那样,我们使用 set 命令来设置一个选项,即 RHOST,然后我们将输入目标计算机的 IP 地址,即 10.0.2.4。我们将运行 show options,正如我们在下面的截图中看到的,RHOST 将根据指定的 IP 正确设置。

Exploiting a Code Execution Vulnerability

在这里,情况与上一节不同。在上一节中,我们需要一个已经安装在目标计算机上的后门,所以我们只需要连接到后门,然后我们就可以在目标计算机上运行任何 Linux 命令。在本节中,目标计算机没有后门。它有一个正常的程序,该程序存在代码执行漏洞和缓冲区溢出。该程序不包含允许我们运行 Linux 命令的代码。它有一个特定的缺陷,可以让我们运行一小段代码,而这些小段代码称为 payload。我们需要做的是创建 payload,然后使用我们找到的漏洞在目标计算机上运行它。这段代码将允许我们做不同的事情。

有各种类型的 payload,我们将在未来进行研究,这些 payload 可能会让我们执行 Linux 命令。我们可以使用 show payloads 命令来查看我们与这个特定漏洞利用一起使用的 payload。我们可以使用不同类型的 payload,如下面的截图所示。

Exploiting a Code Execution Vulnerability

Payloads 是一小段代码,一旦漏洞被利用,就会在目标计算机上执行。当我们利用漏洞时,我们将选择的代码将被执行。现在,根据我们选择的 payload 类型,payload 会做一些对我们有用的事情。在上图的截图中,我们可以看到所有 payload 都是命令行式的,因此它们允许我们在目标计算机上运行命令,就像 Linux 命令一样。而且它们都只在 Unix 系统上运行,因为我们的目标是 Linux。

payloads 主要有两种类型:

  1. Bind payloads: 它们会在目标计算机上打开一个端口,然后我们可以连接到该端口。
  2. Reverse payloads: Reverse payloads 与 bind payloads 相反。它们会在我们的机器上打开一个端口,然后从目标计算机连接到我们的机器。这个 payload 很有用,因为它允许我们绕过防火墙。防火墙会过滤掉任何发往目标计算机的连接,但如果目标计算机连接到我们,并且我们没有防火墙,那么我们就可以绕过防火墙。

我们将使用 cmd/unix/reverse_netcat payload。这些 payload 的最后一部分是用于促进连接的编程语言或工具。例如,在上一个截图中,我们可以看到有一些用 Perl、PHP、Python、Ruby 编写的 payload,或者有一个名为 Netcat 的工具,它允许计算机之间的连接。cmd/unix/reverse_netcat payload 是我们将要使用的,其使用方式与我们使用 exploit 相同。我们只是使用 set 命令来使用它。命令如下:

Exploiting a Code Execution Vulnerability

我们将以设置选项的方式设置 payload。我们执行 show options 来查看是否有任何其他需要设置的选项,并且因为我们选择了 payload,所以会有更多选项。在下面的截图中,我们可以看到有一个名为 LHOST 的选项,它是监听地址,即我们自己的地址。

Exploiting a Code Execution Vulnerability

现在我们将使用 ifconfig 来获取我们自己的 IP 地址,在本例中我们的 IP 地址是 10.2.0.15,如下图所示。

Exploiting a Code Execution Vulnerability

我们将以之前设置 RHOST 的方式设置 LHOST。我们将 LHOST 设置为 10.0.2.15。为此,我们将使用 set 命令,然后输入 <选项名称>,然后输入我们想要设置的值。

Exploiting a Code Execution Vulnerability

然后我们将执行 show options,一切看起来都很正常,如下面的截图所示。

Exploiting a Code Execution Vulnerability

我们正在使用这个漏洞利用。RHOST 被设置为 10.0.2.4,这是可以的,然后 LHOST 被设置为 10.0.2.15,这是完美的。我们还可以设置我们要监听的当前计算机的端口。如果需要,我们可以将其设置为 80。该端口由 Web 浏览器使用。如果我们设置 LPORT 为 80,目标计算机将尝试通过端口 80 连接到我们,而该端口永远不会被防火墙过滤,因为这是 Web 服务器或 Web 浏览器使用的端口。如果我们打开我们机器上的 PORT 80,而目标连接到我们的端口 80,那么防火墙会认为目标只是在浏览互联网。我们现在不这样做,因为我们在端口 80 上运行了一个 Web 服务器,这会引起冲突。我们将像设置 LHOST 一样,将 LPORT 设置为 5555。再次,我们将执行 show options。在下面的截图中,我们可以看到端口已更改为 5555。

Exploiting a Code Execution Vulnerability

现在我们将运行 exploit 命令来运行漏洞利用。在下面的截图中,我们可以看到已打开 session 1,并且连接位于 10.0.2.15:5555 设备和 10.0.2.4:48184 设备之间,这是我们的设备和目标设备。

Exploiting a Code Execution Vulnerability

我们将执行 pwd,然后执行 id。我们将看到我们是 root 用户。如果我们执行 uname -a,我们将看到我们在 Metasploitable 机器上。如果我们执行 ls,我们将能够列出文件等等。正如我们在上一节中所做的那样,我们可以使用任何 Linux 命令,如下所示。

Exploiting a Code Execution Vulnerability
下一个主题安装 MSFC