Перейти к содержимому
← Каталог python IDOR

IDOR: Mass Assignment — эскалация через JSON

API-эндпоинт обновления профиля принимает все JSON-поля, включая role.

mediumpythonPro
Задача
# Mass Assignment: эскалация привилегий через JSON-API ## Сценарий Перед вами Flask-приложение интернет-магазина SecureShop. У авторизованных пользователей есть личный кабинет, и для удобства разработчик реализовал JSON-API обновления профиля: клиент отправляет JSON с полями для изменения, сервер применяет их к записи пользователя в БД. В реализации этого API допущена ошибка из категории **Mass Assignment** (CWE-915) — сервер автоматически переносит ключи из входного JSON в столбцы таблицы пользователей без явной фильтрации того, какие именно поля клиент вправе менять. Это значит, что вместе с легитимными полями («имя», «аватар» и т. п.) клиент может «случайно» прислать и служебные атрибуты записи — те, которые относятся к авторизации, балансу, привилегиям. Сервер послушно их применит. В системе есть административный раздел с CTF-флагом, доступный только пользователям с административной ролью. Ваша задача — использовать Mass Assignment-уязвимость для повышения собственной роли и получения флага. ## Цели 1. Авторизуйтесь как `demo` / `demo` и изучите страницу профиля. Сделайте легитимное обновление и понаблюдайте, какие именно поля сервер принимает на этом эндпоинте. 2. Подумайте, какие ещё «служебные» поля могут существовать в записи пользователя в БД, не показываемые легитимной формой профиля. 3. Сформируйте JSON-запрос, в котором вместе с разрешёнными полями подмешаны те, которые пользователь не должен иметь возможности менять. Применив запрос, повысьте собственную роль. 4. Откройте административный раздел с CTF-флагом и заберите его. ## Данные | Параметр | Значение | |----------|----------| | Обычный пользователь | `demo` / `demo` |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru