Skip to main content

Эксплуатация ошибок администрирования ОС Linux

Механизмы безопасности и разграничения прав доступа

/etc/passwd  — текстовый файл, содержащий список учетных записей пользователей. 

image.png

В него можно добавить своего пользователя с отличным от root именем, но с тем же UID: 

hacker:125mypa$$:0:0:hacker:/root:/bin/bash

Встроенные механизмы передачи и получения прав доступа

Специальные права: SUID

SUID bit позволяет выполнение программы с правами хозяина файлов. Основная идея — дать пользователям как можно меньше прав, при этом достаточных для решения поставленных задач. Механизм используется в большинстве UNIX и UNIX-подобных операционных системах. Особенности механизма SUID в стандартных конфигурациях Linux:

  • Работают с полномочиями пользователя root.
  • Используются для выполнения безопасных привилегированных операций, например, смены пароля или отправки ICMP-запросов.
  • Используются для штатной смены идентификаторов пользователя: su, sudo, pkexec
  • Требования к качеству кода этих программ довольно высокие, так как ошибки в них могут привести к нарушению безопасности всей системы.
  • Программы учитывают идентификатор запустившего их пользователя и различные файлы конфигурации.

Команда sudo

Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле /etc/sudoers. Для
редактирования файла редактор visudo. Язык написания и примеры использования подробно изложены в man sudoers

Команда su

Для использования su необходимо ввести соответствующий пароль (если только команду не вызывает пользователь root).
Если введён правильный пароль, su создает новый процесс командного интерпретатора с такими же реальными и эффективными идентификаторами пользователя и группы, а также списком дополнительных групп, что и у указанного пользователя.

Ошибки, допускаемые в конфигурации механизмов безопасности

Хранение «отладочных» файлов с suid-битом Поиск таких файлов: 

find / -perm /4000

Предоставление доступа к команде sudo на файлы, дающие возможность выполнить произвольный код. Изучение предоставленных возможностей sudo: 

sudo -l

Ошибки администрирования и ввода паролей при применении команды sudo

Зачастую администраторы ошибаются: в спешке используют команду sudo, и, не выполнив команду sudo, продолжают вводить пароль, остающийся в истории команд. Изучение истории команд пользователя: 

cat ~/.bash_history

Ошибки Cron

Если строка задания написана в Cron некорректно, появляется возможность выполнить произвольный код через перезапись файлов и добавление исполняемых файлов. Посмотреть список задач в Cron: 

cat /etc/crontab

Инструменты автоматизации

Для ускорения сбора информации о системе можно использовать следующие проекты:

Автоматизация подбора эксплойтов ядра:

Мониторинг процессов всей системы из непривилегированного состояния:

Дополнительные материалы

  • Все известные способы
  • Машины для отработки навыков

Методики privesc:

Задачи на privesc на внешних ресурсах: