• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Codeby Games Codeby Games - Привилегированный гость [Writeup]

vov4ick

Cybercoliseum II
11.12.2022
39
103
BIT
798
"Flask для новичков: как превратиться из Пользователя в Админа за 5 минут!"

maxresdefault.jpg

- Приветствие
- Разведка
- Получение сессии
- Работа с инструментом
- Получение прав админа
- Вывод


Приветствую всех читателей форума и любителей CTF. Сегодня рассмотрим таск на Кодебай Геймс "Привилегированный гость" из категории Веб.

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

Screenshot_8.png


Идем в инструменты разработчика и видим такой скрипт :
Это команды которые мы можем выполнять в данном случае, другие приниматься не будут.
Соответственно с привелегиями гость используя getFlag нам ничего не перепадет.

Screenshot_14.png


Пробуем перехватить все это в Burp suite и проанализировать что мы имеем.
Здесь мы обратим внимание что у нас есть сессия в куках, это сессия гостя.

Screenshot_11.png


Через Wappalizer я вижу что стоит Flask. Для работы с сессиями будем использовать Flask Unsign.
Это инструмент командной строки для расшифровки, подделки и перебора подписанных куки-сессий Flask.
Первая ссылка на гитхабе, там довольно четкое описание для работы с инструментом.

В данном случае программа успешно декодировала нашу куку сессии Flask. Результат декодирования показывает, что сессия включает в себя
информацию о _fresh, _id и _user_id, причем идентификатор пользователя установлен в guest.

Screenshot_12.png

Веб-приложения Flask используют секретный ключ (secret key) для создания подписи данных, таких как сессии пользователей.
Этот секретный ключ необходим для безопасного хранения и передачи данных сессии между клиентом и сервером.
Утечка секретного ключа может привести к серьезным угрозам безопасности, поэтому его защита является важной задачей для
разработчиков веб-приложений на Flask.

Этот инструмент дает нам возможность использовать атаку на основе словаря и сбрутить наш ключ.

_240229190210.png


Уже имея наш ключ мы можем изменить значение user_id.

_240229192441.png


В целом наша сессия готова. Перехватываем запрос, вставляем нашу сессию и отправляем ее :

Screenshot_13.png


Ура мы админ, спокойно забираем флаг и сдаем его.

_240229193551.png


Вывод :

Используя инструмент Flask-Unsign, мы можем анализировать и изменять сеансовые куки Flask-приложений. Это демонстрирует серьезную уязвимость в безопасности, когда сессии хранятся на клиентской стороне без достаточной защиты. Подделка сеансов позволяет злоумышленнику представить себя за другого пользователя, получив доступ к его привилегиям и конфиденциальной информации.

Спасибо за внимание и отдельное спасибо Админам за такие таски.
 
Последнее редактирование модератором:

Exited3n

Red Team
10.05.2022
679
216
BIT
430
Отличный райтап!

Таск точно не изи, т.к. работа с инструментом flask-unsign, сбрутить, подписать, подменить куки.
 
  • Нравится
Реакции: vov4ick

vov4ick

Cybercoliseum II
11.12.2022
39
103
BIT
798
Спасибо ! Согласен что не изи, самому пришлось повозиться и изучить инструмент.
 

xverizex

Green Team
29.12.2022
24
10
BIT
193
Капец. А у меня знаний почти нет и для меня это был сложный таск. Я несколько дней возился с тем что знаю и ничего не помогало. Читая OWASP, я дошел до кражи сессии. Подумал, что задание перезагружается там каждые 30 минут и можно подобрать сессию, когда будет только начинаться. Потом понял, что сессию так не подобрать так как она для каждого отдельно запускается. Потом подумал, есть ли возможность расшифровать сессию, думал что там php. Уже опустил руки. Хорошо хоть решение есть. Теперь понятно что можно делать. Значит я был близко, но из-за незнания инструментов был далёк.
 
  • Нравится
Реакции: vov4ick

x0001

One Level
08.12.2022
6
1
BIT
61
Хорошее решение ,но для совсем начинающих будет тяжело,есть "Подводные камни" всё таки это ближе к средней сложности.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!