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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) з'являється, коли веб-або API-інтерфейс розкриває або приймає ідентифікатор, контрольований користувачем, який використовується безпосередньо для доступу до внутрішнього об'єкта без перевірки, що викликач має право отримати доступ/змінити цей об'єкт. Успішна експлуатація зазвичай дозволяє горизонтальне або вертикальне підвищення привілеїв, наприклад, читання або зміну даних інших користувачів і, в найгіршому випадку, повне захоплення облікового запису або масове витікання даних.
1. Визначення потенційних IDOR
- Шукайте параметри, які посилаються на об'єкт:
- Шлях:
/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
- Віддавайте перевагу кінцевим точкам, які читають або оновлюють дані (
GET
,PUT
,PATCH
,DELETE
). - Зверніть увагу, коли ідентифікатори є послідовними або передбачуваними – якщо ваш ID
64185742
, то64185741
ймовірно існує. - Досліджуйте приховані або альтернативні потоки (наприклад, "Члени команди Paradox" посилання на сторінках входу), які можуть розкрити додаткові API.
- Використовуйте автентифіковану сесію з низькими привілеями і змініть лише 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)
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 мільйони записів.
Запит для підтвердження концепції:
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. Заходи та найкращі практики
- Забезпечити авторизацію на рівні об'єкта для кожного запиту (
user_id == session.user
). - Віддавати перевагу непрямим, непередбачуваним ідентифікаторам (UUIDv4, ULID) замість автоінкрементних ID.
- Виконувати авторизацію на стороні сервера, ніколи не покладатися на приховані поля форм або елементи управління UI.
- Реалізувати перевірки RBAC / ABAC в центральному проміжному програмному забезпеченні.
- Додати обмеження швидкості та ведення журналів для виявлення перерахування ID.
- Тестувати безпеку кожної нової кінцевої точки (модульне, інтеграційне та 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
- OWASP Top 10 – Broken Access Control
- How to Find More IDORs – Vickie Li
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.