# IDOR (Insecure Direct Object Reference) {{#include ../banners/hacktricks-training.md}} 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` 2. Віддавайте перевагу кінцевим точкам, які **читають або оновлюють** дані (`GET`, `PUT`, `PATCH`, `DELETE`). 3. Зверніть увагу, коли ідентифікатори є **послідовними або передбачуваними** – якщо ваш ID `64185742`, то `64185741` ймовірно існує. 4. Досліджуйте приховані або альтернативні потоки (наприклад, *"Члени команди Paradox"* посилання на сторінках входу), які можуть розкрити додаткові API. 5. Використовуйте **автентифіковану сесію з низькими привілеями** і змініть лише 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). ## Посилання * [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII](https://ian.sh/mcdonalds) * [OWASP Top 10 – Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/) * [How to Find More IDORs – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489) {{#include ../banners/hacktricks-training.md}}