www.root-me.org
February 19

Flask - Unsecure session    www.root-me.org

Название: Flask - Unsecure session

Сложность: Третий уровень испытаний

Заявление

Веб-разработчик компании Flask-me утверждает, что использование надежного секретного ключа бесполезно. Докажите ему обратное!

Переходим на главную страницу сайта и проводим комплексную проверку всего доступного функционала. Анализируем навигацию, интерфейс и основные элементы управления, чтобы выявить возможные точки взаимодействия или уязвимости. Особое внимание уделяем поиску ключевой зацепки — элемента, который может стать отправной точкой для дальнейшего исследования или углубленного анализа.

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

Рекомендую продолжить выполнение задания с использованием Burp Suite, так как этот инструмент предоставляет более детальный контроль и анализ результатов.

Обратите внимание на параметр "Cookie: session=", который содержит сессию, состоящую из трёх частей. Такая структура может указывать на то, что сессия используется для идентификации учетной записи пользователя. Возможно, каждая из частей отвечает за определённые данные, такие как идентификатор пользователя, уровень доступа или другие параметры авторизации.

Всё верно, анализ текущей сессии указывает на то, что она принадлежит учетной записи с правами обычного пользователя, а не администратора. Это подтверждается структурой сессии и её поведением при взаимодействии с административными функциями.
{'admin':'false','username':'admin'}

Для выполнения задачи воспользуемся специализированным инструментом flask-unsign, доступным в операционной системе Kali Linux.

pip3 install flask-unsign - "Установите инструмент".

Работа с инструментом:

flask-unsign - Это утилита для работы с подписанными куками (cookies) в Flask.
--wordlist ~/Desktop/1/rockyou.txt - Путь файла.
--unsign - Эта опция указывает, что утилита должна попытаться "расшифровать".
--cookie - Это подписанная кука, которую нужно "расшифровать".
--no-literal-eval - Эта опция отключает использование literal_eval для преобразования данных куки. Flask-unsign по умолчанию пытается интерпретировать данные куки как Python-объекты, но если данные содержат небезопасные конструкции, это может привести к ошибкам (отключает эту функцию, чтобы избежать проблем).

flask-unsign --wordlist ~/Desktop/1/rockyou.txt --unsign --cookie '<session>' --no-literal-eval

Вытащили:
[*] Session decodes to: {'admin': 'false', 'username': 'guest'}
[*] Starting brute-forcer with 8 threads..
[+] Found secret key after 70144 attempts
b's3cr3t'

--sign - используется для подписи (шифрования) куки. Когда вы передаете данные куки в формате JSON или словаря, эта опция позволяет создать подписанную куку, которую Flask сможет распознать и проверить.
--secret - указывает секретный ключ, который используется для подписи.

flask-unsign --sign --cookie "{'admin':'true','username':'admin'}" --secret "b's3cr3t'"

После успешного создания административной сессии с помощью инструмента flask-unsign, переходим в BurpSuite и заменяем на новую сессию.

Забираем flag :)

Автор: https://t.me/cybersecuritybureau | Здесь еще больше разборов