Обход ограничений терминала

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Сегодня операционную систему Linux можно обнаружить везде: от домашних пользовательских систем до серверов и IoT устройств. Зачастую использование терминала в данных системах — очень рискованное мероприятие, поскольку неверный ввод команды в нем может привести к непоправимым последствиям. Во избежание таких ситуаций можно либо пользоваться эмулятором терминала, либо настроить ограничения на вызов команд. В этой статье мы рассмотрим популярные инструменты для выставления ограничений на использование терминала и способы их обхода.

Как уменьшить количество команд?

Для любой задачи, которую выполняет операционная система, всегда есть набор софта для ее решения. Если администратор системы предпочел ограничить количество доступных команд для пользовательского ввода, то ему доступны следующие виды ПО:

  1. Софт, который позволяет задать стандартный захардкоженный набор ограничений;

  2. Софт, который позволяет вручную задать набор ограничений на ввод команд в зависимости от условий, при которых они были запущены.

К первой категории можно отнести следующие шеллы:

rbash

rzsh

rksh

Ко второй категории относятся:

lshell

rssh

Список подобных инструментов не ограничен приведенными: на просторах сети можно найти большое количество таких тулз. В статье будем рассматривать именно те, которые перечислены выше. Все действия и практику, которая будет описана далее, с незначительными изменениями можно будет портировать и на другие инструменты этих классов.

Попробуем протестировать приложения для ограничения доступных команд. В качестве базовой системы возьмем Kali Linux на базе ОС Debian 5.9. Первым инструментом для исследования возьмем rbash, найти базовую информацию касательно его работы можно вот здесь. Запускается rbash достаточно просто:

  1.  Создадим директорию для тестирования и перейдем в нее: mkdir test; cd test

  2.  Запустим команду rbash в директории test. Для нее будут применены все стандартные ограничения, описанные в документации, в том числе и на выполнение команды cd. Проверим:

    Действительно, ограничения стали применяться. Выйти из этого режима можно будет только с закрытием шелла. 

Попробуем использовать другое приложение — rzsh. Его настройка такая же, как и у предыдущего подопытного. Любопытный факт — запускать rzsh или устанавливать его дополнительно не нужно, если есть zsh: достаточно указать при запуске флаг ‘-r’. Список ограничений можно найти здесь.

Запустим ограничение на той же директории, которую создали в прошлом эксперименте и так же постараемся выйти в другую директорию:

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

Ограничения нельзя обойти: ввод данных, которые позволили бы открыть другую директорию или файл, оканчивается провалом. Но что если попробовать обойти выставленные ограничения?

Какие существуют методы обхода ограничений?

При использовании описанных выше приложений или их аналогов можно задаться резонным вопросом: насколько безопасно так ограничивать терминал? Может ли злоумышленник обойти выставленные ограничения? Для ответа на эти вопросы можно попробовать применить стандартные этапы исследования систем или приложений на безопасность, то есть провести самостоятельный пентест («мысли, как преступник»):

  1.  Сбор информации (Enumiration)

  2.  Создание сценариев атаки

  3.  Реализация атаки

Первый этап самый важный, он включает в себя специальные исследования, которые позволяют ответить на вопросы:

  1. Какой именно шелл используется для настройки ограничений?

  2. Какие команды поддерживает шелл?

  3. Какое наименование имеет операционная система?

  4. Какие известные уязвимости есть для приложения или отдельной его части?

Список вопросов может быть изменен или дополнен по желанию. Попробуем применить этот подход по отношению к инструменту rbash. Предположим, что имеем дело с некой системой, для которой мы не обладаем сведениями о наличии каких-либо ограничений в терминале.

1. Сбор информации. Здесь попытаемся выяснить, какой именно используется вариант настройки ограничений ввода команд.

В нашем случае сам терминал при попытке ввода команды рассказал, что для ограничений запущен rbash

Давайте определимся, что именно мы хотим сделать из этой ограниченной среды. К примеру, нам нужно попасть в директорию “Desktop”.

2. Сценарий атаки. Как следует поступить для выполнения команды перехода cd? Любая система или механизм сдается, если попытаться протестировать функции, объединяющие несколько подсистем или отдельных блоков ОС, поскольку не всегда возможно программно обеспечить корректное взаимодействие между ними. В нашем случае выполнение команды cd — это запуск процесса в операционной системе. Попробуем это сделать за счет дополнительных утилит. Даже при наличии ограничений от rbash у юзера есть возможность пользоваться безобидными приложениями, например vim:

3. Реализация атаки. Для проведения атаки можно попытаться использовать функционал vim, который может передавать команды в ОС: !.

В открытом файле vim вводим последовательность команд: :!bash.

В итоге получаем доступ к терминалу без ограничений:

Таким образом, для обхода ограничений необходимо было знать команды vim и суметь запустить его из ограниченной командной оболочки. Остальные приложения можно протестировать аналогичным способом. Для проведения тестов рекомендуем ознакомиться с вот этим проектом: он поможет в построении дополнительных сценариев атак.

Вывод

Использования любого инструмента для настройки ограничений в операционной системе — это всегда риск пропустить какие-то пограничные условия, позволяющие обойти установленные рамки. Для защиты от этого стоит досконально изучить приложение, которое должно быть использовано для предоставления функций пользователю, и внести изменения, которые будут учитывать большинство сценариев использования системы.


Статья подготовлена экспертом OTUS - Александром Колесниковым в преддверии старта курса «Administrator Linux. Professional».

Приглашаем всех желающих записаться на бесплатный demo-урок «Методы и возможности отладки скриптов оболочки Bash».

Источник: https://habr.com/ru/company/otus/blog/536756/


Интересные статьи

Интересные статьи

Я давно знаком с Битрикс24, ещё дольше с 1С-Битрикс и, конечно же, неоднократно имел дела с интернет-магазинами которые работают на нём. Да, конечно это дорого, долго, местами неуклюже...
В этом кратком обзоре я хотел бы поделиться своим опытом, как отключить проверку SSL для тестовых сайтов, иначе говоря, как сделать HTTPS сайты доступными для тестирования на локальных ...
Принято считать, что персонализация в интернете это магия, которая создается сотнями серверов на основе БигДата и сложного семантического анализа контента.
В мире дикой природы охотники и добыча постоянно играют в догонялки, как буквально, так и фигурально. Стоит охотнику развить новые навыки путем эволюции либо другими методами, как добыча подс...
Лимит Есть на LinkedIn такое ограничение — Лимит коммерческого использования. Крайне вероятно, что вы, как и я до недавнего времени, никогда не сталкивались и не слышали о нем. Суть лими...