Введение
В качестве введения я расскажу кратко о хак квесте Ratazana CTF. Его организовали специалисты из ЦИС (Центр Информационной Безопасности), представительство которого располагается в г. Бишкек Киргизия. Это первый отлично организованный хак квест. Он был прост и интересен и скорее всего служил так называемой отправной точкой (так сказать организаторы хотели прощупать уровень участников).
Коротко о квесте
По легенде квеста компания VideoCorp столкнулась с утечкой исходных кодов ее продукта, в результате чего EvilCorp выпустила очень похожу версию ПО, раньше чем компания VideoCorp, что привело к убыткам компании и потере хороших клиентов. Нужно было найти крота и собрать доказательства. На весь квест отводилось 7 дней. В квесте 8 миссий. И так приступим!
#1 Начало
Тут все просто, нужна лишь внимательность к деталям. Как обычно это бывает, но некоторая категория пользователей, выбирает себе пароли совпадающие с логином, чем мы и воспользуемся в первом случае. Идем на вкладку «Новости» и видим там логин пользователя manager01, запоминаем его, он нам пригодится. Далее ищем как можно попасть на форму логина админки.
Банально /admin/ и мы можем теперь воспользоваться логином менеджера, опубликовавшего новости.
Вводим логин manager01 и соответственно предполагаем, что пароль такой же!
И о чудо! Мы в админке! И в качестве награды получаем первый флаг. Теперь мы можем продолжить со второй миссией!
#2 Персонал
И так во второй миссии, нам нужно получить информацию о персонале!
И так мы в админке и готовы получить информацию о сотрудниках. Но нас ждет разочарование в меню, есть пункт «Список сотрудников», но к сожалению воспользоваться им, мы не можем, так как не хватает прав, мы не админ. Но внимание привлекает меню «Сменить пароль». Жмем на него и видим свой логин и пароль. В URL интересный параметр, который тоже привлекает внимание и это user_id=3. При виде формы смены пароля, очень хочется посмотреть, что же будет выведено, если к примеру поменять значение, банально на 1.
Меняем значение 3 на 1 и жмем Enter, после чего видим, что вместо логина manager01 отобразился логин admin и поле с паролем тоже похоже заполнено значением из БД для админа. Но визуально посмотреть пароль мы не можем, так как отображаются точки.
Но мы можем посмотреть HTML элемента. И что же мы видим, а мы видим пароль админа! О да сегодня нам очень везет.
Остается выйти из под учетной записи менеджера и войти под админом.
Заходим под админом и проходим на форму списка сотрудников. И в качестве награды получаем второй флаг!
#3 Изучай
В этой миссии нужно изучить список сотрудников и сделать выводы, куда же дальше двигаться.
В общем перед нами список сотрудников с их e-mail и ф.и.о, а также датами приема на работу, но вот вопрос, а что можно взять из этого полезного для нас. С первого взгляда ничего полезного, но взглянем на список почт сотрудников. Почти все находятся на разных доменах (проверил, ни один не существовал на момент прохождения миссии), кроме сотрудника под логином dev4
Так вот получается видим мы, что почта этого пользователя находится на текущем домене. Ага скажете вы! Вот куда нужно копать. И это верное направление. Банально предполагаем, что если добавить mail перед наименованием домена videocorp.net.kg, то мы попадем на mail сервис и его веб интерфейс.
Но нам нужно сначала узнать пароль dev4 так как мы предполагаем, что к почте может подойти его логин и пароль.
Далее идем на мэйл сервиса mail.videocorp.net.kg
Вводим почту dev4 в качестве логина dev4@videocorp.net.kg и в качестве пароля, то что взяли из HTML страницы смены пароля, жмем Enter и успешно входим в почтовый ящик dev4
#4 Бэкап
В этой миссии нам как бы намекают, что нам нужно будет поработать с каким то бэкапом и добыть из него нужные нам данные.
В общем мы уже в почтовом ящике dev4 и тут в письме видим, что есть какой то архивчик под названием backup. Качаем его сразу же и пытаемся разархивировать и тут сюрприз нас ждет, архив защищен паролем.
Первое, что приходит в голову — это конечно сбрутить пароль используя fcrackzip. Хм, так и сделаем. Идем в виртуалку с Kali Linux, так как там есть весь необходимый нам инструментарий и запускаем fcrackzip на архиве с бэкапом (на самом деле все банальней, иногда стоит проверить на возможность установки в качестве пароля, части названия файла, тогда брут не понадобится, но я пошел по длинному пути).
Так как пароль начинается на букву b как потом выяснилось, то брутфорс пароля не был затяжным, после пятиминутного ожидания, пароль стал известен! И в качестве пароля использовалась часть имени файла, а конкретно «backup»
Запускал я fcrackzip со следующими параметрами fcrackzip -v -b -u путь/до/файла_архива.zip
При помощи пароля получаем доступ к содержимому архива!
Далее смотрим содержимое и получаем в качестве награды четвертый флаг
#5 Вперед, к серверу!
В этой миссии как бы намекают на то, что у нас есть исходники сайта и мы можем почерпнуть информацию из них для того, чтобы попасть внутрь сайта. Хм, приступим к изучению исходников.
В общем смотрим содержимое архива и анализируем то что видим. А видим мы там несколько папок, к примеру config.php очень интересен, там ведь пароли для доступа к БД, но нам сейчас не это нужно. В мозгу генерируется мысль, видимо идет речь о заливке шелла, так как более менее логичный способ проникновения на сайт это какая нибудь форма для заливки файлов. Будем искать файл, отвечающий за этот функционал. И не долго нам пришлось копаться как в глаза бросился файл upload.php
Посмотрим его код! Честное слово, этот файл написал дьявол и положил в эту директорию.
В общем видим, что тут нет никаких проверок на состав файла и нет никаких сомнений в том, что это верный путь. При заливке файла меняется только его имя на MD5 хеш, но это не проблема, название файла нам выводится. При этом оригинальное расширение (к примеру, php) остается без изменения. И так! Пришло время залить нам шелл.
В качестве шелла я выбрал простой и удобный шелл, код которого лежит на гитхаб. Этот шелл не палится антивирусами, что мне очень понравилось. Вот ссылка до репозитория с этим шеллом github.com/b374k/b374k
Теперь мы знаем как добраться до upload.php на сайте. Вводим videocorp.net.kg/admin/handlers/upload.php и вот нашему взору отображается страница для безнаказанной и наглой загрузки файла нашего шелла.
Заливаем наш шелл! И да чуть не забыл, из исходников upload.php мы знаем папку, в которую будет залит шелл, эта папка находится в корне сайта, т.е. доступ до шелла будет следующим videocorp.net.kg/uploads/a987eqwdiasuyq86we78q6e78qe6.php
Заливаем шелл, входим в его интерфейс и нашему вниманию сразу же бросается файл пятого флага!
#6 Он твой! Но их несколько…
В этой миссии нам намекают, что мы скоро сможем найти зацепки и узнать кто же крот. И нам предлагают изучить сервер на предмет интересных данных, которые позволят нам идти дальше.
В общем у нас есть доступ к содержимому сервера посредством шелла. Теперь нужно проявить внимательность и отыскать нужные нам данные. Чтож походим по папкам и после недолгого просмотра исходников сайта и родительских папок видим в папке backup интересный файл под названием dev4.tar.gz.
Качаем его и начинаем смотреть, что же в нем такого есть. Шел предоставляет классный диалог с экшенами и мы пользуемся меню для скачивания файла.
Далее разархивируем его и смотрим содержимое.
Из всего набора файлов очень интересен файл .bash_history и папка .ssh. В .bash_history конечно же мы можем посмотреть историю выполняемых команд, по которым видно, что была генерация ключа ssh и потом этот ключ был добавлен authorized_keys, значит при помощи данного ключа мы можем получить доступ по ssh
В общем берем приватный и публичные ключи ssh и создаем .config внутри папки .ssh
Еще при прохождении первого задания я при помощи nmap узнал, что есть два открытых порта 80 и 22, так что теперь дело за малым
После создания конфига, пробуем соединиться посредством ssh при помощи команды ssh videocorp
И о да! У нас получилось подсоединиться к серверу посредством ssh
И так мы на сервере, но пока что флага нет.
Но зато есть снова .bash_history который нам снова поможет. Открываем его и смотрим.
Из содержимого видим, что был установлен ssh ключ на машину с IP 192.168.0.1. Ага, что это нам дает, а дает это нам следующее, нужно выяснить какой IP адрес у машины, на которую мы попали. После набора команды ifconfig видим, что мы на машине с IP 192.168.0.2
Значит мы свободно можем зайти на 0.1 машину при помощи команды ssh dev4@192.168.0.1
Таким образом мы заходим на 0.1 машину. Осматриваемся и в качестве награды получаем шестой флаг.
#7 Личное?
В этой миссии нам предстоит покопаться в грязном белье и личных данных пользователя dev4
И так мы находимся на рабочей машине разработчика dev4 и что же интересного мы видим в папке, конечно же нас привлекает папка .Skype в которой наверняка можно найти что-то интересное. Поглядим что там, а там main.db текущего пользователя под ником peleninv
Мы знаем, что это база данных sqlite, так значит мы можем открыть ее и прочитать данные. Сделаем это!
Для того чтобы не вдаваться сильно в подробности, тут нужно знать структуру таблиц БД скайпа. Интересующая нас таблица под названием Messages, содержит данные о сообщениях между пользователями и нужная нам колонка с содержимым сообщения — это body_xml
Выполним запрос select body_xml from messages; и вот что будет представлено нашему взору
Внимательно просмотрев сообщения, понимаешь что dev4 передал какие то исходники и получил за это деньги.
Тут же в качестве вознаграждения получаем седьмой флаг. И нам становится понятно кто же оказывается крот — это конечно же dev4!
Собеседника dev4 мы вычисляем из таблицы accounts получая его данные.
Ну и переписка с никами, из той же таблицы мы можем добавить еще одно поле author в запрос и получить более удобочитаемую переписку
#8 Неужели???
И так в этой миссии нам нужно раздобыть исходники и удостовериться, что это исходники продукта фирмы videocorp.
Ну как говорится у нас пока нет доказательств и нам нужно скачать исходники с dropbox, по ссылке из переписки и удостовериться, что это те исходники, утечка которых принесла убытки фирме videocorp
И так качаем исходники и конечно же сталкиваемся снова с проблемой, отсутствия пароля, так как архив снова защищен паролем. Из переписки ясно, что пароль был отослан на почту заказчику. Но из профиля в скайпе заказчика нет реальной почты, так что тут снова брут или же смекалка.
Скачав архив, пытаемся разархивировать его с паролем идентичным имени архива, т.е. используем в качестве пароля слово source
В итоге мы получаем в качестве награды восьмой флаг и убеждаемся, что это исходники продукта videocorp. Мы нашли крота и у нас есть неопровержимые доказательства.
Заключительная часть
Вот так легко и непринужденно был пройден этот хак квест. После ввода восьмого флага в форму миссии и отправки, нас поздравляют с успешным завершением миссии. Мы молодцы!
В целом конкурс мне понравился, он легкий и интересный. Это первый хак квест в формате CTF проведенный у нас в Киргизии. Огромное спасибо организаторам! Надеюсь что скоро будет еще квесты более сложные и интересные!
Всем огромное спасибо за внимание! Надеюсь было интересно.
ссылка на оригинал статьи http://habrahabr.ru/post/258065/
Добавить комментарий