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

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

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

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

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

Категории

Все категории
Loading categories
pack2theroot-lab — CTF-стиль Docker-лаборатория для CVE-2026-41651 (Pack2TheRoot): локальное повышение привилегий через permissive-polkit в PackageKit | Kitploit
Инструменты/GitHubGitHub/dinosn/pack2theroot-lab
Оборонительные ИнструментыПовышение привилегийБезопасность контейнеровАнализ уязвимостейЭксплуатацияCTFТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingЛаборатории и Практика
GitHubdinosn/pack2theroot-lab

pack2theroot-lab

814 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →

CTF-стиль Docker-лаборатория для CVE-2026-41651 (Pack2TheRoot): локальное повышение привилегий через permissive-polkit в PackageKit

Репозиторий
Поделиться

Pack2TheRoot Lab — CVE-2026-41651

Лаборатория локального повышения привилегий в стиле CTF на базе Docker, построенная вокруг Pack2TheRoot advisory (CVE-2026-41651) — 12-летней уязвимости в демоне PackageKit, раскрытой Red Team компании Deutsche Telekom 22 апреля 2026 года.

Лаборатория включает три контейнера: CTF-задачу с разрешающим polkit, ужесточённую цель для сравнения и полную репродукцию TOCTOU-эксплойта, которая собирает уязвимый PackageKit из исходников и запускает реальный эксплойт первопричины CVE-2026-41651.


1. Что вы получаете

КонтейнерПортРольРезультат эксплойта
pack2theroot-vulntcp/2222 (ssh)PackageKit ≤ 1.3.4 + разрешающее polkit-правилоRoot через поддельный RPM
pack2theroot-patchedtcp/2223 (ssh)То же, но polkit ужесточёнЭксплойт не срабатывает
pack2theroot-exploit—Уязвимый PackageKit 1.3.4, собранный из исходниковRoot через TOCTOU-гонку D-Bus

Плюс:

  • Брифинг задачи для игрока (docs/CHALLENGE.md)
  • Постепенные подсказки (docs/HINTS.md)
  • Полное прохождение и флаг (docs/SOLUTION.md)
  • Визуальные схемы потока эксплойта (docs/diagrams/)
  • Инструменты защитника: проверка версии, мониторинг IOC, сравнение бок о бок, промежуточный скрипт смягчения polkit.

2. Сводка по уязвимости

ПолеЗначение
CVECVE-2026-41651
НазваниеPack2TheRoot
КлассЛокальное повышение привилегий (TOCTOU / CWE-367)
КомпонентДемон PackageKit (pk-transaction.c)
Уязвимый диапазон>= 1.0.2 и <= 1.3.4 (12 лет релизов)
Исправлено вPackageKit 1.3.5 (коммит 76cfb675, выпущен 2026-04-22)
CVSS 3.18.8 (HIGH) — AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
ПредусловияЛокальная непривилегированная оболочка на хосте с запущенным PackageKit
ОбнаружительDeutsche Telekom Security GmbH — Red Team

Первопричина — три связанные ошибки в pk-transaction.c

ОшибкаМестоЭффект
ОШИБКА 1InstallFiles() (~строка 4036)Безусловно перезаписывает cached_transaction_flags и cached_full_paths — нет проверки состояния
ОШИБКА 2pk_transaction_set_state() (~строки 876–881)Молча отбрасывает обратные переходы состояния вместо ошибки — флаги уже отравлены
ОШИБКА 3pk_transaction_run() (~строки 2273–2277)Читает cached_transaction_flags в момент диспетчеризации, а не авторизации
ОбходФлаг SIMULATE (~строки 2893–2900)PK_TRANSACTION_FLAG_SIMULATE (0x4) полностью обходит polkit

Эксплойт отправляет два асинхронных D-Bus-вызова InstallFiles() в рамках одной транзакции: сначала с SIMULATE (обходит polkit, ставит в очередь GLib idle-колбэк), затем сразу с NONE + вредоносным пакетом (перезаписывает кэшированные флаги/пути до срабатывания idle). Приоритетный порядок GLib гарантирует, что оба D-Bus-сообщения будут обработаны до idle-колбэка — это делает атаку детерминированной, а не гонкой по времени.

