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

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

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

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

Автор: Hack & Fix
Освоишь: object-level authUUID вместо intownership check
Средне+60 XP ~30 мин python
CWE-639 · A01:2021 Pro
Обложка: IDOR: Mass Assignment — эскалация через JSON Обложка: IDOR: Mass Assignment — эскалация через JSON
Задача
# Mass Assignment: эскалация привилегий через JSON-API ## Сценарий «МерчБокс» — внутренний магазин мерча компании: сотрудники покупают футболки и стикеры со скидкой, профиль настраивается через JSON-API. На прошлой неделе служба безопасности заметила, что у одного стажёра необъяснимо вырос баланс, и наняла вас разобраться, через какую щель. Личный кабинет выглядит невинно — а вот как именно сервер применяет обновления, стоит проверить. ## Цель 1. Войдите рядовым сотрудником и обновите профиль обычным способом; изучите, какие поля API возвращает в ответе. 2. Сообразите, какие служебные атрибуты есть у записи пользователя, кроме видимых в форме, и подмешайте один из них в запрос обновления, повысив свою роль. 3. Откройте административный раздел — флаг будет там. ## Теория Mass Assignment — ситуация, когда сервер переносит поля из входного запроса в атрибуты записи оптом, без явного списка того, что клиенту менять разрешено. Рядом с легитимными «имя» и «аватар» в тот же механизм попадают служебные атрибуты: привилегии, баланс, идентификаторы. Их должен устанавливать только сервер. **Уязвимый паттерн:** ```python for key, value in data.items(): db.execute(f'UPDATE users SET {key}=? WHERE id=?', (str(value), user['id'])) ``` Каждый ключ из JSON становится столбцом обновления. Отдельные критичные поля разработчик защитил, но у записи есть и другие атрибуты, о которых форма профиля умалчивает, — они проходят через тот же цикл без вопросов. Клиенту достаточно отправить их в теле запроса, чтобы назначить себе чужие права. ## Точка входа атаки `PUT /api/profile` — JSON-API обновления профиля, тело — объект с полями записи (нужна сессия после входа). * **Обычный пользователь:** `demo` / `demo`

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

другие лабы по этой уязвимости
Обложка лабы: IDOR: Перебор заказов по последовательным ID Обложка лабы: IDOR: Перебор заказов по последовательным ID
IDOR

IDOR: Перебор заказов по последовательным ID

Заказы используют последовательные целочисленные ID без проверки владельца.

+60 XP
Python Pro
Exploit Fix
Обложка лабы: IDOR: Доступ к чужому счёту Обложка лабы: IDOR: Доступ к чужому счёту
IDOR

IDOR: Доступ к чужому счёту

Эндпоинт просмотра счёта не проверяет владельца. Получи данные чужого счёта.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: IDOR: Вертикальная эскалация привилегий Обложка лабы: IDOR: Вертикальная эскалация привилегий
IDOR

IDOR: Вертикальная эскалация привилегий

Админ-эндпоинты проверяют аутентификацию, но не роль пользователя.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: IDOR: Mass Assignment — эскалация привилегий через профиль Обложка лабы: IDOR: Mass Assignment — эскалация привилегий через профиль
IDOR

IDOR: Mass Assignment — эскалация привилегий через профиль

Эндпоинт обновления профиля принимает JSON и записывает все поля, включая role. Отправь {"role":"admin"} и получи доступ к админ-панели с флагом.

+60 XP
Go Pro
Exploit Fix