84 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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}}