अगर कोई एक चीज साइबर अपराधियों को पसंद है, तो वह डेटा है। चोरी किए गए डेटा अवैध बाजारों पर अत्यधिक मूल्यवान हैं, और दुर्भावनापूर्ण अभिनेताओं के लिए निजी डेटाबेस तक पहुंच उनके उपक्रमों से लाभ कमाने का एक शानदार तरीका हो सकता है। निजी डेटा तक पहुँचने का एक तरीका SQL इंजेक्शन के माध्यम से है। लेकिन SQL इंजेक्शन वास्तव में क्या है, यह कैसे काम करता है और क्या इस तरह के हमले को रोका जा सकता है?
SQL इंजेक्शन क्या है?
सॉफ्टवेयर प्रोग्राम कार्य करने के लिए कोड पर निर्भर करते हैं। कोड भी वह भाषा है जिसका उपयोग मशीनें संचालन करने के लिए करती हैं, और कई रूपों (पायथन, जावास्क्रिप्ट, सी ++, आदि) में आ सकती हैं। यह अक्सर कोड के माध्यम से होता है कि साइबर अपराधी पीड़ितों पर हमला कर सकते हैं, और SQL इंजेक्शन (या SQLis) अलग नहीं हैं। ये दुर्भावनापूर्ण अभिनेताओं को हानिकारक कोड को SQL कथन में "इंजेक्ट" करने की अनुमति देते हैं।
आइए सबसे पहले जानें कि SQL का क्या मतलब है।
SQL स्ट्रक्चर्ड क्वेरी लैंग्वेज के लिए है। यह दूसरी तरह की प्रोग्रामिंग लैंग्वेज है डेटाबेस के साथ काम करते समय विशेष रूप से उपयोग किया जाता है। 1970 के दशक में IBM द्वारा विकसित, SQL डेटाबेस जानकारी में हेरफेर, स्टोर और पुनः प्राप्त कर सकता है। दुनिया भर में कई डेटाबेस संचार प्रणालियाँ SQL का उपयोग करती हैं, इसलिए इसमें कोई आश्चर्य की बात नहीं है कि डेटाबेस को लक्षित करने के लिए खतरे के अभिनेताओं ने इसका दुरुपयोग करने के तरीके तैयार किए हैं।
SQL स्टेटमेंट डेटाबेस कम्युनिकेशन का एक महत्वपूर्ण हिस्सा है। एक SQL कथन एक कमांड है जो कई अलग-अलग रूपों में आता है। कुछ डेटा को बदलते हैं, कुछ इसे पुनर्प्राप्त या हटाते हैं, और कुछ डेटाबेस की संरचना को ही बदल सकते हैं। जब SQL इंजेक्शन होता है, तो दुर्भावनापूर्ण कोड को SQL स्टेटमेंट में इंजेक्ट किया जाता है।
बेशक, एक वेबसाइट या एप्लिकेशन को SQL इंजेक्शन के लिए SQL प्रोग्रामिंग भाषा का उपयोग करने की आवश्यकता है। लेकिन यह अटैक वेक्टर कैसे काम करता है?
मान लीजिए कि आपके पास एक एप्लिकेशन द्वारा उपयोग की जाने वाली कोड की एक नियमित पंक्ति है। जब कोई साइबर अपराधी दुर्भावनापूर्ण SQL इंजेक्शन डालता है, तो कोड की एक पंक्ति जोड़ी जाती है जो उन प्रश्नों में हस्तक्षेप कर सकती है जो एप्लिकेशन स्वयं अपने डेटाबेस को भेजता है। ऐसा करने से, डेटाबेस का इस तरह से शोषण किया जा सकता है जिससे खतरे वाले अभिनेता को डेटा देखने की अनुमति मिलती है, जिस तक उनकी पहुंच नहीं होगी।
यहां से साइबर क्रिमिनल सीधे तौर पर या फिर उसका फायदा उठाने के लिए डेटा चुरा सकता था इसे डार्क वेब या कहीं और बेच दें. वे लक्षित डेटाबेस से डेटा को बदल, जोड़ या हटा भी सकते थे। एसक्यूएल इंजेक्शन हमले की डिग्री के आधार पर, बहुत अधिक नुकसान हो सकता है। यदि भुगतान विवरण, सामाजिक सुरक्षा नंबर, या अन्य प्रकार के निजी डेटा तक पहुँचा जाता है, तो बहुत से लोगों के शोषण का खतरा हो सकता है।
दूसरी ओर, यदि हमलावर डेटाबेस को महत्वपूर्ण रूप से बदलने का प्रबंधन करता है, तो डेटा का बड़ा हिस्सा स्थायी रूप से खो सकता है। कुल मिलाकर, SQL इंजेक्शन केवल एक हमले के माध्यम से पूरे डेटाबेस को नष्ट कर सकता है। जबकि वे 1998 के आसपास रहे हैं, वे अभी भी हमारे वर्तमान समय में प्रासंगिक और खतरनाक हैं।
जैसा कि द्वारा पाया गया ओपन वेब एप्लीकेशन सिक्योरिटी प्रोजेक्ट (OWASP)2021 में इस तरह के हमले की उपस्थिति के लिए अनुप्रयोगों का परीक्षण करते समय SQL इंजेक्शन के 274,000 उदाहरणों की पहचान की गई थी।
SQL इंजेक्शन के प्रकार
SQL इंजेक्शन के कुछ अलग प्रकार हैं, जिनमें मुख्य तीन ब्लाइंड, इन-बैंड और आउट-ऑफ-बैंड इंजेक्शन हैं।
एक ब्लाइंड (या अनुमानित) SQL इंजेक्शन तब होता है जब एप्लिकेशन या साइट पर हमला किया जाता है इंजेक्शन, लेकिन प्रदान किए गए HTTP (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल) प्रतिक्रियाओं में इसका परिणाम नहीं है एसक्यूएल क्वेरी। दूसरे शब्दों में, आक्रमण किए गए डेटाबेस से कोई डेटा साइबर अपराधी को नहीं दिया जाता है। तो, इसका क्या मतलब है?
एक अंधे SQL इंजेक्शन का उपयोग करते हुए, एक हमलावर लक्ष्य सर्वर को डेटा भेजता है और फिर HTTP प्रतिक्रिया की प्रकृति के माध्यम से डेटाबेस के बारे में कुछ चीजों को समझ सकता है। इसके शीर्ष पर, HTTP प्रतिक्रिया से जुड़े कारक हमलावर को डेटाबेस तक पहुँचने के लिए एक और अधिक प्रभावी SQL इंजेक्शन बनाने में मदद कर सकते हैं।
ब्लाइंड एसक्यूएल इंजेक्शन के दो प्रमुख प्रकार हैं, जिन्हें टाइम-बेस्ड और बूलियन के रूप में जाना जाता है। ये दोनों वेरिएंट अपने स्वभाव में काफी समान हैं। दोनों एक बूलियन और समय-आधारित SQL इंजेक्शन हाँ या कोई उत्तर प्रश्नों की एक सरणी भेजता है, हालांकि बाद वाले को प्रश्नों का उत्तर देने से पहले थोड़ी देर प्रतीक्षा करने के लिए डेटाबेस की आवश्यकता होगी।
अगला, इन-बैंड SQL इंजेक्शन हैं। इन-बैंड SQL इंजेक्शन ऑपरेटर को हमले करने और उसी चैनल का उपयोग करके वांछित परिणाम प्राप्त करने की अनुमति देता है। इन-बैंड SQL इंजेक्शन सबसे अधिक उपयोग किए जाते हैं, सिर्फ इसलिए कि वे इस तथ्य के कारण सबसे आसान हैं कि उन्हें केवल एक चैनल की आवश्यकता होती है।
अंत में, आपको एक आउट-ऑफ़-बैंड SQL इंजेक्शन मिला है। यह अनिवार्य रूप से एक इन-बैंड SQL इंजेक्शन का वैकल्पिक संस्करण है, जिसमें हमलावर एक चैनल का उपयोग करके कुल मिलाकर हमला नहीं कर सकता है। वैकल्पिक रूप से, यदि लक्ष्य सर्वर परिणाम प्रदान करने के लिए पर्याप्त तेज़ नहीं है, तो एक हमले को आउट-ऑफ-बैंड SQL इंजेक्शन का सहारा लेने की आवश्यकता हो सकती है।
ये कारक प्रक्रिया को थोड़ा और कठिन बनाते हैं, जिसका अर्थ है कि इसे सफलता के लिए लक्षित डेटाबेस पर सक्रिय होने के लिए कुछ विशेषताओं पर निर्भर होना चाहिए। उदाहरण के लिए, जिस प्लेटफॉर्म पर हमला किया जा रहा है, उसमें इनपुट सैनिटाइजेशन की कमी होनी चाहिए। इस वजह से, इन-बैंड SQL इंजेक्शन आउट-ऑफ़-बैंड SQL इंजेक्शन की तुलना में कहीं अधिक सामान्य हैं। लेकिन वे अभी भी होते हैं।
क्या SQL इंजेक्शन से बचा जा सकता है?
SQL इंजेक्शन नियमित व्यक्तियों की तुलना में व्यवसायों और संगठनों के लिए अधिक चिंता का विषय है। लेकिन ऐसी चीजें हैं जो ये संभावित लक्ष्य इस तरह के हमले की चपेट में आने की संभावना को कम करने के लिए कर सकते हैं।
SQL इंजेक्शन से बचने के लिए इनपुट सैनिटाइजेशन प्रमुख सामान्य अभ्यास है। यह एक फ़िल्टरिंग प्रक्रिया है जो खतरनाक वर्णों के इनपुट को स्कैन और साफ़ करती है। यदि SQL कोड को साफ करने से पहले संसाधित किया जाता है, तो SQL इंजेक्शन की संभावना स्वाभाविक रूप से बढ़ जाएगी।
इसके अतिरिक्त, पैरामिट्रीकृत प्रश्न आपको SQL इंजेक्शन से बचने में मदद कर सकते हैं। ये ऐसे प्रश्न हैं जिन्हें निष्पादन के लिए कम से कम एक पैरामीटर की आवश्यकता होती है। मापदंडों को लागू करने से साइबर अपराधियों के लिए SQL इंजेक्शन हमले को सफलतापूर्वक अंजाम देना कठिन हो जाता है।
लेकिन SQL इंजेक्शन को रोकने का कोई अचूक तरीका नहीं है। जैसा कि कई साइबर हमलों के मामले में होता है, अपने डिवाइस और सिस्टम को पूरी तरह से एयरटाइट रखना लगभग असंभव है। जब SQL इंजेक्शन की बात आती है, तो आप जो सबसे अच्छा कर सकते हैं, वह है सभी इनपुट्स को साफ करना और पैरामीटरयुक्त प्रश्नों को स्थापित करना।
एसक्यूएल इंजेक्शन वृद्ध हैं, लेकिन फिर भी एक खतरा है
जबकि SQL इंजेक्शन लगभग 20 से अधिक वर्षों से मौजूद हैं, फिर भी वे कई वेबसाइटों और एप्लिकेशन के लिए जोखिम पैदा करते हैं। इसलिए इस प्रकार के हमले को ध्यान में रखना और इसे रोकने के लिए आवश्यक कदम उठाना एक अच्छा विचार है, क्योंकि यह भविष्य में किसी बिंदु पर आपके डेटाबेस के लिए खतरा पैदा कर सकता है।