Всем привет! Вижу что тема не освещалась, поэтому позволю себе затронуть её: повышение привилегий на linux-хосте через SUID-биты.
Итак, начнём с того, что же такое SUID-биты. :alien:
SUID-бит или Set User ID бит - это специальный бит прав в Unix-подобных системах, который позволяет пользователю запускать исполняемый файл с правами владельца этого файла. Это полезно для программ, которым для выполнения требуются права администратора, но которые должны запускаться обычными пользователями.
В моём случае я буду использовать неправильно настроенный бинарный файл редактора nano с SUID-битом, чтобы обойти механизм безопасности, получить оболочку sh с правами владельца nano (обычно root), и затем бессрочно закрепить за собой права, суперпользователя, изменив /etc/sudoers файл.
chmod u+s /bin/nano позволит нам получить желаемый SUID-бит на nano, но выполнение этой команды для пользователя является грубой ошибкой и нарушением безопасности системы. Никакие текстовые редакторы не должны иметь SUID-бит. :alien:
Первый этап - получение shell-оболочки через выполнение команд в самом текстовом редакторе.
Запускаем /bin/nano и процесс уже работает с правами корневого пользователя, после чего нажимаем сочетания клавиш для достижения данного результата: ^R^X - это сочетание клавиш в nano является комбинацией вставки содержимого файла и его выполнения.
reset; sh 1>0& 2>&$ :alien:
reset здесь очищает терминал, sh вызывает оболочку, первый дескриптор перенаправляет команды на стандартный вывод, второй - на вывод ошибок (stdout и stderr)
Это нужно чтобы оболочка sh унаследовала ваш текущий терминал для ввода и вывода.
Как итог вы получаете дочерний процесс sh унаследованный от root, следовательно эта оболочка имеет привилегии root.
Второй этап - альтернативный способ через вызов
/bin/nano -s /bin/sh :alien:
^T :alien:
Снова получаем root-shell. :ghost:
Третий этап - закрепление прав через изменение файла /etc/sudoers
nano /etc/sudoers :alien:
user ALL=( ALL) NOPASSWORD: ALL :alien:
Это означает:
user - ваш пользователь
ALL= - на любом хосте
(ALL) - может запускать команды от имени любого пользователя
NOPASSWD: - без запроса пароля
ALL - любые команды
После сохранения файла sudoers выполняем команду
sudo su
И получаем привилегии. :ghost:
Итак, начнём с того, что же такое SUID-биты. :alien:
SUID-бит или Set User ID бит - это специальный бит прав в Unix-подобных системах, который позволяет пользователю запускать исполняемый файл с правами владельца этого файла. Это полезно для программ, которым для выполнения требуются права администратора, но которые должны запускаться обычными пользователями.
В моём случае я буду использовать неправильно настроенный бинарный файл редактора nano с SUID-битом, чтобы обойти механизм безопасности, получить оболочку sh с правами владельца nano (обычно root), и затем бессрочно закрепить за собой права, суперпользователя, изменив /etc/sudoers файл.
chmod u+s /bin/nano позволит нам получить желаемый SUID-бит на nano, но выполнение этой команды для пользователя является грубой ошибкой и нарушением безопасности системы. Никакие текстовые редакторы не должны иметь SUID-бит. :alien:
Первый этап - получение shell-оболочки через выполнение команд в самом текстовом редакторе.
Запускаем /bin/nano и процесс уже работает с правами корневого пользователя, после чего нажимаем сочетания клавиш для достижения данного результата: ^R^X - это сочетание клавиш в nano является комбинацией вставки содержимого файла и его выполнения.
reset; sh 1>0& 2>&$ :alien:
reset здесь очищает терминал, sh вызывает оболочку, первый дескриптор перенаправляет команды на стандартный вывод, второй - на вывод ошибок (stdout и stderr)
Это нужно чтобы оболочка sh унаследовала ваш текущий терминал для ввода и вывода.
Как итог вы получаете дочерний процесс sh унаследованный от root, следовательно эта оболочка имеет привилегии root.
Второй этап - альтернативный способ через вызов
/bin/nano -s /bin/sh :alien:
^T :alien:
Снова получаем root-shell. :ghost:
Третий этап - закрепление прав через изменение файла /etc/sudoers
nano /etc/sudoers :alien:
user ALL=( ALL) NOPASSWORD: ALL :alien:
Это означает:
user - ваш пользователь
ALL= - на любом хосте
(ALL) - может запускать команды от имени любого пользователя
NOPASSWD: - без запроса пароля
ALL - любые команды
После сохранения файла sudoers выполняем команду
sudo su
И получаем привилегии. :ghost:
👍48
🔥7
👏12
💯11
LIMB