# IDOR (Insecure Direct Object Reference) {{#include ../banners/hacktricks-training.md}} IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) tritt auf, wenn ein Web- oder API-Endpunkt einen vom Benutzer steuerbaren Bezeichner offenlegt oder akzeptiert, der **direkt** verwendet wird, um auf ein internes Objekt zuzugreifen, **ohne zu überprüfen, ob der Anrufer berechtigt ist**, auf dieses Objekt zuzugreifen/zu ändern. Erfolgreiche Ausnutzung ermöglicht normalerweise eine horizontale oder vertikale Privilegieneskalation, wie das Lesen oder Ändern von Daten anderer Benutzer und im schlimmsten Fall die vollständige Übernahme des Kontos oder die Massen-Datenexfiltration. --- ## 1. Identifizierung potenzieller IDORs 1. Suchen Sie nach **Parametern, die auf ein Objekt verweisen**: * Pfad: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000` * Abfrage: `?id=42`, `?invoice=2024-00001` * Body / JSON: `{"user_id": 321, "order_id": 987}` * Header / Cookies: `X-Client-ID: 4711` 2. Bevorzugen Sie Endpunkte, die **Daten lesen oder aktualisieren** (`GET`, `PUT`, `PATCH`, `DELETE`). 3. Beachten Sie, wenn Bezeichner **sequentiell oder vorhersehbar** sind – wenn Ihre ID `64185742` ist, dann existiert wahrscheinlich `64185741`. 4. Erkunden Sie versteckte oder alternative Flüsse (z. B. *"Paradox-Teammitglieder"* Link auf Anmeldeseiten), die zusätzliche APIs offenlegen könnten. 5. Verwenden Sie eine **authentifizierte Sitzung mit niedrigen Rechten** und ändern Sie nur die ID, **während Sie dasselbe Token/Cookie beibehalten**. Das Fehlen eines Autorisierungsfehlers ist normalerweise ein Zeichen für IDOR. ### Schnelles manuelles Manipulieren (Burp Repeater) ``` PUT /api/lead/cem-xhr HTTP/1.1 Host: www.example.com Cookie: auth=eyJhbGciOiJIUzI1NiJ9... Content-Type: application/json {"lead_id":64185741} ``` ### Automatisierte Enumeration (Burp Intruder / curl Schleife) ```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. Fallstudie aus der Praxis – McHire Chatbot-Plattform (2025) Während einer Bewertung des von Paradox.ai betriebenen **McHire** Rekrutierungsportals wurde das folgende IDOR entdeckt: * Endpunkt: `PUT /api/lead/cem-xhr` * Autorisierung: Benutzer-Sitzungscookie für **jedes** Restaurant-Testkonto * Body-Parameter: `{"lead_id": N}` – 8-stellige, **sequentielle** numerische Kennung Durch das Verringern von `lead_id` konnte der Tester beliebige Bewerberdaten **vollständige PII** (Name, E-Mail, Telefon, Adresse, Schichtpräferenzen) sowie ein Verbraucher-**JWT** abrufen, das Session-Hijacking ermöglichte. Die Enumeration des Bereichs `1 – 64.185.742` legte ungefähr **64 Millionen** Datensätze offen. Proof-of-Concept-Anfrage: ```bash curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \ -H 'Content-Type: application/json' \ -d '{"lead_id":64185741}' ``` Kombiniert mit **Standard-Admin-Anmeldeinformationen** (`123456:123456`), die Zugriff auf das Testkonto gewährten, führte die Schwachstelle zu einem kritischen, unternehmensweiten Datenleck. --- ## 3. Auswirkungen von IDOR / BOLA * Horizontale Eskalation – Lesen/Aktualisieren/Löschen von **Daten anderer Benutzer**. * Vertikale Eskalation – Niedrig privilegierter Benutzer erhält nur für Admins verfügbare Funktionen. * Massen-Datenleck, wenn Identifikatoren sequenziell sind (z. B. Bewerber-IDs, Rechnungen). * Kontoübernahme durch Stehlen von Tokens oder Zurücksetzen von Passwörtern anderer Benutzer. --- ## 4. Minderung & Best Practices 1. **Durchsetzung der objektbezogenen Autorisierung** bei jeder Anfrage (`user_id == session.user`). 2. Bevorzugen Sie **indirekte, unratbare Identifikatoren** (UUIDv4, ULID) anstelle von Auto-Increment-IDs. 3. Führen Sie die Autorisierung **serverseitig** durch, verlassen Sie sich niemals auf versteckte Formularfelder oder UI-Steuerelemente. 4. Implementieren Sie **RBAC / ABAC**-Überprüfungen in einer zentralen Middleware. 5. Fügen Sie **Ratenbegrenzung & Protokollierung** hinzu, um die Enumeration von IDs zu erkennen. 6. Sicherheitstest für jeden neuen Endpunkt (Einheit, Integration und DAST). --- ## 5. Werkzeuge * **BurpSuite-Erweiterungen**: Authorize, Auto Repeater, Turbo Intruder. * **OWASP ZAP**: Auth Matrix, Forced Browse. * **Github-Projekte**: `bwapp-idor-scanner`, `Blindy` (Bulk-IDOR-Jagd). ## Referenzen * [McHire Chatbot Platform: Standardanmeldeinformationen und IDOR legen 64 Millionen Bewerber-PII offen](https://ian.sh/mcdonalds) * [OWASP Top 10 – Fehlerhafte Zugriffskontrolle](https://owasp.org/Top10/A01_2021-Broken_Access_Control/) * [Wie man mehr IDORs findet – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489) {{#include ../banners/hacktricks-training.md}}