hacktricks/pentesting-web/idor.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

24 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

पोस्ट लिया गया है https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489

IDORs के लिए अप्रत्याशित स्थान

कोडेड और हैश किए गए आईडी को नज़रअंदाज़ न करें

जब एक कोडेड आईडी के सामने आपको आता है, तो सामान्य कोडिंग स्कीम का उपयोग करके कोडेड आईडी को डिकोड करना संभव हो सकता है।

और यदि एप्लिकेशन एक हैश/रैंडमाइज़ आईडी का उपयोग कर रहा है, तो देखें कि क्या आईडी पूर्वानुमानित किया जा सकता है। कभी-कभी एप्लिकेशन ऐसे एल्गोरिदम का उपयोग करते हैं जो पर्याप्त एंट्रोपी उत्पन्न नहीं करते हैं, और इस प्रकार, आईडी को सावधानीपूर्वक विश्लेषण के बाद पूर्वानुमानित किया जा सकता है। इस मामले में, इन आईडी को कैसे बनाए जाते हैं का विश्लेषण करने के लिए कुछ खाते बनाने का प्रयास करें। आप अन्य उपयोगकर्ताओं के आईडी को पूर्वानुमानित करने की अनुमति देने वाले पैटर्न को खोज सकते हैं।

इसके अलावा, यह संभव हो सकता है कि एक अन्य API एंडपॉइंट, एप्लिकेशन के अन्य सार्वजनिक पेजों पर (अन्य उपयोगकर्ताओं के प्रोफ़ाइल पेज आदि), या एक URL के माध्यम से referer के रूप में यादृच्छिक या हैश किए गए आईडी लीक हो सकते हैं।

उदाहरण के लिए, एक बार मैंने एक API एंडपॉइंट खोजा था जो उपयोगकर्ताओं को हैश किए गए conversation ID के माध्यम से विस्तृत सीधे संदेश प्राप्त करने की अनुमति देता है। अनुरोध कुछ इस तरह से दिखता है:

GET /api_v1/messages?conversation_id=SOME_RANDOM_ID

इसे पहली नज़र में ठीक लगता है क्योंकि conversation_id एक लंबा, यादृच्छिक, अल्फान्यूमेरिक अनुक्रम है। लेकिन बाद में मैंने यह पाया कि आप वास्तव में हर उपयोगकर्ता के लिए बातचीतों की एक सूची पा सकते हैं, बस उनके उपयोगकर्ता आईडी का उपयोग करके!

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

यह उस उपयोगकर्ता के conversation_ids की सूची लौटाएगा जिनके पास वह उपयोगकर्ता है। और user_id प्रत्येक उपयोगकर्ता के प्रोफ़ाइल पेज पर सार्वजनिक रूप से उपलब्ध है। इसलिए, आप किसी भी उपयोगकर्ता के संदेश पढ़ सकते हैं, पहले उनके प्रोफ़ाइल पेज पर उनके user_id को प्राप्त करके, फिर उस उपयोगकर्ता के conversation_ids की सूची प्राप्त करके, और अंत में API endpoint /api_v1/messages के माध्यम से संदेश लोड करके!

यदि आप इसे अनुमान नहीं लगा सकते हैं, तो इसे बनाने की कोशिश करें

यदि ऑब्जेक्ट संदर्भ आईडी अप्रत्याशित लगते हैं, तो देखें कि क्या आप इन ऑब्जेक्ट आईडी के निर्माण या लिंक करने की प्रक्रिया को प्रभावित करने के लिए कुछ कर सकते हैं।

एप्लिकेशन को एक आईडी प्रदान करें, चाहे वह इसके लिए नहीं कहता हो

यदि एप्लिकेशन द्वारा उत्पन्न अनुरोध में कोई आईडी उपयोग नहीं की जाती है, तो अनुरोध में इसे जोड़ने की कोशिश करें। अनुरोध में id, user_id, message_id या अन्य ऑब्जेक्ट संदर्भ पैरामीटर जोड़ने की कोशिश करें और देखें कि क्या इसका एप्लिकेशन के व्यवहार में अंतर पड़ता है।

उदाहरण के लिए, यदि यह अनुरोध आपके सभी सीधे संदेश प्रदर्शित करता है:

GET /api_v1/messages

इसके बारे में क्या है? क्या यह किसी अन्य उपयोगकर्ता के संदेश प्रदर्शित करेगा?

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

HPP (HTTP पैरामीटर प्रदूषण)

HPP सुरक्षा कमजोरियाँ (एक ही पैरामीटर के लिए एकाधिक मान प्रदान करना) भी IDOR की ओर ले जा सकती हैं। एप्लिकेशन उम्मीद नहीं कर सकती कि उपयोगकर्ता एक ही पैरामीटर के लिए एकाधिक मान प्रस्तुत करेगा और ऐसा करके, आप एंडपॉइंट पर सेट की गई पहुंच नियंत्रण को अनदेखा कर सकते हैं।

