एलडीएपी इंजेक्शन हमले क्या हैं और उन्हें कैसे रोका जाए
कोड इंजेक्शन हमले सबसे आम और सफल ऑनलाइन हमलों में से कुछ हैं। वेब एप्लिकेशन, मोबाइल ऐप, डेस्कटॉप प्रोग्राम, एपीआई एस, डेटाबेस , वेब सर्वर आदि सभी कोड इंजेक्शन हमलों के प्रति संवेदनशील हो सकते हैं यदि वे उचित सत्यापन के बिना उपयोगकर्ता इनपुट स्वीकार करते हैं।
सबसे आम कोड इंजेक्शन हमलों में से एक एलडीएपी इंजेक्शन है, और हम इस पोस्ट में इसी पर चर्चा करने जा रहे हैं। हम देखेंगे कि एलडीएपी क्या है, एलडीएपी इंजेक्शन कैसे काम करता है, और इस हमले को कम करने के बारे में सुझाव देंगे।
एलडीएपी क्या है?
एलडीएपी का मतलब लाइटवेट डायरेक्ट्री एक्सेस प्रोटोकॉल है। यह एक निर्देशिका सेवा प्रोटोकॉल है जिसका उपयोग एलडीएपी डेटाबेस के भीतर निर्देशिका लिस्टिंग, आमतौर पर उपयोगकर्ता नाम और पासवर्ड देखने के लिए किया जाता है। जैसा कि इसके नाम से पता चलता है, एलडीएपी बहुत हल्का है, और इस वजह से, यह बहुत अच्छी तरह से स्केल करता है और आज बड़ी संख्या में संगठनों द्वारा इसका उपयोग किया जाता है।
एलडीएपी निर्देशिका में एलडीएपी स्कीमा पर आधारित विशेषताएँ शामिल होती हैं। स्कीमा/निर्देशिका में प्रत्येक प्रविष्टि को एक विशिष्ट पहचानकर्ता प्रदान किया जाता है जिसे विशिष्ट नाम (डीएन) कहा जाता है। नीचे नकली उपयोगकर्ता, जॉनीनी थेगाय के लिए एक प्रविष्टि का उदाहरण दिया गया है।
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
कई संगठन एलडीएपी का उपयोग करते हैं केवल हस्ताक्षर के ऊपर कर्मचारियों को हर एक ऐप में साइन इन करने की आवश्यकता के बिना कॉर्पोरेट नेटवर्क के भीतर कई ऐप्स तक पहुंच प्रदान करना। लेकिन केवल उपयोगकर्ता क्रेडेंशियल्स को मान्य करने से परे, एलडीएपी का उपयोग जानकारी के लिए प्रश्नों का उत्तर देने के लिए किया जाता है और इसमें एलडीएपी डेटाबेस को प्रबंधित करने के लिए उपयोग किए जाने वाले विभिन्न कमांड भी शामिल होते हैं। और यह समझ में आता है, एलडीएपी डेटाबेस में मौजूद जानकारी की मात्रा (केवल उपयोगकर्ता नाम और पासवर्ड से परे) को देखते हुए - जो एलडीएपी इंजेक्शन हमलों के खतरों को भी उजागर करती है।
एलडीएपी प्रश्न
सर्वर पर सबमिट की गई एलडीएपी क्वेरीज़ को एलडीएपी खोज फ़िल्टर के रूप में संदर्भित किया जाता है और उपसर्ग नोटेशन का उपयोग करके निर्मित किया जाता है। एक सामान्य एलडीएपी क्वेरी में आमतौर पर निम्नलिखित शामिल होते हैं:
- सत्र कनेक्शन : उपयोगकर्ता एलडीएपी सर्वर से जुड़ता है।
- अनुरोध : उपयोगकर्ता सर्वर पर एक क्वेरी सबमिट करता है (उदाहरण के लिए, एक उपयोगकर्ता लुकअप)।
- प्रतिक्रिया : एलडीएपी प्रोटोकॉल निर्देशिका पर सवाल उठाता है, अनुरोधित जानकारी का पता लगाता है, और इसे उपयोगकर्ता को प्रदान करता है।
- समापन : उपयोगकर्ता एलडीएपी सर्वर से डिस्कनेक्ट हो जाता है।
एक बार डेटाबेस के अंदर, उपयोगकर्ता एलडीएपी सर्वर पर संचालन निष्पादित करने के लिए क्वेरीज़ तैयार कर सकते हैं। नीचे उन सामान्य परिचालनों की सूची दी गई है जिन्हें एलडीएपी डेटाबेस/सर्वर निष्पादित कर सकता है:
- जोड़ना : डेटाबेस में नया डेटा जोड़ने के लिए उपयोग किया जाता है।
- बाइंड (प्रमाणित) : प्रमाणीकरण और एन्क्रिप्शन के लिए उपयोग किया जाता है।
- मिटाना : डेटाबेस से डेटा हटाने के लिए उपयोग किया जाता है।
- खोजें और तुलना करें : खोज ऑपरेशन का उपयोग प्रविष्टियों को खोजने और पढ़ने के लिए किया जाता है।
- संशोधित : एलडीएपी क्लाइंट द्वारा यह अनुरोध करने के लिए उपयोग किया जाता है कि एलडीएपी सर्वर मौजूदा प्रविष्टियों में परिवर्तन करे
- अनबाइंड : कनेक्शन बंद करने के लिए उपयोग किया जाता है।
अपनी क्वेरीज़ में, एलडीएपी निम्नलिखित मेटाएक्टर्स का समर्थन करता है:
- & बूलियन और
- | बूलियन या
- ! बूलियन नहीं
- = बराबर
- ~= लगभग
- >= से अधिक
- <= से कम
- * कोई भी पात्र
- () कोष्ठकों को समूहीकृत करना
यहां एलडीएपी प्रश्नों के कुछ उदाहरण दिए गए हैं।
एक सामान्य उपयोगकर्ता प्रमाणीकरण अनुरोध (यानी, उपयोगकर्ता लॉगिन) इस तरह दिखेगा:
|_+_|
यदि भेजे गए क्रेडेंशियल एलडीएपी सर्वर पर मौजूद क्रेडेंशियल से मेल खाते हैं, तो उपयोगकर्ता जॉनी को प्रमाणित किया जाएगा।
अन्य उदाहरण होंगे:
उन सभी उपयोगकर्ताओं को ढूंढें जिन्हें अगली बार लॉग इन करने पर अपना पासवर्ड बदलने की आवश्यकता है:
|_+_|
यह क्वेरी डेटाबेस में पाए गए सभी उपयोगकर्ताओं की एक सूची लौटाएगी जिनके पास मान के साथ pwdLastSet विशेषता है: 0।
उनके विवरण में 'पास' या 'पीडब्ल्यूडी' वाले सभी उपयोगकर्ताओं को ढूंढें
|_+_|
यह क्वेरी डेटाबेस में पाए गए सभी उपयोगकर्ताओं की एक सूची लौटाएगी जिनके पास पास या पीडब्ल्यूडी विशेषताएँ सूचीबद्ध हैं।
एलडीएपी इंजेक्शन
अब जब हम समझ गए हैं कि एलडीएपी क्या है और यह कैसे काम करता है, तो आइए अपना ध्यान एलडीएपी इंजेक्शन पर दें।
एलडीएपी इंजेक्शन हमला आपके संगठन के लिए बिल्कुल विनाशकारी हो सकता है। ऐसा इसलिए है क्योंकि एलडीएपी डेटाबेस में उच्च-मूल्य वाली जानकारी मौजूद हो सकती है। हम नाम, उपयोगकर्ता नाम, पासवर्ड, ईमेल पते, टेलीफोन नंबर, नौकरी के शीर्षक, अनुमतियां आदि के बारे में बात कर रहे हैं।
इसमें यह तथ्य भी जोड़ें कि एलडीएपी इंजेक्शन हमले के कई मायने हो सकते हैं। दूसरे शब्दों में, एलडीएपी इंजेक्शन हमले बहु-वेक्टर होते हैं। एक हमलावर कई अलग-अलग तरीकों से असुरक्षित एलडीएपी सिस्टम का शोषण कर सकता है। वे दुर्भावनापूर्ण कोड डाल सकते हैं जो उन्हें डेटाबेस में मौजूद सभी उपयोगकर्ता नाम और पासवर्ड देखने की अनुमति देता है। या वे सिस्टम प्रशासक की अनुमति के साथ एलडीएपी डेटाबेस में खुद को एक उपयोगकर्ता के रूप में जोड़ सकते हैं। एक हमलावर उपयोगकर्ता नाम और पासवर्ड की आवश्यकता को पूरी तरह से दरकिनार भी कर सकता है। एलडीएपी इंजेक्शन हमले का सार सर्वर को एक क्वेरी प्रदान करना है जो सर्वर को क्वेरी को सही या वैध के रूप में मान्य करने के लिए प्रेरित करेगा।
एलडीएपी इंजेक्शन हमले को सफल या विफल बनाने के लिए कई कारक भूमिका निभाते हैं: उदाहरण के लिए, हमलावर का ज्ञान और कौशल स्तर, संगठन के आईटी सुरक्षा उपाय और एलडीएपी डेटाबेस में मौजूद जानकारी। लेकिन किसी भी घटना में, एक सफल एलडीएपी इंजेक्शन हमला आम तौर पर हमलावर के लिए एक बड़ी जीत और समझौता करने वाले संगठन के लिए एक महत्वपूर्ण दर्द होगा।
आइए कुछ उदाहरण देखें कि इसे कैसे हासिल किया जा सकता है।
एलडीएपी इंजेक्शन हमलों के उदाहरण
'&' मेटाकैरेक्टर के साथ प्रमाणीकरण को दरकिनार करना
आइए उपयोगकर्ता लॉगिन के ऊपर अपना पहला क्वेरी उदाहरण लें:
|_+_|
एक कमजोर एलडीएपी डेटाबेस पर, एक दुर्भावनापूर्ण अभिनेता उपयोगकर्ता और क्वेरी के पासवर्ड विशेषताओं के बीच मेटाकैरेक्टर डालकर एक दुर्भावनापूर्ण क्वेरी तैयार करके प्रमाणीकरण तंत्र को पूरी तरह से बायपास कर सकता है। वह इस तरह दिखेगा:
|_+_|
क्योंकि LDAP केवल पहले दो विशेषताओं को पार्स करता है, कथन इसके बराबर हो जाता है:
|_+_|
यदि उपरोक्त क्वेरी को एक कमजोर एलडीएपी डेटाबेस/सर्वर पर निष्पादित किया गया था, तो परिणाम सत्य के रूप में वापस आ जाएगा, और हमारे दुर्भावनापूर्ण उपयोगकर्ता 'जो कुछ भी' प्रमाणित किया जाएगा।
'*' और '|' मेटाकैरेक्टर्स के साथ प्रमाणीकरण को दरकिनार करना
आइए ऊपर दिए गए समान उदाहरण का उपयोग करें ('सीएन' का अर्थ सामान्य नाम है):
|_+_|
हम * और | का उपयोग करके उपरोक्त जैसा ही प्राप्त कर सकते हैं मेटाकैरेक्टर. यदि हम उपयोगकर्ता नाम मान |_+_| पर सेट करते हैं, तो खोज फ़िल्टर बन जाता है:
|_+_|
चूँकि LDAP केवल पहली दो विशेषताओं को पार्स करता है, इसलिए उपरोक्त क्वेरी हमेशा सत्य के रूप में लौटाई जाती है। यह क्वेरी किसी हमलावर को उचित इनपुट सत्यापन के बिना एलडीएपी के प्रमाणीकरण तंत्र को बायपास करने में सक्षम बनाएगी।
डेटाबेस में सभी उपयोगकर्ताओं को '*' के साथ सूचीबद्ध करना
नीचे दी गई क्वेरी एक एलडीएपी खोज क्वेरी है।
|_+_|
उपरोक्त उपसर्ग फ़िल्टर नोटेशन क्वेरी को दिए गए उपयोगकर्ता नाम और पासवर्ड के साथ एक एलडीएपी नोड खोजने का निर्देश देता है। हालाँकि, यदि एलडीएपी डेटाबेस एलडीएपी इंजेक्शन के प्रति संवेदनशील है, तो एक हमलावर उपरोक्त उदाहरण में सीएन और पासवर्ड को * से प्रतिस्थापित कर सकता है, जैसे:
|_+_|
इससे क्वेरी का इच्छित अर्थ बदल जाएगा, और डेटाबेस सभी उपयोगकर्ताओं की एक सूची लौटा देगा।
एलडीएपी इंजेक्शन से जुड़े जोखिम
एलडीएपी इंजेक्शन हमलों से होने वाले नुकसान अन्य इंजेक्शन हमलों के समान हैं। किसी सर्वर में कोड इंजेक्ट करने का तात्पर्य जानकारी प्राप्त करने और जानकारी को संशोधित करने की क्षमता से है। इसलिए, एलडीएपी इंजेक्शन हमलों के कारण निम्नलिखित हो सकते हैं:
संवेदनशील डेटा लीक हो रहा है
जैसा कि हमने अपने पिछले उदाहरण में देखा, अनपेक्षित जानकारी को सूचीबद्ध करने के लिए एक कमजोर सर्वर पर भेजे गए एलडीएपी प्रश्नों में हेरफेर करना संभव है। उपरोक्त हमारे उदाहरण में, हमने दिखाया कि कैसे दुर्भावनापूर्ण रूप से तैयार की गई क्वेरी डेटाबेस को डेटाबेस में सभी उपयोगकर्ताओं की सूची आउटपुट करने के लिए प्रेरित कर सकती है।
हालाँकि, यदि सर्वर एलडीएपी इंजेक्शन के प्रति संवेदनशील है, तो इसे अन्य संवेदनशील डेटा को आउटपुट करने के लिए हेरफेर किया जा सकता है। एलडीएपी डेटाबेस केवल उपयोगकर्ता नाम और पासवर्ड की तुलना में अधिक डेटा संग्रहीत करते हैं - जो लीक होने पर पहले से ही काफी नुकसानदेह होगा। उसके कारण, एक हमलावर ईमेल पते, टेलीफोन नंबर और यहां तक कि सामाजिक सुरक्षा नंबर जैसी संवेदनशील जानकारी प्राप्त करने के लिए एलडीएपी क्वेरी तैयार कर सकता है। इसलिए समझौता किए गए खातों और कंपनी के संसाधनों तक अनधिकृत पहुंच (जो विनाशकारी हो सकती है) के अलावा, एलडीएपी इंजेक्शन से पहचान की चोरी भी हो सकती है, लक्षित फ़िशिंग अभियान, आदि। गंदा।
सेवा हमलों का इनकार
एलडीएपी इंजेक्शन हमले भी सीधे और बहुत प्रभावी हो सकते हैं सेवा से इनकार (DoS) हमले . यह हमला उस एप्लिकेशन के विरुद्ध किया जा सकता है जो डायरेक्ट्री सर्वर के साथ इंटरैक्ट करता है या डायरेक्ट्री सर्वर के विरुद्ध ही किया जा सकता है। यदि कोई हमलावर पर्याप्त दुर्भावनापूर्ण एलडीएपी क्वेरीज़ तैयार कर सकता है जो अत्यधिक समय लेने वाली और संसाधन-भूख वाली हैं, तो यह सभी उपलब्ध संसाधनों का उपभोग कर सकता है ताकि अन्य अनुरोध प्राप्त न हो सकें।
इसके अलावा, मान लीजिए कि एप्लिकेशन को खोज क्वेरी से लौटाई गई सभी प्रविष्टियों को मेमोरी में रखने के लिए डिज़ाइन किया गया था। उस स्थिति में, अपेक्षा से अधिक प्रविष्टियाँ लौटाने के इरादे से की गई क्वेरी के कारण एप्लिकेशन उस अनुरोध को संसाधित करने के लिए अपनी सभी उपलब्ध मेमोरी का उपभोग कर सकता है। इसका परिणाम यह होगा कि एप्लिकेशन क्रैश हो जाएगा।
परिवर्तित फ़ाइलें और डेटा भ्रष्टाचार
हमने देखा कि कैसे दुर्भावनापूर्ण ढंग से तैयार की गई क्वेरी हमलावर के लिए अनपेक्षित डेटा को उजागर कर सकती है। लेकिन डेटाबेस को अनपेक्षित फ़ाइलों को अपडेट करने के लिए धोखा देना भी संभव है, या तो जंक के साथ, फ़ाइल को दूषित करने के लिए या हमलावर द्वारा सेट किए गए पासवर्ड को संपादित करके। यदि हमलावर एप्लिकेशन को गलत प्रविष्टियों की खोज करने के लिए धोखा दे सकता है, तो वे गलत प्रविष्टियों को अपडेट करने के लिए भी उसे धोखा दे सकते हैं, जिससे डेटा हानि या भ्रष्टाचार हो सकता है।
एलडीएपी इंजेक्शन हमलों को कैसे रोकें
अब जब आप खतरों को जानते हैं, तो यहां कुछ सावधानियां दी गई हैं जिन्हें आप एलडीएपी इंजेक्शन हमलों को रोकने के लिए अपना सकते हैं।
इनपुट सत्यापन लागू करें
दूसरे शब्दों में: उपयोगकर्ता इनपुट पर भरोसा न करें। उपयोगकर्ता के प्रकार (प्रमाणीकृत, आंतरिक या सार्वजनिक) के बावजूद, उस इनपुट को अविश्वसनीय मानें। यदि संभव हो, तो अपने एप्लिकेशन को उपयोगकर्ता-नियंत्रणीय डेटा को एलडीएपी क्वेरी में कॉपी करने से रोकें। यदि यह संभव नहीं है, तो अनुमत स्ट्रिंग्स या वर्णों की सूची के विरुद्ध उपयोगकर्ता इनपुट को मान्य करना सुनिश्चित करें। और यह सत्यापन हमेशा सर्वर-साइड पर होना चाहिए, भले ही इनपुट पहले क्लाइंट-साइड पर सत्यापित किया गया हो।
आप सामाजिक सुरक्षा नंबर, फ़ोन नंबर और ईमेल पते जैसे संरचित इनपुट को मान्य करने के लिए एक मजबूत नियमित अभिव्यक्ति पैटर्न का उपयोग कर सकते हैं। उपयोगकर्ता नाम जैसे इनपुट को वर्णों के स्वीकृत सेट के विरुद्ध मान्य किया जाना चाहिए जो एलडीएपी मेटाकैरेक्टर को बाहर करता है। जिन पात्रों को ब्लॉक किया जाना चाहिए उनमें शामिल हैं ( ) ;, * | &= और खाली स्थान के
एन्कोडिंग के साथ इनपुट से बचें
उपयोगकर्ता-नियंत्रित इनपुट स्ट्रिंग से बचें ताकि इनपुट में कोई भी नियंत्रण वर्ण एलडीएपी खोज फ़िल्टर के इच्छित अर्थ को न बदल सके। उदाहरण के लिए, जावा एप्लिकेशन में, एलडीएपी क्वेरी के मेटाएक्टर्स को बैकस्लैश के साथ एस्केप कैरेक्टर के रूप में दर्ज किया जा सकता है। इस तरह, अविश्वसनीय इनपुट को खोज क्वेरी में शाब्दिक स्ट्रिंग मान के रूप में जोड़ा जाता है, न कि एलडीएपी विधेय के रूप में।
बचने के लिए मौजूदा पुस्तकालयों का उपयोग करने की भी दृढ़ता से अनुशंसा की जाती है - अपना खुद का न लिखें, क्योंकि आप अनपेक्षित कमजोरियों को पेश करने का जोखिम उठाते हैं।
न्यूनतम विशेषाधिकार का सिद्धांत लागू करें
कम से कम विशेषाधिकार का सिद्धांत एक आईटी सुरक्षा नीति है जो बताती है कि किसी उपयोगकर्ता को केवल न्यूनतम आवश्यक अधिकार ही सौंपना चाहिए जिसके लिए संसाधन तक पहुंच की आवश्यकता होती है। वे अधिकार भी कम से कम संभव अवधि के लिए प्रभावी होने चाहिए। विशेष रूप से, किसी एप्लिकेशन में निर्देशिका को बाइंड करने के लिए उपयोग किए जाने वाले एलडीएपी खाते की पहुंच प्रतिबंधित होनी चाहिए। एलडीएपी सर्वर के विरुद्ध केवल अधिकृत एलडीएपी क्वेरीज़ निष्पादित की जानी चाहिए।
लपेटें
तो ये एलडीएपी इंजेक्शन हमलों के अंदर और बाहर हैं। वे बहुत बुरे हैं, और, कई (यदि अधिकतर नहीं) ऑनलाइन हमलों की तरह, उनके परिणाम विनाशकारी हो सकते हैं। जैसा कि अक्सर इस प्रकार के हमलों के मामले में होता है, उपयोगकर्ता इनपुट को साफ़ करना यहां सबसे महत्वपूर्ण शमन उपाय है। अपने उपयोगकर्ताओं के इनपुट को सेनिटाइज़ न करना आपके घर के सामने के दरवाज़े को अनलॉक करने जैसा है - कोई भी बस घुंडी घुमा सकता है और अंदर आ सकता है। यह वह नहीं है जो आप वेब एप्लिकेशन/सर्वर के साथ चाहते हैं। उम्मीद है, ऊपर बताए गए सुझाव आपको उस परिदृश्य से बचने में मदद करेंगे।
हमेशा की तरह, सुरक्षित रहें।