Capture the Flag, CTF, Mr. Robot CTF

#1 Mr-Robot: 1 CTF Walkthrough. Часть 1.

На vulnhab-е нашел интересную виртуальную машину, которая называется «Mr-Robot:1». Как Вы уже догадались из названия, она основана по мотивам одноименного сериала «Мистер Робот», по первому сезону.

mr.robot 1 walkthrough

Автор машины так и пишет об этом: «Based on show Mr. Robot».

Суть заключается в том, что нужно найти три флага, получив доступ к машине с привилегиями.

Файл машины лежит с раcширением «.ova», что предполагает установку на виртуальную машину. Я буду использовать VirtualBox.

Скачать можно по этой ссылке: https://www.vulnhub.com/entry/mr-robot-1,151/

Весит не много, всего 704MB, и есть проверка контрольной суммы MD5 и SHA1.

Скачаем эту машину и сверим контрольные  суммы:

 сверим контрольные  суммы

Как видим, все хорошо. Можно устанавливать ее на VirtualBox.

Это делается в два клика по файлу «.ova»:

устанавливаем машину

Запускаем машину и видим начальное окно для ввода логина и пароля. Разумеется, логин и пароль я не знаю, и это является одной из задач, но нужно шагать по-порядку.

Для начала узнаем ip-адрес этой машины. Для удобства работы я переключу настройки сети данной машины на «Сеть NAT»:

Для начала узнаем ip-адрес этой машины. Для удобства работы я переключу настройки сети данной машины на «Сеть NAT»

Так я могу зацепиться за локальный ip-адрес внутри своей сети.

Машина для исследования у меня будет Kali Linux. Проверю свой ip, с помощью команды «ifconfig»:

Проверю свой ip, с помощью команды «ifconfig»

Он выглядит как: 10.0.2.5. Воспользуемся инструментом Nmap, с опциями «-A» и «-Pn» и диапазон сканируемых адресов укажу как «10.0.2.*». Опция «-A» нужна для вывода информации по версии и операционной системе. Опция «-Pn» означает сканирование всех хостов в сети. Диапазон указал довольно узкий, чтобы быстро просканировать сеть, где последний октет выделил знаком звездочка, что значит сканировать все значения:

В итоге нашелся ip-адрес с открытыми портами: 80 и 443 сервера Apache

В итоге нашелся ip-адрес с открытыми портами: 80 и 443 сервера Apache:

В итоге нашелся ip-адрес с открытыми портами: 80 и 443 сервера Apache

Операционная система: Linux 3.10, и исходя из параметров, при установке я заметил, что базируется на Ubuntu, а также присутствует движок Wordpress. Разработчик видимо заведомо оставил эту информацию для внимательных.

Если есть открытый порт 80, значит можно открыть в браузере. Идем в мозиллу и открываем ip: 10.0.2.6:

Если есть открытый порт 80, значит можно открыть в браузере. Идем в мозиллу и открываем ip: 10.0.2.6

Получаем анимированный интерфейс, с 6-ю командами. Откроем исходный код страницы, чтобы осмотреться:

Получаем анимированный интерфейс, с 6-ю командами. Откроем исходный код страницы, чтобы осмотреться

Ничего необычного, разве что параметр «USER_IP» указан, но это было бы слишком просто. Все равно перейдем по этому адресу:

Ничего необычного, разве что параметр «USER_IP» указан, но это было бы слишком просто. Все равно перейдем по этому адресу

Никакой информации к сожалению.

На сайте при беглом осмотре можно найти 6 страниц:

http://10.0.2.6/prepare

http://10.0.2.6/fsociety

http://10.0.2.6/inform

http://10.0.2.6/question

http://10.0.2.6/wakeup

http://10.0.2.6/join

В них нет ничего интересного, и они являются отсылками к сериалу.

Предлагаю просканировать сайт с помощью утилиты «uniscan». Просмотрим его опции:

Предлагаю просканировать сайт с помощью утилиты «uniscan». Просмотрим его опции

Типичным сканированием будет являться опция «-u», в дополнении с опциями «-qweds» (их я выделил для наглядности):

Типичным сканированием будет являться опция «-u», в дополнении с опциями «-qweds» (их я выделил для наглядности)

Самое интересное то, что он нашел файлы на этом веб-сайте:

Самое интересное то, что он нашел файлы на этом веб-сайте

Я их прочекал и нашел интересную зацепку в файле «robots.txt». Перейдем по этому адресу:

