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

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

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

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

Автор: Hack & Fix
Освоишь: error-sanitizationstack-trace guardheaders hardening
Легко+30 XP ~12 мин python
CWE-200 · A01:2021 Pro
Обложка: Information Disclosure: Утечка через Stack Trace Обложка: Information Disclosure: Утечка через Stack Trace
Задача
# Информационное раскрытие (утечка через диагностический вывод ошибок) ## Сценарий Вы — внешний аудитор безопасности компании **Overclocked** — интернет-магазина мерча для разработчиков и системных администраторов, построенного на Flask. На прошлой неделе команда выпустила JSON API расширенного поиска товаров, и перед запуском рекламной кампании технический директор попросил проверить, не отдаёт ли новый сервис лишнего. В рабочем чате разработки мелькнула фраза про «временный режим подробных ошибок», который включали для отладки, — поэтому вы начинаете с поведения API при сбоях. ## Цель 1. Найдите JSON API расширенного поиска и определите, какие параметры он принимает и какие типы значений ожидает. 2. Спровоцируйте ошибку обработки запроса и изучите структуру диагностического ответа сервера. 3. Найдите в утечке снимок внутренних переменных обработчика и извлеките CTF-флаг из секрета приложения. ## Теория Информационное раскрытие через ошибки возникает, когда приложение при сбое отвечает не нейтральным сообщением, а подробной диагностикой: полным стеком вызовов, путями к файлам и — в худшем случае — снимком всех локальных переменных на момент исключения. В таком снимке оказывается всё, что было в памяти функции: промежуточные SQL-запросы, объекты конфигурации и попавшие туда секреты. **Уязвимый паттерн:** ```python except Exception as e: local_vars = {k: repr(v) for k, v in locals().items()} return jsonify({'error': str(e), 'traceback': tb, 'locals': local_vars}), 500 ``` Атакующему достаточно передать в параметр, ожидающий число, значение неожидаемого типа: исключение возникнет ещё до основной работы, а отладочный обработчик сам отправит ему всю диагностику вместе с секретами, уже загруженными в память к этому моменту. ## Точка входа атаки `GET /api/search` — JSON API расширенного поиска; параметры строки запроса: `q`, `category`, `min_price`, `max_price`. Авторизация для этого запроса не требуется. * **Обычный пользователь:** `demo` / `demo` * **Администратор:** `admin` / `???`

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

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

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

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

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Information Disclosure: Flask Debug Mode Обложка лабы: Information Disclosure: Flask Debug Mode
Info Disc

Information Disclosure: Flask Debug Mode

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

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

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

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

+30 XP
Go Pro
Exploit Fix