Известный IOC (из advisory):

root@kitploit:~
journalctl --no-pager -u packagekit | grep -iE 'emitted_finished|pk_transaction_finished_emit|pk-transaction\.c:514'

3. Быстрый старт

root@kitploit:~
git clone https://github.com/dinosn/pack2theroot-lab.git
cd pack2theroot-lab
docker compose build
docker compose up -d

CTF-задача (путь с разрешающим polkit)

root@kitploit:~
ssh labuser@localhost -p 2222     # пароль: labuser
# затем работайте по docs/CHALLENGE.md

Флаг находится в /root/flag.txt (режим 0400 root:root). Формат: PACK2THEROOT{...}

Репродукция TOCTOU-эксплойта (фактическая первопричина CVE)

root@kitploit:~
# Сборка и запуск — авто-режим немедленно выполняет эксплойт:
docker compose run --rm exploit

# Или ручной режим:
docker compose run --rm --entrypoint /entrypoint.sh exploit
# Затем внутри контейнера:
su - victim -c /exploit/cve-2026-41651

Эксплойт собирает два .deb-пакета на C (без внешних инструментов), отправляет D-Bus-гонку из двух вызовов и создаёт SUID bash по пути /tmp/.suid_bash. См. docs/SOLUTION.md для полного технического разбора.

Завершение работы:

root@kitploit:~
docker compose down -v

4. Структура репозитория

root@kitploit:~
pack2theroot-lab/
├── README.md
├── docker-compose.yml
├── docs/
│   ├── CHALLENGE.md         # брифинг игрока
│   ├── HINTS.md             # постепенные подсказки (оба пути)
│   ├── SOLUTION.md          # полное прохождение + флаг
│   ├── references.md        # первоисточники и вторичные источники
│   ├── threat-model.md      # допущения атакующего/защитника
│   └── diagrams/            # SVG-схемы потока эксплойта
│       ├── 01-docker-build.svg
│       ├── 02-container-startup.svg
│       ├── 03-exploit-execution.svg
│       ├── 04-dbus-race-sequence.svg
│       ├── 05-attack-overview.svg
│       └── 06-auto-mode-full-run.svg
├── exploit/
│   ├── Dockerfile           # собирает уязвимый PackageKit 1.3.4 из исходников
│   ├── entrypoint.sh        # запускает dbus + polkitd + packagekitd
│   ├── Makefile
│   └── src/
│       └── cve-2026-41651.c # TOCTOU-эксплойт (публичный PoC)
├── vulnerable/
│   ├── Dockerfile
│   ├── entrypoint.sh
│   └── policy/
│       └── 10-pack2theroot-lab-misconfig.rules   # CTF-задача
├── patched/
│   ├── Dockerfile
│   ├── entrypoint.sh
│   ├── local/                # поместите сюда бэкпорт RPM 1.3.5 (необязательно)
│   └── policy/
│       └── 10-pack2theroot-lab-hardened.rules    # исправление
└── scripts/
    ├── exploit-check.sh         # проверяет версию, polkit, D-Bus, IOC
    ├── check-version.sh         # вердикт VULNERABLE vs PATCHED
    ├── check-preconditions.sh   # проверка pkcon / polkit / D-Bus
    ├── monitor-ioc.sh           # отслеживает журнал на предмет IOC из advisory
    ├── compare-env.sh           # сравнение обоих контейнеров
    └── apply-polkit-mitigation.sh  # промежуточное смягчение для незапатченных хостов

5. Визуальные схемы

Каталог docs/diagrams/ содержит SVG-схемы, показывающие поток эксплойта. Откройте их в любом браузере:

