利用代码执行漏洞
在本节中,我们将更加深入地了解Metasploit,我们将看到如何使用它来利用某个服务中存在的漏洞。这是一个代码执行漏洞,可以让我们完全访问目标计算机。回到我们在Nmap中的结果,我们将做与以前一样的事情。复制服务名称,看看它是否有任何漏洞。现在我们查看端口139,它的Samba服务器版本为3.X
,就像上一节一样,在Google搜索Samba 3.X漏洞。我们将看到有很多结果,但主要是关于Rapid7方面的漏洞。Rapid7是一家开发Metasploit框架的公司,因此我们选择这一特定漏洞的原因。我们使用的漏洞利用是用户名映射脚本。这是一个命令执行漏洞。漏洞的名称是exploit/multi/samba/usermap_script
,因此它与我们之前使用的FTP服务中的恶意后门相同。这只是我们将要使用的另一个名称,如以下屏幕截图所示:
我们要进入Metasploit并运行msfconsole
。我们像上一节中所做的那样编写命令。然后键入我们想要使用的漏洞利用名称。接下来我们要做的就是show
选项。命令如下:
使用这些漏洞总是几乎相同。唯一的区别是我们可以为每个漏洞利用设置的选项。我们总是运行使用,然后输入漏洞利用名称,然后显示选项以查看我们可以更改以使用此漏洞利用。每当我们想要运行漏洞利用时,我们使用<exploit name>
,然后我们会显示选项以查看要配置的选项。但是使用漏洞并设置选项并运行它们总是一样的。
我们需要设置RHOST,它是目标计算机的IP。我们将以与上一节相同的方式进行此操作。设置选项始终相同。正如我们之前所做的那样,我们使用set
命令设置一个选项,即RHOST,然后放置目标计算机的IP,即10.0.2.4
。我们运行show
选项,正如我们在下面的屏幕截图中看到的,RHOST将根据指定的IP正确设置:
这是与前一节不同的地方。在上一节中,我们需要一个已安装在目标计算机上的后门,因此我们所要做的就是连接到后门,然后我们就可以在目标计算机上运行Linux命令。在本节中,目标计算机没有后门。它有一个正常的程序,具有代码执行漏洞和缓冲区溢出。该程序不允许我们运行Linux命令的代码。但它有一个允许我们运行一小段代码的缺陷,这些小代码被称为Payloads。我们需要做的是创建一个Payloads,然后使用我们发现的漏洞在目标计算机上运行它。这段代码将允许我们做不同的事情。
我们将来会看到各种类型的Payloads,Payloads可能让我们执行Linux命令。我们可以运行show payloads
命令来查看我们使用此特定漏洞利用的Payloads。可以使用不同类型的Payloads,如以下屏幕截图所示:
Payloads是一小段代码,一旦漏洞被利用,将在目标计算机上执行。当我们利用此漏洞时,我们将要执行的代码将被执行。现在,根据我们选择的Payloads的类型,Payloads将执行对我们有用的操作。在上面的屏幕截图中,我们可以看到所有Payloads都是命令行,因此它们让我们在目标计算机上运行命令,就像Linux命令一样。而且所有这些都只能在Unix上运行,因为我们的目标是Linux。
Payloads有两种主要类型:
- 绑定有效负载:它们打开目标计算机上的端口,然后就可以连接到该端口。
- 反向有效负载:反向有效负载与绑定有效负载相反。在我们的机器上打开端口,然后从目标计算机连接到我们的机器。此有效负载很有用,因为这允许我们绕过防火墙。防火墙过滤任何连接到目标机器的连接,但如果目标机器连接到我们并且我们没有防火墙,那么我们将能够绕过防火墙。
我们将使用cmd/unix/reverse_netcat
有效负载。这些有效负载的最后一部分是编程语言或将用于促进连接的工具。例如,在前面的屏幕截图中,可以看到有用Perl,PHP,Python,Ruby编写的有效负载,或者有一个名为Netcat的工具,它允许计算机之间的连接。我们将以与使用漏洞利用相同的方式使用cmd/unix/reverse_netcat
有效负载。我们将使用set
命令来使用它。命令如下:
我们将以与设置选项相同的方式设置有效负载。确实显示了选项以查看是否还有其他需要设置的选项,并且因为我们选择了有效负载,所以有更多选项。在下面的屏幕截图中,我们可以看到有一个名为LHOST的选项,它是监听地址,也是我们自己的地址:
现在我们使用ifconfig
获取自己的IP地址,此示例的IP地址为10.2.0.15
,如下所示:
我们将以与之前设置RHOST相同的方式设置LHOST。使用set
命令将LHOST设置为10.2.0.15
。然后设置<value>
:
然后显示选项,如果一切没有问题,如下屏幕截图所示:
我们正在使用这个漏洞。RHOST设置为10.0.2.4
,然后LHOST设置为10.0.2.15
。我们还可以设置要在当前计算机上监听的端口。如果需要可以将其设置为80。Web浏览器使用该端口。如果我们将LPORT设置为80,目标计算机将尝试使用端口80连接到,端口80永远不会被防火墙过滤,因为这是Web服务器或Web浏览器使用的端口。如果我们在机器上打开PORT 80并且目标通过端口80连接到,那么防火墙认为目标只是浏览互联网。我们现在不打算这样做,因为在端口80上运行了一个Web服务器并且会发生冲突。我们将以与LHOST相同的方式将LPORT设置为5555
。再次使用show
选项。在下面的屏幕截图中,我们可以看到端口更改为5555
:
现在我们运行exploit
命令来运行漏洞利用程序。在下面的屏幕截图中,我们可以看到会话1已经打开,连接是在10.0.2.15:5555
设备和10.0.2.4:48184
设备,下面是我们的设备和目标设备:
我们执行pwd
,然后再查看用户id。如果执行uname -a
命令,查看Metasploitable机器内核版本。如果执行ls
则将能够列出文件等。可以使用任何Linux命令,就像我们在上一节中所做的那样,如下所示: