Как я проходил первый хак квест CTF Ratazana

46f04cd8b90145f4a590746fafa6d3b1.pngВведениеВ качестве введения я расскажу кратко о хак квесте Ratazana CTF. Его организовали специалисты из ЦИС (Центр Информационной Безопасности), представительство которого располагается в г. Бишкек Киргизия. Это первый отлично организованный хак квест. Он был прост и интересен и скорее всего служил так называемой отправной точкой (так сказать организаторы хотели прощупать уровень участников).Коротко о квесте По легенде квеста компания VideoCorp столкнулась с утечкой исходных кодов ее продукта, в результате чего EvilCorp выпустила очень похожу версию ПО, раньше чем компания VideoCorp, что привело к убыткам компании и потере хороших клиентов. Нужно было найти крота и собрать доказательства. На весь квест отводилось 7 дней. В квесте 8 миссий. И так приступим!#1 Начало Первая миссия f07a642447fa409ebfec331d700a653f.png Тут все просто, нужна лишь внимательность к деталям. Как обычно это бывает, но некоторая категория пользователей, выбирает себе пароли совпадающие с логином, чем мы и воспользуемся в первом случае. Идем на вкладку «Новости» и видим там логин пользователя manager01, запоминаем его, он нам пригодится. Далее ищем как можно попасть на форму логина админки.

Страница Новостей на сайте 6b10ce8545ba4bc9b4d4e8d7d2fed6cc.png Банально /admin/ и мы можем теперь воспользоваться логином менеджера, опубликовавшего новости.

Вводим логин manager01 и соответственно предполагаем, что пароль такой же!

Форма логина в админку 7cc57c82e5214767ad6d176d69a7aa19.png И о чудо! Мы в админке! И в качестве награды получаем первый флаг. Теперь мы можем продолжить со второй миссией!

Получаем первый флаг 9fdbd394441a4933aba7d3d565ff518c.png #2 Персонал И так во второй миссии, нам нужно получить информацию о персонале!

Вторая миссия e7b390d2f5084008af11cb413139f24e.png И так мы в админке и готовы получить информацию о сотрудниках. Но нас ждет разочарование в меню, есть пункт «Список сотрудников», но к сожалению воспользоваться им, мы не можем, так как не хватает прав, мы не админ. Но внимание привлекает меню «Сменить пароль». Жмем на него и видим свой логин и пароль. В URL интересный параметр, который тоже привлекает внимание и это user_id=3. При виде формы смены пароля, очень хочется посмотреть, что же будет выведено, если к примеру поменять значение, банально на 1.

Форма смены пароля 258a73c36d9c4ce0ab5e2b49413648ac.png Меняем значение 3 на 1 и жмем Enter, после чего видим, что вместо логина manager01 отобразился логин admin и поле с паролем тоже похоже заполнено значением из БД для админа. Но визуально посмотреть пароль мы не можем, так как отображаются точки.Но мы можем посмотреть HTML элемента. И что же мы видим, а мы видим пароль админа! О да сегодня нам очень везет.Остается выйти из под учетной записи менеджера и войти под админом.

Процесс получения пароля админа 62fba38c97604ae1abc20c7cc4395dd9.png Заходим под админом и проходим на форму списка сотрудников. И в качестве награды получаем второй флаг!

Вход под админом e77e585aaeae4746bf1d478772571c50.png Форма списка сотрудников f9a8af0571ac4d949b53fbd979f0f64d.png #3 Изучай В этой миссии нужно изучить список сотрудников и сделать выводы, куда же дальше двигаться.

Третья миссия e7d515d39ad342dabb5cb4b01faf3402.png В общем перед нами список сотрудников с их e-mail и ф.и.о, а также датами приема на работу, но вот вопрос, а что можно взять из этого полезного для нас. С первого взгляда ничего полезного, но взглянем на список почт сотрудников. Почти все находятся на разных доменах (проверил, ни один не существовал на момент прохождения миссии), кроме сотрудника под логином dev4

Список сотрудников и интересный для на dev4 d108f994375b45f480856a12d9b714ab.png Так вот получается видим мы, что почта этого пользователя находится на текущем домене. Ага скажете вы! Вот куда нужно копать. И это верное направление. Банально предполагаем, что если добавить mail перед наименованием домена videocorp.net.kg, то мы попадем на mail сервис и его веб интерфейс.

Но нам нужно сначала узнать пароль dev4 так как мы предполагаем, что к почте может подойти его логин и пароль.

Получение пароля dev4 по аналогии с admin 64a4e772c5f949c0bb5204b6aa4b4574.png Далее идем на мэйл сервиса mail.videocorp.net.kg

Форма логина mail сервиса cf795c11389c46d2b0ed68bdc98e9df2.png Вводим почту dev4 в качестве логина dev4@videocorp.net.kg и в качестве пароля, то что взяли из HTML страницы смены пароля, жмем Enter и успешно входим в почтовый ящик dev4

Интерфейс почтового ящика и третий флаг f6361cf183574280a274c8c5735c1185.png #4 Бэкап В этой миссии нам как бы намекают, что нам нужно будет поработать с каким то бэкапом и добыть из него нужные нам данные.

Четвертая миссия 2e35a704dfad48a0b7ba4a679c8e3579.png В общем мы уже в почтовом ящике dev4 и тут в письме видим, что есть какой то архивчик под названием backup. Качаем его сразу же и пытаемся разархивировать и тут сюрприз нас ждет, архив защищен паролем.

Бэкап в письме 3ee7cfda2f5e457aa8e3b20945bb263f.png Первое, что приходит в голову — это конечно сбрутить пароль используя fcrackzip. Хм, так и сделаем. Идем в виртуалку с Kali Linux, так как там есть весь необходимый нам инструментарий и запускаем fcrackzip на архиве с бэкапом (на самом деле все банальней, иногда стоит проверить на возможность установки в качестве пароля, части названия файла, тогда брут не понадобится, но я пошел по длинному пути).

Брутфорс пароля на архив при помощи fcrackzip 9375004d6a0d42ffa1589ec0e9d88fb4.png Так как пароль начинается на букву b как потом выяснилось, то брутфорс пароля не был затяжным, после пятиминутного ожидания, пароль стал известен! И в качестве пароля использовалась часть имени файла, а конкретно «backup»

Запускал я fcrackzip со следующими параметрами fcrackzip -v -b -u путь/до/файла_архива.zip

При помощи пароля получаем доступ к содержимому архива!

Вводим пароль и разархивируем архив 459f2362bb684745a94e94d8183ee27e.png Далее смотрим содержимое и получаем в качестве награды четвертый флаг

Содержимое архива с флагом bcc9fef64a524d94a732c7a054314e43.png Четвертый флаг 751af2d325a74b75abcb8f6279b0a0ec.png #5 Вперед, к серверу! В этой миссии как бы намекают на то, что у нас есть исходники сайта и мы можем почерпнуть информацию из них для того, чтобы попасть внутрь сайта. Хм, приступим к изучению исходников.

Пятая миссия d126c03b10674cab9e660e881f06428a.png В общем смотрим содержимое архива и анализируем то что видим. А видим мы там несколько папок, к примеру config.php очень интересен, там ведь пароли для доступа к БД, но нам сейчас не это нужно. В мозгу генерируется мысль, видимо идет речь о заливке шелла, так как более менее логичный способ проникновения на сайт это какая нибудь форма для заливки файлов. Будем искать файл, отвечающий за этот функционал. И не долго нам пришлось копаться как в глаза бросился файл upload.php

Содержимое папки admin/handlers 23f08cfac0024b6da4be40612c3f8aaf.png Посмотрим его код! Честное слово, этот файл написал дьявол и положил в эту директорию.

