Як я проходив перший хак квест CTF Ratazana

Введення


Як введення я розповім коротко про хак квест 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

Список співробітників і цікавий для dev4

Так от виходить, бачимо ми, що пошта цього користувача знаходиться на поточному домені. Ага, скажете ви! Ось куди потрібно копати. І це вірний напрямок. Банально припускаємо, що якщо додати mail перед найменуванням домену videocorp.net.kg, то ми потрапимо на mail сервіс і його веб-інтерфейс.

Але нам потрібно спочатку дізнатися пароль dev4, так як ми припускаємо, що до пошти може підійти його логін і пароль.

Отримання пароля dev4 за аналогією з admin

Далі йдемо на мейл сервісу mail.videocorp.net.kg

Форма логіна mail сервісу

Вводимо пошту dev4 в якості логіна Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. і в якості пароля, те що взяли з HTML сторінки зміни пароля, тиснемо Enter і успішно входимо в поштову скриньку dev4

Інтерфейс поштової скриньки і третій прапор

# 4 Бекап

У цій місії нам як би натякають, що нам потрібно буде попрацювати з якимось бекапом і добути з нього потрібні нам дані.

Четверта місія

Загалом, ми вже в поштовій скриньці dev4 і тут в листі бачимо, що є якийсь архівчик під назвою backup. Качаємо його відразу ж і намагаємося розархівувати і тут сюрприз нас чекає, архів захищений паролем.

Бекап у листі

Перше, що спадає на думку - це звичайно збрутити пароль використовуючи fcrackzip. Хм, так і зробимо. Йдемо у віртуалку з Kali Linux, оскільки там є весь необхідний нам інструментарій і запускаємо fcrackzip на архіві з бекапом (насправді все банальнею, іноді варто перевірити на можливість встановлення в якості пароля, частини назви файлу, тоді брут не знадобиться, але я пішов по довгому шляху).

Брутфорс пароля на архів за допомогою fcrackzip

Оскільки пароль починається на букву b як потім з'ясувалося, то брутфорс пароля не був затяжним, після п'ятихвилинного очікування, пароль став відомий! І як пароль використовувалася частина імені файла, а конкретно «backup»

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

За допомогою пароля отримуємо доступ до вмісту архіву!

Вводимо пароль і розархівуємо архів

Далі дивимося вміст і отримуємо в якості нагороди четвертий прапор

Вміст архіву з прапором

Четвертий прапор

# 5 Вперед, до сервера!

У цій місії ніби натякають на те, що у нас є вихідці сайту і ми можемо почерпнути інформацію з них для того, щоб потрапити всередину сайту. Хм, приступимо до вивчення вихідців.

П'ята місія

Загалом, дивимося вміст архіву і аналізуємо те, що бачимо. А бачимо ми там кілька папок, наприклад config.php дуже цікавий, адже там паролі для доступу до БД, але нам зараз не це потрібно. У мозку генерується думка, мабуть, йдеться про заливку шеллу, оскільки більш менш логічний спосіб проникнення на сайт це якась форма для заливки файлів. Будемо шукати файл, що відповідає за цей функціонал. І недовго нам довелося копатися, як в очі кинувся файл upload.php

Вміст теки admin/handlers

Подивимося його код! Чесне слово, цей файл написав диявол і поклав в цю директорію.

Вміст файлу 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.

Розташування файлу dev4.tar.gz

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

Процес завантаження архіву

Далі розархівуємо його і дивимося вміст.

Вміст архіву dev4.tar.gz

З усього набору файлів дуже цікавий файл .bash_history і тека .ssh. У .bash_history, звичайно ж, ми можемо подивитися історію виконуваних команд, за якими видно, що була генерація ключа ssh і потім цей ключ був доданий authorized_keys, значить, за допомогою даного ключа ми можемо отримати доступ за ssh

Вміст .bash_history

Загалом, беремо приватний і публічні ключі ssh і створюємо config всередині папки .ssh

Приватний і публічний ключі з архіву

Ще при проходженні першого завдання я за допомогою nmap дізнався, що є два відкритих порти 80 і 22, так що тепер справа за малим

Вміст нашого config файлу в теці .ssh

Після створення налаштувань, пробуємо з'єднатися за допомогою ssh за допомогою команди ssh videocorp

