Linux 提权

Linux 权限提升在很大程度上与 Windows 类似。我们寻找可以写入的易受攻击的服务、那些棘手的错误配置、平面文件中的密码、所有的可写文件、计划任务,当然还有修补问题。

在有效和高效地分析 Linux 系统中的权限提升问题方面,我们可以使用一些工具来为我们完成所有的工作。

在我们进行任何类型的权限提升攻击之前,我首先要在 Linux 主机上进行一个良好的信息收集工作,并识别所有关于系统的信息。这包括用户、服务、定时任务、软件版本、弱信任对象、错误配置的文件权限,甚至是 Docker 信息。我们可以使用一个名为 LinEnum 的工具来为我们完成所有的累活( https://github.com/rebootuser/linenum )。

Linux 提权 - 图1

这是一个非常长的报告,内容是你可能想要了解的关于底层系统的所有信息,这对于未来的活动来说是非常好的。

一旦我们获得了关于系统的信息,我们就会试图看看我们是否能够利用这些漏洞中的任何一个。如果我们找不到任何可用的漏洞或服务、计划任务中的错误配置,我们将直接在系统或应用程序上进行攻击。我试着最后做这些,因为总是有一个潜在的可能性可以直接使系统挂掉。

我们可以运行一个名为 linux-exploit-suggester 的工具来分析主机系统并识别缺失的补丁和漏洞。一旦识别出漏洞,该工具还将向你提供可用 PoC 漏洞的链接。

Linux 提权 - 图2

现在,我们要利用什么呢?这就是经验和实践真正发挥作用的地方。在我的实验中,我将配置大量不同的 Linux 版本,以验证这些漏洞攻击不会使底层系统崩溃。在这个场景中,我最喜欢的一个漏洞是 DirtyCOW。

DirtyCOW 的工作原理是“在Linux内核的内存子系统处理写访问时只读私有映射 COW 情况中断的方式中发现了竞争条件。非特权本地用户可以使用此缺陷获取对其他只读内存映射的写访问权限,从而增加他们在系统上的权限。”[https://dirtycow.ninja/]

简而言之,此漏洞允许攻击者通过内核漏洞从非特权用户转到 root 权限。这是我们能想到的的最佳权限提升的方法!但有一个问题是它会导致一些内核崩溃,所以我们必须确保在正确的 Linux 内核上使用正确的版本。

在 Ubuntu 上测试 DirtyCOW (ubuntu 14.04.1 LTS 3.13.0-32-generic x86_64):

  • 下载 DirtyCOW payload
  • 编译 DirtyCOW payload
    • gcc -Wall -o dirtycow-mem dirtycow-mem.c -ldl -lpthread
  • 运行 DirtyCOW 以访问系统
    • ./dirtycow-mem
  • 关闭定期写回以使漏洞稳定
    • echo 0 > /proc/sys/vm/dirty_writeback_centisecs
  • Try reading the shadow file
    • cat /etc/shadow