#2 Файловая система: Выбираемся из chroot - Docker
HTML-код
- Опубликовано: 5 авг 2020
- Опубликовано на Patreon 16 июля 2020 года
Видео создано благодаря подписчикам проекта на нашем Patreon.
Хотите получать контент на 3 месяца раньше остальных? Присоединяйтесь! / javascriptninja
*Краткое содержание видео + временные метки*
Доступ к root fs из-под chroot. Демонстрация pivot_root. Псевдофайлы в /proc/. Анонс namespaces в следующем видео. Ни слова про docker.
00:14 - Можно ли "убежать" из chroot?
(Может ли процесс, запущенный посредством chroot получить доступ к "настоящему" корню файловой системы?)
03:12 - Программка "эксплойт" на языке C, которая переходит в "настоящий root": листинг кода + объяснение.
Эксплойт выполняет следующее:
Получает права суперпользователя.
Сохраняет файловый дескриптор текущей директории.
Выполняет chroot в созданную подпапку.
Переходит (fchdir) обратно в "старый chroot directory", таким образом "выходя" из контекста chroot созданной подпапки.
Выполняет chdir(".."), пока не перейдет в "настоящий корень". Операционка уже не запрещает.
Выполняет chroot в "настоящем корне".
Вызывает shell.
05:54 - Компиляция и демонстрация "эксплойта"
06:48 - Как с этим бороться?
07:25 - команда pivot_root
(меняет рут + монтирует "старый рут" в указанную папку)
_В результате выполнения команд придется убить старый дистрибутив убунты в wsl_
08:44 - указание папки как mountpoint с помощью команды mount --bind
11:42 - монтирование /proc (внутри pivot_root)
(чтобы "починить" системные утилиты).
13:05 - остановка wsl контейнера и неудачная попытка подключится к нему заново
13:45 - краткая демонстрация содержимого /proc
uptime, параметры с которыми было загружено ядро,
14:04 - демо того, как linux представляет разные атрибуты процессов Linux в виде псевдофайлов в /proc/${pid}
где $pid - айдишник процесса (колонка PID из аутпута ps aux)
14:04 - просмотр текущей директории процесса
ls /proc/${pid}/cwd
14:45 - просмотр команды, которая запустила процесс
cat /proc/${pid}/cmdline
15:09 - просмотр корневой директории процесса
ls /proc/${pid}/root/
15:19 - просмотр параметров процесса init (PID=1)
Демонстрация того, что через /proc/1/root/ можно получить доступ к "настоящему руту"
15:37 - Выводы:
можно "убежать" из chroot, если есть права superuser-а или доступ к /proc/
chroot всё еще позволяет
взаимодействовать с другими процессами
потреблять сколько угодно ресурсов (cpu, memory, storage, etc)
как угодно использовать сеть
16:33 - как pivot_root позволяет изменить root directory init-процесса (с pid=1)
Все понятно, снято отлично, информация донесена полностью! Спасибо! Однозначно лайк!
Очень круто! Ждём: "Как выбраться за пределы виртуальной машины браузера"
Спасибо за реально годные туториалы
Спасибо, это интересно, приятно и познавательно смотреть. Лайк, подписка 100%
чувак, это самое четкое обьяснение!
Спасибо. Весьма познавательно
Ничего не понял, нууу ооооочень интересно!
Вы лучше расскажите где непонятно
@@JavaScriptNinja просто не настолько круто умею линукс, могу установить софт, погрепать логи, нагуглить нужную команду. Cмысл я понял что через подмену рута, подтасовку ссылок на директории можно получить доступ к файловой системе, но сам это без пошаговой инструкции не повторю, наверно это видео все же больше для админов, а не для разработчиков
Для себя поставил галочку, что через такую штуку можно провести атаку ;)
круто, не все админы даже про такие магии знают.
Самое понятное видео в интернете
Ого, класс 🤩
Лайк не глядя!
👍
пиво - труд
И 42, потому что 42, как легко догадаться®
чем ты юзаешь для реверса строки в терминале?
42 и вообще)
/proc - вроде произносится как проЦ, а не проК, так-как сокращение от process.
нихуя не понял, но очень интересно
Всё это работает только при условии что есть root?
Вовсе нет :)
@@JavaScriptNinja почему тогда в видео всё делаешь только под рутом? Подозрительно, обманываешь наверно...
@@user-uo7nv8hc4e попробуйте ;) вопрос в том, у кого есть права на операцию chroot,.к примеру. А дальше вообще я про это рассказываю
@@JavaScriptNinja на нормальном сервере chroot может только root так что вопрос закрыт
@@user-uo7nv8hc4e вы дальше посмотрите про unshare ;) следующие выпуски