概述
前文SUID (1)中所介绍的的方法,作为最浅显的提权手段已经广为人知,基本上只存在于入门级的实验练习环境中, 实际的生产环境中很少有其用武之地。 但通过SUID进行提权的研究从未停止过。 最新的一大发现就是于2022年1月25日公布的代号为CVE-2021-4034的安全漏洞。
CVE-2021-4034所涉及的应用程序是Polkit包中的pkexec,Polkit包的主要功能在于提供一个安全的框架来管理低权限进程与高权限进程之间的通话,pkexec则是一个允许用户以高权限身份运行其它应用的命令行工具,在缺省安装下,pkexec的属主是root用户,并且带有SUID属性。 CVE-2021-4034则提供了一个通过pkexec使普通用户提权为root用户的手段。
根据CVE-2021-4034所提供的信息,该漏洞从2009年5月开始就已经存在,由于许多Linux发布包(例如Ubuntu, Debian, Fedora, CentOS等)的缺省安装选项都包括Polkit,该漏洞的影响极大也极广。
方法
- 从以下github项目下载CVE-2021-4034的POC代码
- 在目标环境中编译并运行
test@2bf2a59c7a3c:/tmp$ id
uid=1000(test) gid=1000(test) groups=1000(test)
test@2bf2a59c7a3c:/tmp$ gcc cve-2021-4034-poc.c -o cve-2021-4034-poc
test@2bf2a59c7a3c:/tmp$ ./cve-2021-4034-poc
# id
uid=0(root) gid=0(root) groups=0(root),1000(test)
#
实战
下面的Dockerfile提供了一个CVE-2021-4034的POC试验环境