CTF LPE Взлом Обучение

LPE для самых маленьких. Прокачай свои права. Поднятие привелегий в *nix системе

LPE для самых маленьких. Прокачай свои права. Поднятие привелегий в *nix системе

Что это?

LPE – Local Privilege Escalation, дословно с английского переводится как “Локальная эскалация привилегий”, но слово “эскалация” не всем понятно и звучит как то не по-русски, поэтому его обычно заменяют на более понятное “повышение”, получается “Локальное повышение привилегий”. Звучит круто? Так что же это?

Попросту, это возможность поднятие привелегий различными способами для доступа к тем ресурсам системы, которые тебе не доступны. Естественно, это подразумевает, что у тебя уже должен быть доступ к системе. Например ты получил SSH-доступ пользователя и хочешь получить root-a. Процесс получение рут-доступа и будет являться LPE. Cтоит отметить, что любое LPE связано с взаимодействием с системой или приложениями, запущенными в ней.

LPE – это процесс повышение своих прав и возможностей в системе, осуществляемый непосредственно в самой системе и при взаимодействии с системой, как пользователь.

Зачем это нужно?

Повышение привилегий – один из этапов эксплуатации. Так как зачастую мы после взлома можем получить только непривилегированный доступ с ограниченным функционалом, а для полного захвата машины, её протроянивания и прочего, нужен полный доступ.

Зачастую получая веб-шелл на сайте, ты будешь работать от прав, например, www-data. Это крайне ограниченный пользователь и нужно “прокачивать” свои права, для этого и есть LPE.

Какие способы есть?

LPE можно осуществлять различными образами:

В большинстве случаев пентестеры пользуются рядом популярных методов, связанных с особенностями настройки той или иной ОС. Редко, но бывает, используются эксплоиты (уже готовые). И в самых крайних случаях, когда ломают что-то реально серьёзное, создаются 0-day эксплоиты под систему.

Уязвимости приложений, работающих в системы, как и уязвимости ОС используются примерно следующим образом:

Популярные методы LPE можно найти в интернете, есть достаточно обширный  список по данной ссылке (для Linux) – https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/

Пример номер раз.

Сегодняшний пример будет взят с сайта root-me.org  из категории “App-Script”.

Прямая ссылка – https://www.root-me.org/en/Challenges/App-Script/ELF32-System-1

В описании задания приведён исходный код, состоящий из одной команды.

Также нам даётся подключение по SSH  к системе, на которой мы получим исполняемый файл с этим кодом, эксплуатирую который мы должны прочитать файл с паролем.

Учётные данные для подключения.

Подключаемся любым удобным способом и смотрим, что дано.

Так, теперь надо понять, что мы можем сделать, чтобы прочитать файл. Для начала ещё раз посмотрим код.

Итак, нам надо, чтобы ls сработал как cat. Для этого мы можем попробовать заменить ls,  но у нас это не выйдет из-за отсутствия прав. Поэтому мы можем добавить свой  ls во временной папке и добавить её в переменную окружения  PATH ранее остальных (а главное, ранее  /bin). Что это нам даст?

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

Таким образом мы можем создать свою папку в временной директории, поместить там cat переименовав его в  ls и добавить путь до нашей папки раньше чем остальные пути.

Проделаем все эти манипуляции.

Вот и всё, такой простой способ.

Пример номер 2.

Этот пример также взят с сайта root-me.org из категории “App-Script”.

Прямая ссылка – https://www.root-me.org/en/Challenges/App-Script/sudo-weak-configuration

Посмотрим описание задания.

Судя по названию и описанию нам надо использовать плохо сконфигурированный sudo. Посмотрим какой доступ нам даётся.

SSH, ничего необычного. Подключимся и посмотрим, что есть на машине.

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

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

Мы просто передали в значок звёздочки выражение “../ch1cracked/.passwd”, которое в итоге преобразуется так:

В итоге получаем верный пароль. Вот такой простой обход плохо сконфигурированного sudo.

Пример номер 3.

Как ты догадался, и этот пример будет взят с сайта root-me.org из категории “App-Script” и на этом примере мы будем убегать из тюрьмы Python. Да-да.

Прямая ссылка – https://www.root-me.org/en/Challenges/App-Script/Python-PyJail-1

Посмотрим описание задания.

Есть такой вид заданий, который называется python-jail. Смсыл таких заданий заключается в том, что вы попадаете внутрь интерактивной оболочки интерпретатора и вам нужно “выбраться” из неё (обычно просто прочитать флаг). В основном задания нацелены на знание внутренностей функций (т.к. каждая функция является объектом, она имеет свойства и методы).

В нашем задании сказано получить пароль и выйти из jail’a. Посмотрим, что нам предлагают.

При подключении нам сказано, что всё находится в функции exit, и аргумент равен флагу.

Попробуем получить количество аргументов данной функции.

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

Видим флаг и сразу попробуем передать его в функцию в качетсве аргумента.

Заблокировано. Это странно, но связано скорее всего с запретом кавычек внутри интерпретатора. Нам надо передать другим образом, например предварительно сохранив значение.

Всё прошло, мы получили реальный флаг (пароль) с помощью которого можно сдать задание.

Если есть вопросы по тому, как были надены необходимые свойста для функции, то вы можете просто открыть python, создать функции и написать dir(<function-name>).

Подробнее про данные свойства функции можно прочесть в документации.

Такие задания позволяют лучше понять внутренее устройство Python’a и развивают логическое мышление и поиск обходных путей.

Сегодня мы ознакомились с простейшими вариантами поднятия привелегий в *nix системах на примере с root-me.org. Если вы хотите и дальше прокачать свои навыки в прокачивании прав, то рекомендуем вам именно этот ресурс.

Удачи.

Очень злой админ
Очень злой админ Автор статьи

Админ сайта. Публикует интересные статьи с других ресурсов, либо их переводы. Если есть настроение, бывает, что пишет и что-то своё.

Leave a Reply

Your email address will not be published. Required fields are marked *