Я их прочекал и нашел интересную зацепку в файле «robots.txt». Перейдем по этому адресу

Исходя из этой информации для роботов, с сервера можно скачать и просмотреть два файла: «fsocity.dic» и «key-1-of-3.txt».

Я создам новую директорию «mr_robot» на Рабочем столе и скачаю два файла:

Я создам новую директорию «mr_robot» на Рабочем столе и скачаю два файла

Первый скачанный файл с именем «key-1-of-3.txt» представляет собой первый ключ:

Первый скачанный файл с именем «key-1-of-3.txt» представляет собой первый ключ

Второй файл с именем «fsocity.dic», представляет собой словарь паролей:

Второй файл с именем «fsocity.dic», представляет собой словарь паролей

И это не случайно, и является подсказкой того, что нужно что-то взламывать. Просто так его попросту не было бы.

Как я говорил ранее, в начале установки я заметил название в параметрах машины «wordpress».

Посмотрим результаты сканирования «uniscan», и там я нашел кое-что интересное, а именно директории:

Посмотрим результаты сканирования «uniscan», и там я нашел кое-что интересное, а именно директории

Прочекав их все, я пришел к выводу, что практически все страницы делают редирект на одну страницу, с адресом: http://10.0.2.6/wp-login.php

Это страница авторизации сайта на движке Wordpress:

Это страница авторизации сайта на движке Wordpress

При вводе имени «admin», появляется предупреждение о том, что это неправильное имя:

При вводе имени «admin», появляется предупреждение о том, что это неправильное имя

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

Так как в строке url при вводе имени и пароля, не отображаются данные, значит они отправляются методом POST.

Запустим BurpSuite и сконнектим его с браузером:

Запустим BurpSuite и сконнектим его с браузером
Запустим BurpSuite и сконнектим его с браузером

Введем произвольные значения имени и пароля, например «test» и «123».

Переходим в BurpSuite, и нас интересуют параметры, которые передаются методом POST:

Переходим в BurpSuite, и нас интересуют параметры, которые передаются методом POST

Они нужны для того, чтобы мы воспользовались инструментом для брутфорса, который называется «Hydra».

Команда будет выглядеть следующим образом:

hydra -V -L fsocity.dic -p 123 10.0.2.6 http-post-form ‘/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=Invalid username’

Подробное описание этого инструмента можете найти в справке «hydra -h».

Опция «-p» — это произвольный пароль. Далее идет ip-адрес веб-сайта. Указывается страница авторизации:  wp-login.php. Параметры, которые идут в записи, мы взяли из BurpSuite, но вместо имени и пароля прописали ^USER^ и ^PASS^, а также wp-submit. Смотрите более внимательнее в Burpsuite:

параметры burp suite

Прописываем в терминале эту команду и запускаем:

Прописываем в терминале эту команду и запускаем

И инструмент успешно определил имя пользователя:

И инструмент успешно определил имя пользователя

Отлично. Выключаем BurpSuite, он нам пока не нужен. Слово «elliot» сработало:

Слово «elliot» сработало

Для взлома пароля мы вновь будем использовать инструмент «Hydra», но перебор затянется на достаточно долгий промежуток времени, так как словарь насчитывает более 800 000 слов.

Команда будет выглядеть как: «hydra -V -l elliot -P fsocity.dic 10.0.2.6 http-post-form ‘/wp-login.php:log=^elliot^&pwd=^PASS^&wp-submit=Log+In:F=Invalid username’». Как видите изменилось три параметра : опция «-l со значением elliot», опция «-P» — перебор всех паролей и параметр «log=^elliot^»:

перебор пароля с помощью hydra

Убил много времени, но с помощью «Hydra» не получилось взломать пароль. :((

Нужно более подробнее рассматривать опции, но я не буду ограничиваться только этим инструментом, так как существует сканер уязвимостей Wordpress, который называется «WPScan». Для взлома пароля нужна команда: «wpscan —url 10.0.2.6 —wp-content-dir /wp-login.php —passwords /root/Desktop/mr_robot/fsocity.dic -U elliot»:

wpscan

Все параметры интуитивно понятны, и их можно просмотреть в справке «wpscan —hh».

На взлом пароля ушло 36 минут и 58 секунд.

Вот, собственно, сам отчет:

отчет wpscan

Пароль успешно подошел, и я вошел в админку:

Пароль успешно подошел, и я вошел в админку

На этом первая часть закончена. Хорошего дня.