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

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

Vertical IDOR: Доступ к админ-панели без проверки роли

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

Автор: Hack & Fix
Освоишь: object-level authUUID вместо intownership check
Сложно+90 XP ~60 мин php
CWE-639 · A01:2021 Pro
Обложка: Vertical IDOR: Доступ к админ-панели без проверки роли Обложка: Vertical IDOR: Доступ к админ-панели без проверки роли
Задача
# Vertical IDOR: административные функции без проверки роли ## Сценарий Вы проводите аудит сервиса аналитики доставки «Ледник» (нативный PHP, SQLite) перед выдачей доступа франчайзи-партнёрам. В приложении есть административная панель: управление пользователями, статистика, операции над балансами. В навигации обычного аккаунта ссылок на неё нет, и разработчик уверен, что админка «спрятана». Заказчик попросил проверить, так ли это, — доступ партнёров ограничен договором, и утечка административных функций стоила бы штрафа. ## Цель 1. Войдите под обычной учётной записью и проверьте типичные адреса административного раздела напрямую — отсутствие ссылки в интерфейсе ничего не значит. 2. Определите, какие административные эндпоинты проверяют только факт входа и не спрашивают роль. 3. В разделе статистики заберите секретный административный токен — это флаг. Убедитесь, что и изменяющие операции доступны обычному пользователю. ## Теория Вертикальная эскалация привилегий: вошедший пользователь низкой роли выполняет операции высокой. Проверка доступа состоит из двух слоёв — аутентификации («вошёл?») и авторизации («имеет право на эту операцию?»); в этой лабе у административных обработчиков реализован только первый. Отсутствие ссылки в интерфейсе — не защита, а надежда на неосведомлённость. **Уязвимый паттерн:** ```php $user = getUser($db); if ($user === null) { header('Location: /login'); exit; } // No role check — any authenticated user can see admin panel ``` Каждый административный обработчик начинает с этой пары строк и идёт дальше без вопроса о роли. Любой вошедший пользователь открывает панель и статистику по прямым адресам, а изменяющие операции — удаление пользователей и правка балансов — отправляет от своего имени: сервер исполняет их как легитимные административные действия. В статистике утекает и секретный токен администратора. ## Точка входа атаки * **Панель:** `GET /admin` * **Статистика с токеном:** `GET /admin/stats` * **Изменяющие операции:** `POST /admin/delete/<id>`, `POST /admin/balance/<id>` * **Обычный пользователь:** `demo` / `demo` Флаг — «secret admin token» на странице статистики; сдаётся в форме проверки лабы.

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

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

IDOR: Predictable Order IDs

Заказы используют последовательные integer ID. Атакующий перебирает ID и просматривает чужие заказы.

+60 XP
PHP Pro
Exploit Fix
Обложка лабы: IDOR: Просмотр чужих инвойсов Обложка лабы: IDOR: Просмотр чужих инвойсов
IDOR

IDOR: Просмотр чужих инвойсов

Эндпоинт /invoice?id=N возвращает инвойс без проверки владельца. Атакующий перебирает ID и читает чужие данные.

+30 XP
PHP Pro
Exploit Fix
Обложка лабы: IDOR: предсказание UUID v1 по таймстампу Обложка лабы: IDOR: предсказание UUID v1 по таймстампу
IDOR

IDOR: предсказание UUID v1 по таймстампу

Заказы интернет-магазина идентифицируются UUID v1 (timestamp + MAC + clock_seq). Все заказы созданы внутри одного процесса, поэтому делят те же node/clock_seq биты — отличаются только по timestamp. Эндпоинт /order/:uuid не проверяет владельца, и атакующий, имея один свой UUID, угадывает UUID соседних заказов и получает чужие данные, включая CTF-флаг.

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

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

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

+60 XP
Go Pro
Exploit Fix