Я настраиваю ограниченную учетную запись для пользователя ricardo
, проблемного пользователя в моей системе. Я хочу предоставить ему право создавать каталоги sudo
, что ему иногда нужно делать. Я рассматриваю это правило в моем /etc/sudoers
файле:
ricardo ALL=(root) NOPASSWD: /bin/mkdir
Используя только это правило, может ли Рикардо преднамеренно или случайно скомпрометировать систему?
Ответы:
Я подозреваю, что такая атака сработает, когда «что-то» - это модуль ядра, который попытается загрузить после монтирования rootfs:
Также обратите внимание, что вы можете использовать другие имена, в зависимости от псевдонимов, объявленных в модуле. Я предполагаю, что он не будет загружен, пока не будет запущен depmod, что произойдет в следующий раз, когда произойдет обновление ядра, так что
mkdir
он даже не будет отображаться в журнале sudo в последнее время.В / etc есть много вещей, которые читают все файлы в каталоге, иногда рекурсивно. Хуже того, некоторые из этих каталогов по умолчанию не существуют, и единственный способ узнать о них - прочитать справочную страницу, сценарии инициализации и т. Д. Для программы, которая их использует. Некоторые, что еще хуже, являются устаревшими вещами с обратной совместимостью и могут даже не документироваться.
редактировать: подумал еще несколько каталогов, эти в
/usr/local
:/usr/local/lib/perl/5.14.2
(отличается в зависимости от версии Perl, попробуйтеperl -V
выяснить). Создайте тамFile
подкаталог и вставьтеFind.pm
в него. Теперь, когда кто-нибудь используетFile::Find
, он будет использовать версию атакующего. Аналогичным образом сделайте то же самое сGetopt::Long
. Системные утилиты часто пишутся на Perl, так что это, вероятно, дает root. (Попробуйack-grep --color -a 'use.+::' /usr/sbin | less -R
)/usr/local/include
.источник
sudo mkdir
чтобы создать новый каталог, где он может.Запустив
mkdir
от имени пользователя root, пользователь может блокировать другие процессы / пользователей от создания новых файлов и каталогов, создавая каталоги с одинаковыми именами (и / или неправильными правами) ранее.Это может иметь отношение к безопасности, особенно с файлами журналов и блокировок .
Как отметил Джорданм , максимальное количество инодов также может быть использовано, что может блокировать всю систему.
Добавив пользователя в определенные группы (или используя ACL ), вы сможете решать проблемы без предоставления каких-либо прав через
sudo
.источник
mkdir
опущу список команд, которым Рикардо разрешено использовать.for((i = 0;; i++)); do touch $i; done
будет хорошо (bashism, извините, но вы поняли идею).sudo
команды, которые рассматривает OP, могут также допускать исчерпание инодов; ОП должен знать об этом DoS-векторе.Вы должны перенаправить его в тюрьму. Или, что еще лучше, маленькой виртуальной машине, чтобы он мог падать раз в час. Все, что вам нужно сделать, это предоставить новую копию.
источник
Есть возможности из-за возможности создавать каталоги с правами записи. С
mkdir -m 777 blah
помощьюricardo
пользователя можно написать все что угодно в новый каталог. Вам понадобится процесс в системе, уже работающий от имени другого пользователя, который найдет дерево каталогов для загрузки конфигурации, сценариев или модулей. Затем пользователь может добавить свои вещи для загрузки или запуска. Первое, о чем я могу подумать, это если вы запускаете веб-сервер, который может выполнять php или cgi. Затем вы можете запускать скрипты от имени этого пользователя. Я изо всех сил , чтобы придумать пример более реального мира, особенноroot
те , но я уверен , что они собираются.ssh - пример демона, который ловит подобные сценарии. Если вы создали
.ssh
каталог для пользователя, у которого его нет, и поместили свой собственныйauthorized_hosts
файл на место.sshd
замечает, что права доступа к каталогам слишком открыты, и игнорирует открытый ключ.Вы можете определенно создавать неудобства, создавая каталоги, в которых ожидаются файлы (например, временные tmp или файлы подкачки), с которыми многие программы не справятся.
Вы можете создать множество групп, но, похоже, вы ничего с ними не делаете. Вы можете хотя бы поставить систему на колени. Убийце OOM потребовалось около 10000 cgroups на коробке с 256M для удаления sshd.
Если вы контролируете
-m
опциюmkdir
и UMASKsudo
окружения, я думаю, что это снова просто неприятность.источник