Введіть команду ssh зі зручністю

І о так! У нас вийшло приєднатися до сервера за допомогою ssh

Ось такий симпатичний крисик нас вітає

Отже, ми на сервері, але поки що прапора немає.

Вміст теки, в якій ми знаходимося під час входу за допомогою ssh

Але зате є знову .bash_history який нам знову допоможе. Відкриваємо його і дивимося.

Вміст файла .bash_history

З вмісту бачимо, що був встановлений ssh ключ на машину з IP 192.168.0.1. Ага, що це нам дає, а дає це нам наступне, потрібно з'ясувати, яка IP адреса у машини, на яку ми потрапили. Після набору команди ifconfig бачимо, що ми на машині з IP 192.168.0.2

Вивід команди ifconfig

Отже, ми вільно можемо зайти на 0.1 машину за допомогою команди ssh dev4 @ 192.168.0.1

Таким чином ми заходимо на 0.1 машину. Оглядаємося і в якості нагороди отримуємо шостий прапор.

Отримання шостого прапора

Вміст шостого прапора

# 7 Особисте?

У цій місії нам належить покопатися в брудній білизні і особистих даних користувача dev4

Сьома місія

Отже, ми знаходимося на робочій машині розробника dev4 і що ж цікавого ми бачимо в папці, звичайно ж, нас приваблює папка .Skype в якій напевно можна знайти щось цікаве. Подивимося, що там, а там main.db поточного користувача під ніком peleninv

Цікава тека. Skype

Ми знаємо, що це база даних sqlite, так значить, ми можемо відкрити її і прочитати дані. Зробимо це!

Шлях до якого лежить main.db

Для того щоб не вдаватися сильно в подробиці, тут потрібно знати структуру таблиць БД скайпу. Цікава таблиця, що нас цікавить Messages, містить дані про повідомлення між користувачами і потрібна нам колонка з вмістом повідомлення - це body_xml

Запит select body_xml from messages; і ось що буде представлено нашому погляду

Листування в skype

Уважно переглянувши повідомлення, розумієш, що dev4 передав якісь вихідці і отримав за це гроші.

Тут же в якості винагороди отримуємо сьомий прапор. І нам стає зрозуміло, хто ж, виявляється, кріт - це, звичайно, ж dev4!

Співрозмовника dev4 ми обчислюємо з таблиці accounts, отримуючи його дані.

Дані про замовника якихось вихідників

Ну і листування з ніками, з тієї ж таблиці ми можемо додати ще одне поле author в запит і отримати більш зручне листування.

Листування з увімкненими псевдонімами

# 8 Невже???

Отже, в цій місії нам потрібно роздобути вихідці і упевнитися, що це вихідці продукту фірми videocorp.

Восьма фінальна місія

Ну, як кажуть, у нас поки немає доказів і нам потрібно завантажити вихідники з dropbox, за посиланням з листування і впевнитися, що це ті вихідці, витік яких принесла збитки фірмі videocorp

Отже, качаємо вихідці і, звичайно ж, стикаємося знову з проблемою відсутності пароля, так як архів знову захищений паролем. З листування ясно, що пароль був відісланий на пошту замовнику. Але з профілю в скайпі замовника немає реальної пошти, так що тут знову брут або ж кмітливість.

Посилання з листування

Завантаживши архів, намагаємося розархівувати його з паролем ідентичним імені архіву, тобто використовуємо як пароль слово source

Розархівування архіву з вихідними за допомогою пароля source

У підсумку ми отримуємо як нагороду восьмий прапор і переконуємося, що це вихідці продукту videocorp. Ми знайшли крота і у нас є незаперечні докази.

Восьмий прапор

Завершальна частина

Ось так легко і невимушено був пройдений цей хак-квест. Після введення восьмого прапора у форму місії і відправки нас вітають з успішним завершенням місії. Ми молодці!

Вітання і хантинг

Загалом конкурс мені сподобався, він легкий і цікавий. Це перший хак квест у форматі CTF, проведений у нас в Киргизії. Величезне спасибі організаторам! Сподіваюся, що скоро будуть ще квести більш складні і цікаві!

Всім величезне спасибі за увагу! Сподіваюся, було цікаво.