Содержание статьи
root благодаря кривой конфигурации и недостаткам системы.warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
NFS (Network File System) — распределенная файловая система, с помощью которой ты можешь монтировать удаленные папки на свою Linux-машину и работать с ними, как с локальными.
Работая с файловой системой через NFS, ты не увидишь разницы из‑за особенностей архитектуры. Как пользователь ты всегда взаимодействуешь с абстракцией ядра — VFS (Virtual File System). Она включает в себя и реально существующие файловые системы, и другие абстракции вроде NFS.
NFS формирует RPC-вызов с номером программы и номером процедуры. Упаковкой, аутентификацией и доставкой занимается Sun RPC. С помощью XDR он сериализует данные и отправляет их по TCP (ранее использовали UDP). Сервер проходит те же этапы, формирует ответ и возвращает его тем же маршрутом.

Неправильно сконфигурированный сервер и слабые механизмы NFS позволяют атакующему повысить привилегии на сервере. Обрати внимание, что я разбираю именно повышение привилегий с помощью NFS. Мы будем предполагать, что у тебя уже есть доступ к таргету и возможность выполнять на нем минимальный набор команд.
Setuid/setgid
По умолчанию в NFS используется опция понижения прав root_squash. В правильно настроенной NFS любой примонтировавшийся пользователь — это nobody. Иногда админы отключают эту защиту опцией no_root_squash, чтобы упростить работу с файловой системой. Опция no_root_squash стирает грань между локальным root, который подключился к серверу, и root самого сервера. У обоих пользователей UID равен 0.
Биты setuid и setgid указывают Linux, что бинарник должен запускаться не от имени пользователя, а с правами владельца файла или группы‑владельца. Полная схема атаки:
- Проверить экспорты сервера и найти экспорт с
no_root_squash. - Примонтировать папку и скопировать в нее бинарник с шеллом.
- Назначить владельцем
root. - Установить
setuid. - От имени обычного пользователя запустить шелл.

Для теста я буду использовать Metasploitable 2. Эта машина — одна большая уязвимость. Экспорты для NFS сделаны с no_root_squash, и мы легко реализуем повышение привилегий. Убедись в этом, выполнив на уязвимой машине cat /. Креды: msfadmin/.

Чтобы Kali Linux, запущенная в VirtualBox, увидела Metasploitable, я установил для обеих систем сетевые интерфейсы в режим «Виртуальный адаптер хоста».
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