हालांकि, यह बहुत ही दुर्लभ लगता है और मैंने इसे पहले कभी होते नहीं देखा है, सिद्धांतात्मक रूप से, यह ऐसा दिखेगा। यदि यह अनुरोध विफल होता है:

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

निम्नलिखित एक हैकिंग किताब से सामग्री है जो हैकिंग तकनीकों के बारे में है। निम्नलिखित सामग्री /hive/hacktricks/pentesting-web/idor.md फ़ाइल से है। अंग्रेजी में दिए गए पाठ का हिंदी में अनुवाद करें और अनुवाद को वही मार्कडाउन और HTML सिंटैक्स के साथ वापस लौटाएं। कोड, हैकिंग तकनीक के नाम, हैकिंग शब्द, क्लाउड / SaaS प्लेटफ़ॉर्म के नाम (जैसे Workspace, aws, gcp ...), शब्द 'leak', pentesting, और मार्कडाउन टैग्स जैसी चीजें अनुवाद न करें। इसके अलावा कोई अतिरिक्त सामग्री न जोड़ें, केवल अनुवाद और मार्कडाउन सिंटैक्स होनी चाहिए।

# Insecure Direct Object References (IDOR)

## Description
Insecure Direct Object References (IDOR) is a vulnerability that occurs when an application exposes a reference to an internal implementation object, such as a file or database key, as a URL or parameter. This allows attackers to manipulate these references to access unauthorized data or perform unauthorized actions.

## Exploitation
To exploit an IDOR vulnerability, an attacker typically needs to identify the vulnerable parameter or URL that exposes the internal object reference. Once identified, the attacker can manipulate the parameter or URL to access or modify sensitive data.

### Steps to exploit IDOR vulnerabilities:
1. Identify the vulnerable parameter or URL that exposes the internal object reference.
2. Manipulate the parameter or URL to access or modify unauthorized data.
3. Test the manipulated parameter or URL to confirm the successful exploitation of the vulnerability.

## Prevention
To prevent IDOR vulnerabilities, it is important to implement proper access controls and authorization mechanisms. This includes:
- Implementing role-based access control (RBAC) to restrict access to sensitive data and actions based on user roles.
- Validating user input and ensuring that only authorized users can access or modify sensitive data.
- Implementing proper session management to prevent session hijacking and unauthorized access.
- Regularly updating and patching the application to fix any known vulnerabilities.

## Example
An example of an IDOR vulnerability is when an application uses sequential numbers as identifiers for sensitive data, such as user profiles. If the application exposes the URL `https://example.com/profile?id=1` to access a user's profile, an attacker can simply manipulate the `id` parameter to access other users' profiles, such as `https://example.com/profile?id=2` or `https://example.com/profile?id=3`. This allows the attacker to view or modify sensitive information of other users without proper authorization.
<h1>Insecure Direct Object References (IDOR)</h1>

<h2>Description</h2>
<p>Insecure Direct Object References (IDOR) एक vulnerability है जो ऐसे समय होती है जब एक एप्लिकेशन एक internal implementation object को उदाहरण के रूप में URL या पैरामीटर के रूप में उजागर करती है, जैसे एक फ़ाइल या डेटाबेस की कुंजी। इससे हमलावर इन संदर्भों को बदलकर अनधिकृत डेटा तक पहुंच सकते हैं या अनधिकृत कार्रवाई कर सकते हैं।</p>

<h2>Exploitation</h2>
<p>IDOR vulnerability का शोधन करने के लिए, आमतौर पर हमलावर को अनुमति नहीं होती है। इसके बाद, हमलावर पैरामीटर या URL को बदलकर संवेदनशील डेटा तक पहुंचने या संशोधित करने के लिए इसे बदल सकता है।</p>

<h3>IDOR vulnerabilities को exploit करने के लिए निम्नलिखित चरण अनुसरण करें:</h3>
<ol>
<li>ऐसा पैरामीटर या URL खोजें जो internal object reference को उजागर करता है।</li>
<li>पैरामीटर या URL को बदलकर अनधिकृत डेटा तक पहुंचें या संशोधित करें।</li>
<li>विकल्पित रूप से शोधित पैरामीटर या URL का परीक्षण करें ताकि vulnerability का सफलतापूर्वक शोधन सत्यापित किया जा सके।</li>
</ol>

