Linux权限提升(基础到高级)0x1

admin 2023年9月14日11:12:12评论57 views字数 2433阅读8分6秒阅读模式
Linux权限提升(基础到高级)0x1

简介


权限提升是一场旅行。没有什么灵丹妙药,很大程度上取决于目标系统的具体配置。内核版本、安装的应用程序、支持的编程语言和其他用户的密码是影响您通往 root shell 之路的几个关键要素。


“权限提升”是什么意思?权限提升通常涉及从权限较低的帐户升级到权限较高的帐户。


它为什么如此重要?在执行渗透测试时,很少能够获得为您提供直接管理访问权限的立足点(初始访问权限)。权限提升至关重要,因为它可以让您获得系统管理员级别的访问权限。


Linux权限提升(基础到高级)0x1


在这里,我将首先教您一些有关权限提升技术的理论,然后教您如何在机器上的实践。(实际上,我将重点关注权限提升的手动方法,但会提到可以完成一些工作并节省您时间的自动化工具)。这些技术对红队和蓝队都有帮助。



Linux权限提升(基础到高级)0x1

01 内核漏洞


理论


Linux 内核管理内存(RAM、ROM)、I/O、CPU 和应用程序等组件之间的通信。这个关键功能需要内核有特定的权限;因此,成功利用该漏洞可能会获取 root 权限。


利用内核漏洞方法进行提权很简单;

1.识别当前内核版本。

2.搜索或编写目标系统内核版本的漏洞利用程序。

3.运行漏洞利用程序。


虽然听起来很简单,但请记住,失败的内核漏洞 EXP 可能会导致系统崩溃。在尝试利用内核漏洞之前,请确保这种潜在风险在渗透测试范围内是可以接受的。


实践


首先,我们需要找到目标系统当前的内核版本,以便检查它是否存在漏洞。


Linux权限提升(基础到高级)0x1


uname -a:将打印系统信息和系统使用的内核。格式 -> 内核名称、主机名、内核版本 | 内核版本(3.16.0、5.16.0 等)机器(体系结构)、NIS。

现在我们已经有了内核版本(3.13.0),现在让我们去Exploit-DB查EXP。


Linux权限提升(基础到高级)0x1


检查第二个(CVE-2015–1328)。


Ubuntu受影响版本的linux(又名Linux内核)包中的overlayfs实现无法正确检查上层文件系统目录中的文件创建权限,这使得本地用户可以在任意挂载命名空间中使用overlayfs的配置来获得root访问权限。


下载漏洞利用程序,它是 C 代码。使用GCC等编译代码。


Linux权限提升(基础到高级)0x1


我们获得了系统的 ROOT 访问权限。


利用如下工具,因为它会自动检查内核版本并根据优先级(如果有)列出所有漏洞和利用链接,因此您无需手动搜索。


https://github.com/The-Z-Labs/linux-exploit-suggester

Linux权限提升(基础到高级)0x1

02 sudo


理论


默认情况下,Sudo 命令允许您以 root 权限运行程序。在某些情况下,系统管理员可能需要为普通用户提供一些权限上的灵活性。例如,初级安全工程师能需要定期使用 Nmap,但不会获得完全 root 访问权限。在这种情况下,系统管理员可以允许该用户仅以 root 权限运行 Nmap,同时在系统的其余部分保持其常规权限级别。


利用sudo方法进行提权很简单;

1. 确定哪个用户可以通过 root 或任何其他用户权限运行的程序。

2. 搜索并找到该程序的漏洞。

3. 运行漏洞利用程序来获取用户权限。


实践


检查目标系统中当前用户的权限级别。


sudo -l:目标系统可以被配置为允许用户以 root 或其他用户的权限运行某些(或全部)命令。此命令可用于列出用户可以使用 sudo 运行的所有命令。


Linux权限提升(基础到高级)0x1


在这种情况下,我们当前的用户可以运行 3 个二进制文件/程序。


Linux权限提升(基础到高级)0x1


我运行exec来生成一个shell,它可以作为一个可选参数在find程序中使用。在这里,因为find是以ROOT权限运行的,所以我们在它上面运行的任何东西都将以ROOT权限执行。


GTFOBins是 Unix 二进制文件的精选列表,可用于绕过错误配置系统中的本地安全限制。帮助突破受限制的 shell、升级或维护提升的权限、传输文件、生成绑定和反向 shell,以及其他任务。


https://gtfobins.github.io/



Linux权限提升(基础到高级)0x1

03 SUID


理论


SUID 或 Set Owner User ID 是适用于可执行文件的权限位标志。SUID 允许用户以与文件所有者相同的权限(而不是执行者的权限)运行可执行文件。例如,有一个安全团队,其中一名团队成员 JOHN 想与他的成员共享此程序,但问题是他不想共享他的帐户密码或将他的所有团队成员添加到 Sudo 条目,他要做的是在他的程序上设置一个SUID位,这样每当他的团队成员运行他的程序时,该程序都只会使用JOHN特权来执行。


利用SUID方法提权很简单;

1. 识别设置了 SUID 位的程序。

2. 搜索并找到该程序的漏洞。

3. 运行漏洞利用程序来获取用户权限。


实践


我们首先找到设置了SUID位的程序。

find -perm -4000:将列出设置了 SUID 位的文件。


Linux权限提升(基础到高级)0x1


您通常会得到很多 SUID 位设置程序,例如 at、su、passwd 和 mount 等,但它们不太容易出现漏洞。这里我找到了base64程序,它用于将数据转换为base64或将其解码为ASCII/UTF-8。


因此,我在这里可以做的是使用 root 权限从系统中读取任何文件,因为该程序设置了 root suid 位。


Linux权限提升(基础到高级)0x1


只需创建一个本地环境变量并分配您想要的任何文件,运行 base64 程序并传递参数的名称作为我们的本地环境变量名称。


它将使用 Base64 对其进行编码,并使用 PIPE 将输出传递给 Base64 解码器,因此,我们可以使用 ROOT 权限读取任何文件的内容。


Linux权限提升(基础到高级)0x1



参考及来源:

https://medium.com/bugbountywriteup/privileges-escalation-techniques-basic-to-advanced-in-linux-3cff8b623b



Linux权限提升(基础到高级)0x1

免责&版权声明


安全小白团是帮助用户了解信息安全技术、安全漏洞相关信息的微信公众号。安全小白团提供的程序(方法)可能带有攻击性,仅供安全研究与教学之用,用户将其信息做其他用途,由用户承担全部法律及连带责任,安全小白团不承担任何法律及连带责任。欢迎大家转载,转载请注明出处。如有侵权烦请告知,我们会立即删除并致歉。谢谢!

原文始发于微信公众号(安全小白团):Linux权限提升(基础到高级)0x1

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月14日11:12:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux权限提升(基础到高级)0x1http://cn-sec.com/archives/2036560.html

发表评论

匿名网友 填写信息