Содержимое файла upload.php 28557a55aef1447981ba9be9bb47e00b.png В общем видим, что тут нет никаких проверок на состав файла и нет никаких сомнений в том, что это верный путь. При заливке файла меняется только его имя на MD5 хеш, но это не проблема, название файла нам выводится. При этом оригинальное расширение (к примеру, php) остается без изменения. И так! Пришло время залить нам шелл.

В качестве шелла я выбрал простой и удобный шелл, код которого лежит на гитхаб. Этот шелл не палится антивирусами, что мне очень понравилось. Вот ссылка до репозитория с этим шеллом github.com/b374k/b374k

Теперь мы знаем как добраться до upload.php на сайте. Вводим videocorp.net.kg/admin/handlers/upload.php и вот нашему взору отображается страница для безнаказанной и наглой загрузки файла нашего шелла.

Форма загрузки шелла 97bd27d19fe3482884f421eabe50be5f.png Заливаем наш шелл! И да чуть не забыл, из исходников upload.php мы знаем папку, в которую будет залит шелл, эта папка находится в корне сайта, т.е. доступ до шелла будет следующим videocorp.net.kg/uploads/a987eqwdiasuyq86we78q6e78qe6.php

Заливаем шелл, входим в его интерфейс и нашему вниманию сразу же бросается файл пятого флага!

Файл пятого флага, просмотр через залитый шелл 1620163b7d5941508cae5dd180f34857.png #6 Он твой! Но их несколько… В этой миссии нам намекают, что мы скоро сможем найти зацепки и узнать кто же крот. И нам предлагают изучить сервер на предмет интересных данных, которые позволят нам идти дальше.

Шестая миссия 14ca916ba0c147889b23217b171e6947.png В общем у нас есть доступ к содержимому сервера посредством шелла. Теперь нужно проявить внимательность и отыскать нужные нам данные. Чтож походим по папкам и после недолгого просмотра исходников сайта и родительских папок видим в папке backup интересный файл под названием dev4.tar.gz.

Расположение файла dev4.tar.gz dab6279fb1b6498f9bdc49788673c5ea.png Качаем его и начинаем смотреть, что же в нем такого есть. Шел предоставляет классный диалог с экшенами и мы пользуемся меню для скачивания файла.

Процесс скачивания архива bb7ce414aa2e4ec7939485106fa70efd.png Далее разархивируем его и смотрим содержимое.

Содержимое архива dev4.tar.gz 3ed5bbeac4874a1fbd52e265297e3a9d.png Из всего набора файлов очень интересен файл .bash_history и папка .ssh. В .bash_history конечно же мы можем посмотреть историю выполняемых команд, по которым видно, что была генерация ключа ssh и потом этот ключ был добавлен authorized_keys, значит при помощи данного ключа мы можем получить доступ по ssh

Содержимое .bash_history 2743ce7197c0422abc2b2cca5c62916e.png В общем берем приватный и публичные ключи ssh и создаем config внутри папки .ssh

Приватный и публичный ключи из архива 42fd9b18f08c4229911ba9b794919ff4.png Еще при прохождении первого задания я при помощи nmap узнал, что есть два открытых порта 80 и 22, так что теперь дело за малым

Содержимое нашего config файла в папке .ssh 0228a6123b914779a45c49db0017e94b.png После создания конфига, пробуем соединиться посредством ssh при помощи команды ssh videocorp

Вводим команду ssh с удобством 4b0e168ceace45d2bfa83d7f2035b02a.png И о да! У нас получилось подсоединиться к серверу посредством ssh

Вот такой симпатичный крысик нас приветствует da3ec25f3cf04a5291dd37972da7aa1e.png И так мы на сервере, но пока что флага нет.

Содержимое папки в которой мы находимся при входе посредством ssh eef618ac41ba45bda37f117db29988db.png Но зато есть снова .bash_history который нам снова поможет. Открываем его и смотрим.

Содержимое файла .bash_history 3e332b62b4344d4b99a122cb41712dfb.png Из содержимого видим, что был установлен ssh ключ на машину с IP 192.168.0.1. Ага, что это нам дает, а дает это нам следующее, нужно выяснить какой IP адрес у машины, на которую мы попали. После набора команды ifconfig видим, что мы на машине с IP 192.168.0.2

