Перейти к содержанию

Как проверить API на IDOR двумя аккаунтами

IDOR есть, если авторизованный пользователь может получить закрытый объект другого пользователя, подменив его идентификатор. Чтобы это проверить, оставьте сессию A активной и поменяйте только ID объекта. Сравните тело ответа с заранее известным маркером B.

Редакция Scantelio ·

Что подготовить

Нужны разрешённый тестовый стенд, две независимые сессии и два закрытых документа. В локальном примере скачайте access-fixture.py и запустите python3 access-fixture.py. Заголовок X-Fixture-User работает только в этом учебном приложении.

Порядок проверки

Докажите, что оба документа доступны владельцам

Откройте doc-a как A и doc-b как B. Сохраните HTTP-статус и тестовый маркер каждого ответа. Если владелец не видит своего документа, запрет чужому пользователю пока ничего не доказывает.

Поменяйте объект, сохранив пользователя

Повторите запрос A к doc-b. В уязвимом режиме ответ содержит synthetic-private-B. После исправления учебный сервер возвращает 403 без маркера. Повторите законное чтение B: исправление не должно просто закрыть маршрут всем.

Два запроса к одному документу на локальном стенде

curl -si -H "X-Fixture-User: a" "http://127.0.0.1:8769/documents/doc-b?mode=vulnerable"
curl -si -H "X-Fixture-User: a" "http://127.0.0.1:8769/documents/doc-b?mode=fixed"

Критерий результата и ограничения

Приложите к задаче версию сборки, роль, ID тестового объекта, ожидаемый запрет и фактический ответ без токенов. Перед закрытием сравните тот же сценарий на исправленном билде.

Что остаётся непроверенным

Проверка одного GET не покрывает запись, выгрузку или другой tenant. Убедитесь, что документ действительно приватный: общедоступный объект — неверный отрицательный пример.

Материалы и первоисточники

Скачать для своего проекта

Документация