Всем здравствуйте! В данной статье будем разбираться с машинкой Pickle Rick с сайта Try Hack Me. В ходе решения разберем достаточно популярные и часто используемые инструменты, которые точно пригодятся начинающему CTFеру, пентестеру и просто интересующемуся безопасностью. На повестке у нас nmap для сканирования сети, gobuster для брутфорса директорий, reverse shell, linpeas и другие сопутствующие инструменты. Не пугайтесь страшных неизвестных слов, сейчас будем разбираться.

Подключаемся к машинке
Для начала запускаем машинку на сайте Try Hack Me, а также нашу собственную, на которой мы и будем решать задание, в моем случае это Kali Linux.

Для подключения к машинке понадобится утилита openvpn и специальный файл конфигурации с расширением .ovpn, который вы должны скачать с сайта Try Hack Me. Инструкция по подключению есть там же, поэтому не буду дублировать её здесь.

Подключаемся к машинке и проверяем соединение.


Сбор данных
Первым делом воспользуемся сканером сети nmap, который поможет узнать данные об открытых портах, сервисах, которые на них работают, версии этих сервисов и многое другое. Также можно получить данные и об операционной системе устройства.
Опции -sC и -sV используются для подключения скриптов для сканирования (в данном случае дефолтные) и для определения версий сервисов. Утилита nmap содержит огромное количество опций и возможностей их использования, поэтому с данным инструментов точно нужно быть знакомым и уметь им пользоваться.

Сканирование показало, что на исследуемом устройстве работают ssh и http. Наличие shh пока ничего нам не дает, а вот веб сервер проверить мы можем: зайдем браузер и перейдем по адресу машинки.

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

Находим в комментарии зацепку – имя пользователя, которое в дальнейшем может нам пригодиться.
Перебор директорий
Что же дальше? Пока мы знаем только о главной странице сайта, а есть ли еще страницы на этом домене, которые мы можем просмотреть и найти там какую-либо информацию? Здесь на помощь приходит gobuster. Это мощный инструмент, который может использоваться для перебора директорий на сайте. На самом деле имеется множество инструментов, схожих по функционалу, например, dirb, dirbuster и другие. Ознакомьтесь с несколькими и используйте в дальнейшем понравившийся.
Синтаксис команды следующий: -u для указания URL, -w для указания словаря перебора данных, -x для расширений файлов/директорий которые мы ищем и -t для указания потоков работы.
В данном репозитории можете найти различные словари для разных целей - https://github.com/gmelodie/awesome-wordlists

Получаем в результате несколько директорий, проверим их.

В robots.txt лежит фраза, которую Рик часто использовал, и она здесь явно не просто так, поэтому записываем ее и идем дальше.
Далее проверим portal.php, который переносит нас на страницу логина. Вспоминаем, что у нас было имя пользователя, которое мы нашли в исходном коде страницы, а также та самая фраза в robots.txt, которая может оказаться паролем. Проверим нашу догадку.

Отлично, мы внутри и перед нами текстовое поле, в котором мы может выполнять команды.
Командная строка
Попробуем выполнить несколько известных команд для изучения файловой системы.

Обнаруживаем секретный ингредиент. Кажется, это именно то, что нам нужно. Попробуем вывести содержим��е и…


Кажется, привычные команды для вывода содержимого файла запрещены.

Но явно не все, поэтому запоминаем команды, записываем ингредиент и двигаемся дальше. Помним, что среди содержимого был также и файл с зацепкой clue.txt.

Проверяем домашнюю директорию.

Проверяем папку пользователя rick и находим еще один ингредиент.

С помощью все той же команды less выводим.

Reverse shell
Итак, мы имеем уже два ингредиента, остался последний, но где же его искать. Кажется, опять тупик и нужно что-то придумывать. В таких случаях остается лишь предлагать различные догадки, которые использовались раньше на практике и проверять, куда же они приведут. Именно поэтому поначалу все это может казаться сложным, но со временем вы познакомитесь с различными инструментами и стратегиями, а также ситуациями, в которых их следует применять, и решение подобных задач уже не будет ставить вас в тупик.
Здесь же я решил использовать reverse shell, который поможет получить доступ к удаленной системе с моего собственного устройства. Для этого воспользуемся языком программирования Python, и для начала проверим, имеется ли он на удаленном устройстве.

Все работает, поэтому может переходить к установлению reverse shell. Перейдем на сайт https://www.revshells.com/, который поможет нам сгенерировать нужный код, а также покажет команду, которая откроет прослушивание на нашем устройства. Для этого нужно указать ip адрес и порт.

Ip адрес нашего устройства можем посмотреть командой ip a.

С помощью netcat запускаем прослушивание на порту, в моем случае 9999.

Теперь возвращаемся к сайту и генерируем код на Python.

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

Здесь у нас, кстати, ограничений по командам уже нет.

Сканирование на уязвимости с linpeas
В общем случае на данном этапе следует просканировать систему на наличие уязвимостей. Для этого есть отличный инструмент linpeas. Сначала устанавливаем его на нашу машинку, а затем выполним удаленно с помощью python веб сервера и утилиты curl.
Поднимаем на нашем устройстве python сервер в директории, где находится файлик со скриптом.

Затем на удаленной машинке через curl выполняем скрипт с помощью следующей команды.

Анализируем содержимое вывода. Обнаруживаем, что наш пользователь может выполнять любые команды от имени суперпользователя без пароля. А это значит, что мы просто может открыть консоль от имени root.

Конечно, это мы могли и узнать без linpeas, воспользовавшись sudo -l. Однако вариант с linpeas более универсален. На практике же следует действовать по ситуации и проверять догадки от более простых к более сложным.

Теперь открываем конcоль от имени root и проверяем его домашнюю директорию, где и находим последний ингредиент.

Сдаем флаги и снимаем маску анонимуса.

