Всем здравствуйте! В данной статье будем разбираться с машинкой 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 и проверяем его домашнюю директорию, где и находим последний ингредиент.
Сдаем флаги и снимаем маску анонимуса.
redudri
Обожаю CTF. Жалко только, что они занимают безумно много времени, и некогда их проходить.