СхемаОписание
01-docker-build.svgДвухэтапная Docker-сборка — компиляция уязвимого PackageKit
02-container-startup.svgЗапуск контейнера — старт dbus, polkitd, packagekitd
03-exploit-execution.svgПошаговый вывод эксплойта с аннотированными фазами
04-dbus-race-sequence.svgДиаграмма последовательности D-Bus — как ОШИБКИ 1/2/3 связываются с приоритетом GLib
05-attack-overview.svgАтака на высоком уровне: атакующий против системы с таймлайном
06-auto-mode-full-run.svgПолный терминал режима --auto — от запуска контейнера до root-оболочки

6. Прохождение CTF-задачи

См. docs/CHALLENGE.md. Кратко:

  1. Подключитесь по SSH как labuser (пароль labuser).
  2. Разведайте polkit-правила. Одно из них слишком разрешающее.
  3. Соберите вредоносный RPM (rpm-build, rpmdevtools установлены).
  4. Установите его с помощью pkcon install-local --allow-untrusted.
  5. Скриптлет %post выполняется от root. Прочитайте /root/flag.txt.

Застряли? В docs/HINTS.md есть всё более явные подсказки. Открывайте docs/SOLUTION.md только после того, как решите задачу или действительно нуждаетесь в разборе.

7. Запуск инструментов защитника

Внутри любого контейнера, от любого пользователя:

root@kitploit:~
/opt/lab/check-version.sh         # вердикт VULNERABLE или PATCHED
/opt/lab/check-preconditions.sh   # самопроверка подверженности
/opt/lab/exploit-check.sh         # проверка версии + polkit + D-Bus + IOC
/opt/lab/monitor-ioc.sh           # отслеживание журнала на предмет IOC

С хоста, бок о бок:

root@kitploit:~
./scripts/compare-env.sh

Примените промежуточное смягчение polkit к уязвимому контейнеру:

root@kitploit:~
docker exec pack2theroot-vuln /opt/lab/apply-polkit-mitigation.sh
# Затем повторите эксплойт — теперь он должен не сработать.

8. Запатченный образ — статус бэкпорта

Образ patched честно обрабатывает статус версии PackageKit:

  • Он устанавливает ту версию PackageKit, которую в настоящее время поставляет дистрибутив.
  • Он выводит понятный баннер (/etc/pack2theroot-banner), указывающий, является ли установленная версия реальным патчем или заглушкой дистрибутива.
  • Независимо от версии, он поставляет ужесточённое polkit-правило, блокирующее путь установки без аутентификации.

Чтобы собрать версионно-полный запатченный образ после публикации бэкпорта вашим дистрибутивом, поместите RPM-файл(ы) в patched/local/ и пересоберите:

root@kitploit:~
docker compose build --build-arg USE_LOCAL_RPM=1 patched

9. Безопасность и ответственное использование

  • Не размещайте ни один из образов контейнеров на общем Docker-хосте с недоверенными пользователями.
  • Контейнер эксплойта требует --privileged для запуска полного стека dbus/polkitd/packagekitd. Запускайте его только в изолированных средах.
  • Пароль SSH (labuser) намеренно слабый. Никогда не используйте его повторно.
  • Только для авторизованных оборонительных исследований, обучения и тестирования на проникновение.

10. Ссылки

Первоисточники:

  • Advisory Telekom Security — https://github.security.telekom.com/2026/04/pack2theroot-linux-local-privilege-escalation.html
  • NVD — CVE-2026-41651: https://nvd.nist.gov/vuln/detail/CVE-2026-41651
  • Исправление в апстриме — PackageKit 1.3.5: https://github.com/PackageKit/PackageKit/releases/tag/v1.3.5
  • Коммит исправления — 76cfb675: https://github.com/PackageKit/PackageKit/commit/76cfb675fb31acc3ad5595d4380bfff56d2a8697
  • Публичный PoC — Vozec: https://github.com/Vozec/CVE-2026-41651

См. docs/references.md для вторичного освещения и трекеров дистрибутивов.

11. Лицензия

MIT — см. LICENSE.

Скачать инструмент