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

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

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

easygolangPro
Задача
# IDOR: предсказуемые идентификаторы заказов ## Сценарий Вы зарегистрированы в интернет-магазине как пользователь **demo**. В магазине есть личный кабинет с историей заказов и эндпоинт просмотра деталей конкретного заказа по идентификатору в URL. Команда уверена, что эндпоинт защищён аутентификацией и пользователь видит только свои заказы. По данным внутреннего расследования, в системе есть служебный заказ с конфиденциальной меткой, размещённый администратором — её требуется извлечь в рамках аудита. ## Цель 1. Залогиньтесь как `demo` и изучите URL-схему доступа к собственным заказам через профиль. 2. Используя свойства идентификаторов заказов, обратитесь к ресурсу, не принадлежащему текущему пользователю. 3. Найдите флаг в данных служебного заказа. ## Теория IDOR (Insecure Direct Object Reference) усиливается, когда приложение использует **предсказуемые идентификаторы** ресурсов — последовательные целые числа, монотонные счётчики, инкрементируемые номера. Даже без знания внутренней схемы атакующий может перебрать диапазон возможных значений и найти ресурсы других пользователей. В отличие от непредсказуемых идентификаторов (UUIDv4, криптографически случайные токены), последовательные ID создают атаку с пространством перебора `O(N)` — линейного, тривиального для автоматизации. **Уязвимый паттерн:** ```go // Запрос фильтрует только по ID ресурса, без проверки принадлежности row := db.QueryRow("SELECT ... FROM orders WHERE id=?", id) ``` Защита аутентификацией (наличие сессии) не решает проблему: атакующий может зарегистрировать собственный аккаунт, получить валидную сессию и затем перебирать чужие ресурсы. Дополнительный фактор — служебные/первые записи в системе обычно имеют самые ранние идентификаторы (1, 2, ...), что делает их «низковисящими плодами» для атаки. ## Точка входа атаки | Параметр | Значение | |----------|----------| | Учётные данные | `demo` / `demo` | | Просмотр заказа | `GET /order/{id}` | | Профиль | `GET /profile` |

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

Ещё лабораторные по этому типу уязвимости

IDOR

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

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

+30 XP ~20 минут
golangeasyPro
Exploit Fix
IDOR

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

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

+30 XP ~20 минут
golangeasyPro
Exploit Fix
IDOR

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

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

+30 XP ~20 минут
nodejseasyPro
Exploit Fix
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru