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

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

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

Админ-эндпоинты /admin/stats и /admin/users/delete проверяют аутентификацию, но не авторизацию. Любой залогиненный пользователь может получить флаг.

Автор: Hack & Fix
Освоишь: object-level authUUID вместо intownership check
Легко+30 XP ~15 мин golang
CWE-639 · A01:2021 Pro
Обложка: IDOR: Вертикальная эскалация привилегий Обложка: IDOR: Вертикальная эскалация привилегий
Задача
# IDOR: вертикальная эскалация через незащищённые админ-эндпоинты ## Сценарий **EventPulse** — платформа для организации конференций: каталог, заказы и административный раздел для организаторов. Главный экран админки закрывается ролевой проверкой, а служебные API — статистика и операции над пользователями — команда собиралась «дозащитить потом». Руководитель платформы Лена узнала об инциденте у соседей и заказала аудит до релиза. По данным разведки, в одном из административных ответов раскрывается конфиденциальная метка. У вас — только обычная учётная запись покупателя. ## Цель 1. Изучите, какие административные адреса существуют в приложении: разметка страниц, клиентский код, общепринятые пути. 2. Проверьте, ко всем ли admin-эндпоинтам применяется ролевая проверка, а не только проверка входа. 3. Обратитесь к слабо защищённому эндпоинту напрямую с сессией обычного пользователя и извлеките флаг из ответа. ## Теория Вертикальная эскалация привилегий — частный случай IDOR: пользователь с низкими правами добирается до функциональности более привилегированной роли. В отличие от горизонтальной эскалации (чужой ресурс того же уровня), здесь захватывается сам тип функциональности — административный. Типичная причина — несогласованная защита: ролевая проверка есть на «видимой» странице, но забыта на связанных API-эндпоинтах, которые разрабатывались отдельно. Интерфейс их не показывает — и создаёт ложное чувство защищённости. **Уязвимый паттерн:** ```go // Админ-маршрут защищён только проверкой входа — роль не проверяется: mux.Handle("GET /admin/stats", authOnly(adminStats)) ``` Для атаки не нужны обходы и хитрые конструкции: достаточно обычного аккаунта, валидной сессии и прямого обращения к эндпоинту — через адресную строку, консоль браузера или HTTP-клиент. Сервер ответит так, словно роль проверили. ## Точка входа атаки | Параметр | Значение | |----------|----------| | Учётные данные | `demo` / `demo` | | Главная админ-страница | `GET /admin` (закрыта ролью — точка разведки) | | Кандидаты на проверку | служебные admin-эндпоинты: статистика, операции над пользователями |

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

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

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

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

+30 XP
Go Pro
Exploit Fix
Обложка лабы: IDOR: Перебор заказов по последовательным ID Обложка лабы: IDOR: Перебор заказов по последовательным ID
IDOR

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

Заказы используют последовательные целочисленные ID. Эндпоинт /order/{id} не проверяет владельца — можно перебрать чужие заказы и найти флаг.

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

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

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

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

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

Эндпоинт просмотра счёта в Express + better-sqlite3 не проверяет владельца ресурса. Получи доступ к счёту администратора и извлеки флаг.

+30 XP
Node.js Pro
Exploit Fix