Перейти к содержимому

Поиск по платформе

Information Disclosure: Flask Debug Mode

Flask запущен с debug=True. Через Werkzeug debugger можно получить переменные окружения.

Автор: Hack & Fix
Освоишь: error-sanitizationstack-trace guardheaders hardening
Легко+30 XP ~12 мин python
CWE-200 · A01:2021 Pro
Обложка: Information Disclosure: Flask Debug Mode Обложка: Information Disclosure: Flask Debug Mode
Задача
# Утечка через debug-режим Flask ## Сценарий **SafeShop** — интернет-магазин, развёрнутый на боевом стенде. В спешке релиза в конфигурации запуска остался включённым режим отладки фреймворка: при необработанном исключении приложение отдаёт детальную диагностическую страницу вместо стандартной страницы ошибки. Владелец площадки поручил внешнему аудитору показать, чем это грозит: найти, где приложение можно уронить, и что при этом уходит наружу. ## Цель 1. Авторизуйтесь и найдите функциональность, которая при определённых значениях параметров завершается необработанной ошибкой. 2. Изучите, что диагностический режим показывает вместо стандартной страницы ошибки. 3. Извлеките CTF-флаг из диагностического ответа сервера. ## Теория Debug-режим Flask предназначен для разработки: при падении он отдаёт интерактивную страницу отладчика — полный стектрейс, фрагменты исходного кода, значения локальных переменных и текст сообщения исключения. В production это прямая утечка внутренностей приложения. **Уязвимый паттерн:** ```python app.debug = True debugged = DebuggedApplication(app, evalex=True) ``` Необработанное исключение не гасится общей страницей ошибки, а разворачивается в диагностическую страницу, и текст сообщения об ошибке попадает прямо в её заголовок. Если разработчик по неосторожности включил в это сообщение секретную конфигурацию, она уйдёт каждому, кто умеет вызвать ошибку. Класс проблемы — Security Misconfiguration (OWASP A05:2021): диагностические инструменты не должны попадать в боевой деплой. ## Точка входа атаки `POST /login` — форма входа с полями `username` и `password`; затем `GET`-запросы к API-эндпоинтам приложения с параметром `period`. * **Обычный пользователь:** `demo` / `demo`

Похожие лабораторные (4)

другие лабы по этой уязвимости
Обложка лабы: Information Disclosure: Утечка через backup-файлы Обложка лабы: Information Disclosure: Утечка через backup-файлы
Info Disc

Information Disclosure: Утечка через backup-файлы

Статическая директория содержит backup-файлы с конфиденциальными данными. Найдите SQL-дамп и извлеките флаг.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Information Disclosure: Утечка через Stack Trace Обложка лабы: Information Disclosure: Утечка через Stack Trace
Info Disc

Information Disclosure: Утечка через Stack Trace

Ошибки сервера возвращают полные stack traces с путями файлов, SQL-схемой и переменными.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Information Disclosure: Открытый debug-эндпоинт Обложка лабы: Information Disclosure: Открытый debug-эндпоинт
Info Disc

Information Disclosure: Открытый debug-эндпоинт

Debug-эндпоинт раскрывает переменные окружения и список пользователей без аутентификации

+30 XP
Go Pro
Exploit Fix