Найти в Дзене
B0rn2beR00T

Решение HTB Chellange (Command Flag)

Приветствую, друзья! На этот раз мы рассмотрим лёгкий кейс с уязвимостью раскрытия информации в API приложения и попробуем воспользоваться этим. Приступим к разбору! В этом таске нам предоставляют вебчик, где можно сыграть в небольшую текстовую мини-игру. Нам предлагают прописать команду start, чтобы начать игру. Давайте так и сделаем, но при этом включим Burp Suite на фоне. В Burp Suite видим следующий GET-запрос с API сервера: Присмотревшись к эндпоинту /api/options можно заметить список команд веб-приложения. Среди возможных команд явно затесалась интересная команда secret. Интересно что она нам даст. А она даст нам флаг! Копировать флаг в вебе не совсем удобно. Можно забрать его с Burp: По сути, это флаг и такс решён. Я захотел копать дальше. Просто сдать флаг после минуты решения не интересно. Хочу попробовать пройти эту игру по-своему. Чуть полазив по запросам в Burp нашёл такой интересный js-файл: Хост предоставляет клиенту js-код где в открытом виде находятся ответы на тест.
Оглавление

Приветствую, друзья!

-2

На этот раз мы рассмотрим лёгкий кейс с уязвимостью раскрытия информации в API приложения и попробуем воспользоваться этим. Приступим к разбору!

В этом таске нам предоставляют вебчик, где можно сыграть в небольшую текстовую мини-игру.

-3

Нам предлагают прописать команду start, чтобы начать игру. Давайте так и сделаем, но при этом включим Burp Suite на фоне.

-4

В Burp Suite видим следующий GET-запрос с API сервера:

-5

Присмотревшись к эндпоинту /api/options можно заметить список команд веб-приложения.

-6

Среди возможных команд явно затесалась интересная команда secret. Интересно что она нам даст.

-7

А она даст нам флаг!

Копировать флаг в вебе не совсем удобно. Можно забрать его с Burp:

-8

По сути, это флаг и такс решён. Я захотел копать дальше. Просто сдать флаг после минуты решения не интересно. Хочу попробовать пройти эту игру по-своему.

Чуть полазив по запросам в Burp нашёл такой интересный js-файл:

-9
-10

Хост предоставляет клиенту js-код где в открытом виде находятся ответы на тест.

Изучив код я понял, что выиграть тут вряд ли выйдет. С ответами 1-3 пунктами всё понятно. Ответы мы видим в коде. Однако после любого ответа в 4-м пункте все ответы ведут к одному исходу. Увы, но по сюжету мы погибаем, как главный герой, которого автор убивает в конце романа.

-11

Флаг есть, игра вроде как пройдена, глаза сломаны об js-код. Таск точно решён :)

Выводы

Просматривать эндпоинты API очень важно при тестировании на проникновение. Это может помочь в поиске полезных и неожиданных функций или же раскрытия информации, как это и было показано в этом кейсе.

Способы защиты

Фундаментальным элементом защиты является строгая система аутентификации, выходящая за рамки простых API-ключей. Современные подходы включают OAuth 2.0 с использованием кратковременных токенов доступа и механизмов refresh token с ограниченным временем жизни.

Сквозное шифрование является обязательным требованием для всех типов API-взаимодействий. Принудительное использование TLS 1.2+ для всего трафика защищает от перехвата данных в сетях передачи. Для чувствительной информации необходимо применять дополнительные механизмы криптографической защиты на уровне приложения, включая шифрование отдельных полей перед сохранением в базах данных.

Критически важным аспектом является реализация строгого контроля за объемами возвращаемой информации. Техника фильтрации полей ответа позволяет динамически исключать из ответов API любые данные, не относящиеся к непосредственному контексту запроса.