Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2021-3560-exploit — CVE-2021-3560 — эксплойт повышения привилегий Polkit через состояние гонки в accounts-daemon D-Bus | Kitploit
Инструменты/GitHubGitHub/jeanback1/cve-2021-3560-exploit
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеОбучение и ОбразованиеRed Teaming
GitHubjeanback1/cve-2021-3560-exploit

CVE-2021-3560-exploit

CVE-2021-3560 — эксплойт повышения привилегий Polkit через состояние гонки в accounts-daemon D-Bus

Репозиторий
2 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2021-3560 — Повышение привилегий в Polkit

CVE-2021-3560 — это локальная уязвимость повышения привилегий в Polkit (ранее PolicyKit) — фреймворке авторизации, используемом в Linux-окружениях рабочего стола. Локальный непривилегированный злоумышленник может использовать состояние гонки в D-Bus-интерфейсе accounts-daemon, чтобы создать привилегированного пользователя, задать ему пароль и в итоге получить доступ root.


Как это работает

Предыстория: Polkit + accounts-daemon

accounts-daemon (org.freedesktop.Accounts) — это системный D-Bus-сервис, который управляет учётными записями пользователей (создание, удаление, смена пароля и т. д.). Он предоставляет такие методы, как:

МетодДействие
CreateUserСоздаёт нового системного пользователя
SetPasswordУстанавливает пароль пользователя
DeleteUserУдаляет пользователя

Эти операции требуют авторизации. Когда поступает D-Bus-вызов, Polkit находится между вызывающей стороной и accounts-daemon:

root@kitploit:~
Caller  →  D-Bus  →  Polkit (authorization check)  →  accounts-daemon (action)

Polkit решает, есть ли у вызывающей стороны разрешение, и если да — передаёт запрос в accounts-daemon для выполнения.

Состояние гонки

Уязвимость представляет собой гонку типа TOCTOU (Time Of Check, Time Of Use). Вот ключевая идея:

  1. D-Bus-вызов метода отправляется в accounts-daemon (например, CreateUser).
  2. Polkit получает его и выполняет проверку авторизации — часто полагаясь на диалог polkit-агента, который истекает по таймауту и возвращает ответ «не авторизовано». Однако из-за ошибки обработка таймаута/ошибок в polkit неверно трактует некоторые состояния ошибки как успех либо оставляет обработку на стороне демона в частично авторизованном состоянии.
  3. Если D-Bus-вызов убить в точно нужный момент — после того как решение об авторизации принято Polkit, но до того как accounts-daemon завершит обработку, — создание пользователя проходит без надлежащей аутентификации, однако запись о пользователе оказывается неполной (например, без пароля, без домашнего каталога).
  4. Затем злоумышленник может использовать ту же гонку для вызова SetPassword для только что созданного (но не аутентифицированного) пользователя, либо само неполное состояние предоставляет повышенные привилегии.

Короче говоря: убейте запрос в нужный момент — и вы обойдёте аутентификацию.

Что делает эксплойт

Этот скрипт exploit.sh автоматизирует всю цепочку атаки:


Использование

root@kitploit:~
# Clone the repository
git clone https://github.com/Jeanback1/CVE-2021-3560.git
cd CVE-2021-3560

# Make the exploit executable
chmod +x exploit.sh

# Run it
./exploit.sh

После завершения эксплойта вы получите root-оболочку:

root@kitploit:~
whoami
# root

Пример вывода

Выполнение эксплойта


Затронутые версии

КомпонентЗатронут
polkit≤ 0.119 (без исправления)
accounts-daemon (accountsservice)Все версии, использующие уязвимый polkit

Уязвимость исправлена в polkit 0.120 и более поздних версиях.

Дистрибутивы с исправлением (неполный список):

  • Ubuntu 20.04+ (с обновлениями безопасности после июня 2021 г.)
  • Debian 11+ (с обновлениями безопасности)
  • RHEL 8+ / CentOS 8+ (с erratum)
  • Fedora 34+

Отказ от ответственности

Этот репозиторий предназначен только для образовательных целей и авторизованных исследований безопасности. Не используйте этот эксплойт на системах, которыми вы не владеете или на тестирование которых у вас нет явного разрешения. Автор не несёт ответственности за неправомерное использование.

Скачать инструмент
ШагДействие
1. Калибровка времениИспользует фиктивный вызов CreateUser("nobody") для измерения времени полного D-Bus-цикла и вычисления «окна убийства»
2. Создание пользователяОтправляет вызов CreateUser для выбранного имени пользователя, запускает его в фоне, ждёт вычисленное окно, затем убивает его — эксплуатируя гонку для создания неавторизованного пользователя
3. Установка пароляКогда пользователь существует (в неполном состоянии), отправляет вызов SetPassword с той же техникой гонки, чтобы назначить известный пароль
4. Повышение привилегийИспользует su для переключения на нового пользователя, запускает sudo (который работает, потому что пользователь был создан через обойдённый путь авторизации), копирует /bin/bash в /var/tmp/bash с SUID root и запускает root-оболочку