<h2>Prevention</h2>
<p>IDOR vulnerabilities को रोकने के लिए, उचित पहुंच नियंत्रण और अधिकृतता तंत्र को लागू करना महत्वपूर्ण है। इसमें शामिल है:</p>
<ul>
<li>उपयोगकर्ता भूमिका आधारित पहुंच नियंत्रण (RBAC) का लागू करना, ताकि उपयोगकर्ता भूमिकाओं के आधार पर संवेदनशील डेटा और कार्रवाई की पहुंच प्रतिबंधित हो सके।</li>
<li>उपयोगकर्ता इनपुट को मान्यता प्रदान करना और सुनिश्चित करना कि केवल अधिकृत उपयोगकर्ता ही संवेदनशील डेटा तक पहुंच सकते हैं या उसे संशोधित कर सकते हैं।</li>
<li>उचित सत्र प्रबंधन को लागू करना ताकि सत्र हिजैकिंग और अनधिकृत पहुंच को रोका जा सके।</li>
<li>ज्ञात किसी भी विकल्पित संवेदनशीलता को ठीक करने के लिए नियमित रूप से अनुप्रयोग अपडेट और पैच करना।</li>
</ul>

<h2>Example</h2>
<p>IDOR vulnerability का एक उदाहरण यह है कि जब एक एप्लिकेशन संवेदनशील डेटा के लिए पहचानकर्ता के रूप में अनुक्रमिक संख्याओं का उपयोग करती है। यदि एप्लिकेशन उपयोगकर्ता के प्रोफ़ाइल तक पहुंच के लिए URL `https://example.com/profile?id=1` का उपयोग करती है, तो हमलावर `id` पैरामीटर को संशोधित करके अन्य उपयोगकर्ताओं के प्रोफ़ाइल तक पहुंच सकता है, जैसे `https://example.com/profile?id=2` या `https://example.com/profile?id=3`। इससे हमलावर को अनुमति के बिना अन्य उपयोगकर्ताओं की संवेदनशील जानकारी को देखने या संशोधित करने की सुविधा होती है।</p>
GET /api_v1/messages?user_id=YOUR_USER_ID&user_id=ANOTHER_USERS_ID

या यह:

GET /api_v1/messages?user_id=ANOTHER_USERS_ID&user_id=YOUR_USER_ID

या पैरामीटर्स को सूची के रूप में प्रदान करें:

GET /api_v1/messages?user_ids[]=YOUR_USER_ID&user_ids[]=ANOTHER_USERS_ID

ब्लाइंड IDORs

कभी-कभी IDOR के प्रभावित अंत-बिंदु सीधे लीक हुए जानकारी के साथ प्रतिक्रिया नहीं करते हैं। वे बजाय इसके अन्य स्थानों पर जानकारी लीक कर सकते हैं: निर्यात फ़ाइलों, ईमेल और शायद ही टेक्स्ट अलर्ट में।

अनुरोध विधि बदलें

यदि एक अनुरोध विधि काम नहीं करती है, तो आपके पास उसके बजाय अन्य कई विधियाँ हैं जिन्हें आप आजमा सकते हैं: GET, POST, PUT, DELETE, PATCH...

एक आम चाल है कि POST को PUT या उलटा करके बदल दें: यही पहुंच नियंत्रण लागू नहीं हो सकते हैं!

अनुरोधित फ़ाइल प्रकार बदलें

कभी-कभी, अनुरोधित फ़ाइल के फ़ाइल प्रकार को बदलने से सर्वर अधिकृतता को अलग तरीके से प्रसंस्करण करने की संभावना होती है। उदाहरण के लिए, अनुरोध URL के अंत में .json जोड़ने का प्रयास करें और देखें कि क्या होता है।

IDORs के प्रभाव को बढ़ाने के तरीके

पहले महत्वपूर्ण IDORs

हमेशा पहले महत्वपूर्ण कार्यक्षमताओं में IDORs की तलाश करें। लिखने और पढ़ने वाले IDORs दोनों का उच्च प्रभाव हो सकता है।

राज्य-परिवर्तन (लिखने) वाले IDORs के मामले में, पासवर्ड रीसेट, पासवर्ड बदलें, खाता पुनर्प्राप्ति IDORs आमतौर पर सबसे अधिक व्यावसायिक प्रभाव होता है। (कहें, "ईमेल सदस्यता सेटिंग्स बदलें" IDOR की तुलना में।)

गैर-राज्य-परिवर्तन (पढ़ने) वाले IDORs के मामले में, ऐप्लिकेशन में संवेदनशील जानकारी को संभालने वाली कार्यक्षमताओं की तलाश करें। उदाहरण के लिए, सीधे संदेश, संवेदनशील उपयोगकर्ता जानकारी और निजी सामग्री को संभालने वाली कार्यक्षमताओं की तलाश करें। इस जानकारी का उपयोग करने वाली ऐप्लिकेशन की कौन सी कार्यक्षमताएं हैं और उसके अनुसार IDORs की तलाश करें।

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