Вывод команды ifconfig 62f337632c4c4c1283b27c6e40215717.png Значит мы свободно можем зайти на 0.1 машину при помощи команды ssh dev4@192.168.0.1Таким образом мы заходим на 0.1 машину. Осматриваемся и в качестве награды получаем шестой флаг.

Получение шестого флага 4af7d7d3c11741c19d043c29e9728065.png Содержимое шестого флага 3e34ca9d8d884bf292a0975b011f5385.png #7 Личное? В этой миссии нам предстоит покопаться в грязном белье и личных данных пользователя dev4

Седьмая миссия 0886bcfeb1374c1faeafe4eb6b12b17e.png И так мы находимся на рабочей машине разработчика dev4 и что же интересного мы видим в папке, конечно же нас привлекает папка .Skype в которой наверняка можно найти что-то интересное. Поглядим что там, а там main.db текущего пользователя под ником peleninv

Интересующая нас папка .Skype 5c25eb6aaf724798b3d4ab6419d10ff5.png Мы знаем, что это база данных sqlite, так значит мы можем открыть ее и прочитать данные. Сделаем это!

Путь по которому лежит файл main.db 404db724294f40d581f7520a7b84b6b4.png Для того чтобы не вдаваться сильно в подробности, тут нужно знать структуру таблиц БД скайпа. Интересующая нас таблица под названием Messages, содержит данные о сообщениях между пользователями и нужная нам колонка с содержимым сообщения — это body_xml

Выполним запрос select body_xml from messages; и вот что будет представлено нашему взору

Переписка в skype 23ad680eb8284961b68114397e1ea405.png Внимательно просмотрев сообщения, понимаешь что dev4 передал какие то исходники и получил за это деньги.Тут же в качестве вознаграждения получаем седьмой флаг. И нам становится понятно кто же оказывается крот — это конечно же dev4!

Собеседника dev4 мы вычисляем из таблицы accounts получая его данные.

Данные о заказчике неких исходников f7909cb069084861a77e7ed126d685b8.png Ну и переписка с никами, из той же таблицы мы можем добавить еще одно поле author в запрос и получить более удобочитаемую переписку

Переписка с включенными никами 2a04b94e90d64a6baa4f88d084e10138.png #8 Неужели??? И так в этой миссии нам нужно раздобыть исходники и удостовериться, что это исходники продукта фирмы videocorp.

Восьмая финальная миссия 23abfe5040f2477884dd949a98ba768a.png Ну как говорится у нас пока нет доказательств и нам нужно скачать исходники с dropbox, по ссылке из переписки и удостовериться, что это те исходники, утечка которых принесла убытки фирме videocorp

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

Ссылка из переписки 1a9c44f97e27416ca0ff2385ecd9e2da.png Скачав архив, пытаемся разархивировать его с паролем идентичным имени архива, т.е. используем в качестве пароля слово source

Разархивирование архива с исходниками используя пароль source a453d8507a4e4837bd79ae6db0a8c6e1.png В итоге мы получаем в качестве награды восьмой флаг и убеждаемся, что это исходники продукта videocorp. Мы нашли крота и у нас есть неопровержимые доказательства.

Восьмой флаг fb3faf04688843bb903f1991275bb565.png Заключительная часть Вот так легко и непринужденно был пройден этот хак квест. После ввода восьмого флага в форму миссии и отправки, нас поздравляют с успешным завершением миссии. Мы молодцы!

Поздравления и хантинг 6ef3aa4e093b4ec8b03ea4e839ba5fe0.png В целом конкурс мне понравился, он легкий и интересный. Это первый хак квест в формате CTF проведенный у нас в Киргизии. Огромное спасибо организаторам! Надеюсь что скоро будет еще квесты более сложные и интересные!

Всем огромное спасибо за внимание! Надеюсь было интересно.

© Habrahabr.ru