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

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

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

easygolangPro
Задача
# IDOR: вертикальная эскалация привилегий через незащищённые админ-эндпоинты ## Сценарий Вы зарегистрированы в интернет-магазине как обычный пользователь **demo**. В приложении есть административный раздел: основная админ-панель (`/admin`) и набор служебных API для статистики и управления пользователями. Команда уверена, что весь admin-функционал защищён ролевой проверкой и доступен только администраторам. По данным внутреннего аудита, в одном из административных ответов раскрывается конфиденциальная метка — её требуется извлечь, имея только обычную учётную запись. ## Цель 1. Залогиньтесь как `demo` и изучите, какие административные ресурсы существуют в приложении (по структуре главной страницы, JS-кода, статических ассетов, известных конвенций). 2. Найдите admin-эндпоинт, к которому ролевая проверка применена непоследовательно или забыта. 3. Получите доступ к административному функционалу с правами обычного пользователя и извлеките флаг из ответа. ## Теория Вертикальная эскалация привилегий (vertical privilege escalation) — частный случай IDOR, когда пользователь с низкими правами получает доступ к функционалу более привилегированной роли (admin, owner, super-user). В отличие от горизонтальной эскалации (доступ к чужому ресурсу того же уровня), вертикальная даёт доступ к **типу** функциональности, недоступной по роли. Самая частая ошибка — несогласованная защита: команда добавляет ролевую проверку к UI-странице (`/admin`), но забывает применить её к связанным API-эндпоинтам (`/admin/api/*`, `/admin/data`), которые часто пишутся другим разработчиком или в другой момент времени. **Уязвимый паттерн:** ```go // Маршрут защищён только аутентификацией, но не авторизацией mux.Handle("GET /admin/stats", h.AuthMiddleware(h.AdminStats)) ``` С точки зрения атакующего — достаточно зарегистрировать (или иметь) обычный аккаунт, получить валидную сессию, и обратиться к admin-эндпоинту напрямую (через DevTools, curl, Burp), минуя UI-страницу с ролевой проверкой. Ответ содержит данные, которые UI отрисовывает только администраторам. ## Точка входа атаки | Параметр | Значение | |----------|----------| | Учётные данные | `demo` / `demo` | | Главная админ-страница | `GET /admin` (защищена ролью — для разведки) | | Кандидаты на уязвимость | служебные admin-эндпоинты (стат-API, операции над пользователями) |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru