javascript injection tutorial
जावास्क्रिप्ट इंजेक्शन क्या है?
जावास्क्रिप्ट सबसे लोकप्रिय तकनीकों में से एक है और इसका उपयोग वेब पेज और वेब एप्लिकेशन के लिए सबसे अधिक किया जाता है।
इसका उपयोग विभिन्न वेबसाइट फ़ंक्शंस को साकार करने के लिए किया जा सकता है। हालांकि, यह तकनीक कुछ सुरक्षा मुद्दों को ला सकती है, जिसके बारे में डेवलपर और परीक्षक को सचेत होना चाहिए।
जावास्क्रिप्ट का उपयोग न केवल अच्छे उद्देश्यों के लिए किया जा सकता है, बल्कि कुछ दुर्भावनापूर्ण हमलों के लिए भी किया जा सकता है। उनमें से एक जावास्क्रिप्ट इंजेक्शन है। JS इंजेक्शन का सार जावास्क्रिप्ट कोड को इंजेक्ट करना है, जो क्लाइंट-साइड से चलाया जाएगा।
इस ट्यूटोरियल में, हम सीखेंगे कि कैसे जावास्क्रिप्ट इंजेक्शन की जाँच की जा सकती है, JS इंजेक्शन कैसे किया जा सकता है और जेएस इंजेक्शन क्या परिणाम ला सकता है।
आप क्या सीखेंगे:
- जावास्क्रिप्ट इंजेक्शन के जोखिम
- जेएस इंजेक्शन का परीक्षण करना क्यों महत्वपूर्ण है?
- अन्य हमलों के साथ तुलना
- जावास्क्रिप्ट इंजेक्शन के लिए जाँच
- पैरामीटर संशोधन
- वेबसाइट का डिज़ाइन संशोधन
- जावास्क्रिप्ट इंजेक्शन के खिलाफ परीक्षण कैसे करें
- इस हमले के खिलाफ संभावित संरक्षण
- निष्कर्ष
- अनुशंसित पाठ
जावास्क्रिप्ट इंजेक्शन के जोखिम
जेएस इंजेक्शन एक दुर्भावनापूर्ण उपयोगकर्ता के लिए वेबसाइट की डिज़ाइन को संशोधित करने, वेबसाइट की जानकारी प्राप्त करने, प्रदर्शित वेबसाइट की जानकारी को बदलने और मापदंडों के साथ हेरफेर करने के लिए बहुत सारी संभावनाएं लाता है (उदाहरण के लिए, कुकीज़)। इसलिए यह कुछ गंभीर वेबसाइट नुकसान, सूचना रिसाव और यहां तक कि हैक भी ला सकता है।
जेएस इंजेक्शन का मुख्य उद्देश्य वेबसाइट की उपस्थिति को बदलना और मापदंडों में हेरफेर करना है। JS इंजेक्शन के परिणाम बहुत भिन्न हो सकते हैं - वेबसाइट के डिजाइन को नुकसान पहुंचाने से लेकर किसी और के खाते तक पहुंचने तक।
जेएस इंजेक्शन का परीक्षण करना क्यों महत्वपूर्ण है?
कई लोग पूछेंगे कि क्या जेएस इंजेक्शन के लिए परीक्षण वास्तव में आवश्यक है।
जेएस इंजेक्शन कमजोरियों के लिए जाँच सुरक्षा परीक्षण का एक हिस्सा है। सुरक्षा परीक्षण आमतौर पर केवल तभी किया जाता है जब इसे परियोजना नियोजन में शामिल किया गया था, क्योंकि इसमें समय की आवश्यकता होती है, बहुत अधिक ध्यान और कई विवरणों की जांच करना।
मैंने देखा है, कि परियोजना की प्राप्ति के दौरान जेएस इंजेक्शन सहित किसी भी संभावित हमलों के खिलाफ परीक्षण को छोड़ना काफी आम है। इस तरह से टीमें परियोजना के समय को बचाने की कोशिश करती हैं। हालाँकि, यह अभ्यास अक्सर ग्राहकों की शिकायतों के साथ समाप्त होता है।
यह ज्ञात होना चाहिए, कि परियोजना की योजनाओं में शामिल नहीं होने पर भी सुरक्षा परीक्षण की अत्यधिक अनुशंसा की जाती है। मुख्य संभावित हमलों के लिए जाँच की जानी चाहिए - एक ही समय में संभावित जेएस इंजेक्शन कमजोरियों की जाँच करनी चाहिए।
सरल जावास्क्रिप्ट छोड़कर इंजेक्शन कमजोरियों उत्पाद में उत्पाद की गुणवत्ता और कंपनी की प्रतिष्ठा खर्च हो सकती है। जब भी मैंने संभावित हमलों और सामान्य सुरक्षा परीक्षण के खिलाफ परीक्षण करना सीखा है, मैं परीक्षण के इस हिस्से को कभी नहीं छोड़ता। इस तरह मैं उत्पाद की गुणवत्ता के बारे में अधिक निश्चित हूं।
अन्य हमलों के साथ तुलना
यह उल्लेख किया जाना चाहिए, कि जेएस इंजेक्शन उतना जोखिम भरा नहीं है एसक्यूएल इंजेक्षन , क्योंकि यह क्लाइंट की तरफ से किया जाता है और यह सिस्टम के डेटाबेस तक नहीं पहुंचता है क्योंकि यह SQL इंजेक्शन के हमले के दौरान होता है। साथ ही, यह XSS हमले जितना जोखिम भरा नहीं है।
कई बार इस हमले के दौरान, केवल वेबसाइट का स्वरूप बदला जा सकता है, जबकि XSS हमले का मुख्य उद्देश्य दूसरों के लॉगिन डेटा को हैक करना है।
हालांकि, जेएस इंजेक्शन भी कुछ गंभीर वेबसाइट को नुकसान पहुंचा सकता है। यह न केवल वेबसाइट की उपस्थिति को नष्ट कर सकता है, बल्कि अन्य लोगों के लॉगिन डेटा को हैक करने का एक अच्छा आधार बन सकता है।
जावास्क्रिप्ट इंजेक्शन के लिए जाँच
जब आप जेएस इंजेक्शन के खिलाफ परीक्षण करना शुरू कर रहे हैं, तो सबसे पहले आपको यह जांचना चाहिए कि जेएस इंजेक्शन संभव है या नहीं। इस प्रकार के इंजेक्शन की संभावना की जाँच करना बहुत आसान है - जब वेबसाइट पर नेविगेट किया जाता है, तो आपको इसके लिए ब्राउज़र के एड्रेस बार कोड में टाइप करना होगा:
जावास्क्रिप्ट: चेतावनी (ed निष्पादित! ’);
यदि संदेश के साथ पॉपअप विंडो pop एक्ज़ीक्यूटेड! ’दिखाई देती है, तो वेबसाइट JS इंजेक्शन के लिए असुरक्षित है।
फिर वेबसाइट के एड्रेस बार में, आप विभिन्न जावास्क्रिप्ट कमांड की कोशिश कर सकते हैं।
यह उल्लेख किया जाना चाहिए, कि JS Injection न केवल वेबसाइट के एड्रेस बार से संभव है। विभिन्न अन्य वेबसाइट तत्व हैं, जो जेएस इंजेक्शन के लिए असुरक्षित हो सकते हैं। सबसे महत्वपूर्ण बात यह है कि वास्तव में वेबसाइट के कुछ हिस्सों को जानना है जो जावास्क्रिप्ट इंजेक्शन से प्रभावित हो सकते हैं और इसे कैसे जांचना है।
विशिष्ट जेएस इंजेक्शन लक्ष्य हैं:
- विभिन्न मंचों
- Articles टिप्पणियाँ फ़ील्ड
- गेस्टबुक
- कोई अन्य रूप जहां पाठ सम्मिलित किया जा सकता है।
यह जाँचने के लिए कि क्या यह पाठ सामान्य रूप से पाठ उपलब्ध कराने के बावजूद पाठ के लिए संभव है, नीचे दिए अनुसार जावास्क्रिप्ट कोड लिखें और पाठ को प्रपत्र में सहेजें और पृष्ठ को ताज़ा करें।
जावास्क्रिप्ट: चेतावनी (ed निष्पादित! ’);
यदि नए खुले पृष्ठ में संदेश के साथ एक पाठ बॉक्स शामिल है,! निष्पादित! ’, तो परीक्षण किए गए फ़ॉर्म के लिए इस प्रकार का इंजेक्शन हमला संभव है।
यदि दोनों तरीकों से संदेश के साथ एक पाठ बॉक्स दिखाई देता है, तो आप वेबसाइट को अधिक मुश्किल JS इंजेक्शन विधियों के साथ तोड़ने का प्रयास कर सकते हैं। फिर आप विभिन्न इंजेक्शन प्रकारों की कोशिश कर सकते हैं - पैरामीटर संशोधन या डिजाइन संशोधन।
बेशक, पैरामीटर संशोधन को डिजाइन संशोधन की तुलना में जोखिम भरा माना जाता है। इसलिए, परीक्षण करते समय अधिक ध्यान मापदंडों के संशोधन के लिए समर्पित होना चाहिए।
इसके अलावा, यह ध्यान में रखा जाना चाहिए, कि जावास्क्रिप्ट इंजेक्शन के लिए अधिक कमजोर वेबसाइट के हिस्से इनपुट फ़ील्ड हैं, जहां किसी भी प्रकार का डेटा सहेजा जाता है।
पैरामीटर संशोधन
जैसा कि पहले उल्लेख किया गया है, संभव जावास्क्रिप्ट इंजेक्शन क्षतियों में से एक पैरामीटर संशोधन है।
इस इंजेक्शन हमले के दौरान एक दुर्भावनापूर्ण उपयोगकर्ता पैरामीटर जानकारी प्राप्त कर सकता है या किसी भी पैरामीटर मान को बदल सकता है() उदाहरण ,कुकी सेटिंग्स)। यह काफी गंभीर जोखिम पैदा कर सकता है क्योंकि दुर्भावनापूर्ण उपयोगकर्ता संवेदनशील सामग्री प्राप्त कर सकता है। इस प्रकार के इंजेक्शन को कुछ जावास्क्रिप्ट कमांड का उपयोग करके किया जा सकता है।
याद रखें, कि वर्तमान सत्र कुकी लौटाने वाली जावास्क्रिप्ट कमांड तदनुसार लिखी गई है:
जावास्क्रिप्ट: सतर्क (document.cookie);
ब्राउज़र के URL बार में दर्ज किया गया, यह वर्तमान सत्र कुकीज़ के साथ एक पॉपअप विंडो लौटाएगा।
यदि वेबसाइट कुकीज़ का उपयोग कर रही है, तो हम इस तरह की जानकारी सर्वर सत्र आईडी या कुकीज़ में संग्रहीत अन्य उपयोगकर्ता डेटा के रूप में पढ़ सकते हैं।
यह उल्लेख किया जाना चाहिए, कि अलर्ट () के बजाय किसी अन्य जावास्क्रिप्ट फ़ंक्शन का उपयोग किया जा सकता है।
उदाहरण के लिए ,अगर हमें एक कमजोर वेबसाइट मिली है, जो कुकी पैरामीटर में सत्र आईडी स्टोर करती है id session_id vulner। फिर हम एक फ़ंक्शन लिख सकते हैं, जो वर्तमान सत्र आईडी को बदलता है:
जावास्क्रिप्ट: void (document.cookie = ”session_id =<>');
इस तरह सत्र आईडी मान को बदल दिया जाएगा। साथ ही, बदलते मापदंडों के किसी भी अन्य तरीके भी संभव हैं।
उदाहरण के लिए, दुर्भावनापूर्ण उपयोगकर्ता अन्य लोगों के रूप में लॉग इन करना चाहता है। लॉगिन करने के लिए, दुर्भावनापूर्ण उपयोगकर्ता सबसे पहले प्राधिकरण कुकी सेटिंग्स को सच में बदल देगा। यदि कुकी सेटिंग्स को 'सही' के रूप में सेट नहीं किया गया है, तो कुकी मूल्य को 'अपरिभाषित' के रूप में वापस किया जा सकता है।
कंप्यूटर आर्किटेक्चर साक्षात्कार प्रश्न और उत्तर पीडीएफ
उन कुकी मूल्यों को बदलने के लिए, एक दुर्भावनापूर्ण उपयोगकर्ता ब्राउज़र के भीतर URL बार से जावास्क्रिप्ट कमांड के अनुसार प्रदर्शन करेगा:
जावास्क्रिप्ट: शून्य (डॉक्यूमेंट.कोकी = 'प्राधिकरण = सच');
परिणाम में, वर्तमान कुकीज़ पैरामीटर प्राधिकरण = गलत को प्राधिकरण = सच में बदल दिया जाएगा। इस तरह एक दुर्भावनापूर्ण उपयोगकर्ता संवेदनशील सामग्री तक पहुंच प्राप्त करने में सक्षम होगा।
इसके अलावा, यह उल्लेख किया जाना चाहिए कि कभी-कभी जावास्क्रिप्ट कोड काफी संवेदनशील जानकारी देता है।
जावास्क्रिप्ट: सतर्क (document.cookie);
उदाहरण के लिए, यदि कोई वेबसाइट डेवलपर पर्याप्त सतर्क नहीं है, तो वह उपयोगकर्ता नाम और पासवर्ड पैरामीटर नाम और मान भी लौटा सकता है। फिर ऐसी जानकारी का उपयोग वेबसाइट को हैक करने या संवेदनशील पैरामीटर के मान को बदलने के लिए किया जा सकता है।
उदाहरण के लिए, नीचे दिए गए कोड से हम उपयोगकर्ता नाम बदल सकते हैं:
जावास्क्रिप्ट: void (document.cookie = 'username = otherUser');
इस तरह किसी भी अन्य पैरामीटर मान को भी संशोधित किया जा सकता है।
वेबसाइट का डिज़ाइन संशोधन
जावास्क्रिप्ट का उपयोग किसी भी वेबसाइट के फॉर्म को संशोधित करने और सामान्य रूप से वेबसाइट के डिज़ाइन के लिए भी किया जा सकता है।
उदाहरण के लिए, जावास्क्रिप्ट के साथ आप वेबसाइट पर प्रदर्शित किसी भी जानकारी को बदल सकते हैं:
- प्रदर्शित पाठ।
- वेबसाइट की पृष्ठभूमि।
- वेबसाइट का रूप
- पॉपअप विंडो की उपस्थिति।
- किसी अन्य वेबसाइट तत्व की उपस्थिति।
उदाहरण के लिए, वेबसाइट पर प्रदर्शित ईमेल पते को बदलने के लिए, उपयुक्त जावास्क्रिप्ट कमांड का उपयोग किया जाना चाहिए:
जावास्क्रिप्ट: void (document.forms (0) .email.value = 'Test@test.com') ;
वेबसाइट के डिज़ाइन के साथ कुछ अन्य जटिल हेरफेर भी संभव हैं। इस हमले से हम वेबसाइट की CSS क्लास तक भी पहुँच सकते हैं और बदल सकते हैं।
उदाहरण के लिए, यदि हम JS इंजेक्शन के साथ वेबसाइट की पृष्ठभूमि छवि बदलना चाहते हैं, तो कमांड को उसी के अनुसार चलाया जाना चाहिए:
जावास्क्रिप्ट: शून्य (दस्तावेज़)। पृष्ठभूमि-छवि: url ('other-image.jpg');
इसके अलावा, एक दुर्भावनापूर्ण उपयोगकर्ता जावास्क्रिप्ट इंजेक्शन कोड लिख सकता है जो नीचे पाठ डालने के रूप में उल्लिखित है और इसे सहेजें।
जावास्क्रिप्ट: शून्य (अलर्ट (cript हैलो! ”));
फिर हर बार जब कोई पेज खोला जाता है, तो संदेश के साथ एक टेक्स्ट बॉक्स 'हैलो!' दिखाई देगा।
जावास्क्रिप्ट इंजेक्शन के साथ बदली गई वेबसाइट का डिज़ाइन पैरामीटर संशोधन की तुलना में कम जोखिम भरा है। हालांकि अगर वेबसाइट के डिजाइन को दुर्भावनापूर्ण तरीके से बदल दिया जाएगा, तो यह कंपनी की प्रतिष्ठा को प्रभावित कर सकता है।
जावास्क्रिप्ट इंजेक्शन के खिलाफ परीक्षण कैसे करें
इसे निम्नलिखित तरीकों से जांचा जा सकता है:
- मैन्युअल
- परीक्षण उपकरण के साथ
- ब्राउज़र प्लगइन्स के साथ
संभव जावास्क्रिप्ट कमजोरियों को मैन्युअल रूप से जांचा जा सकता है यदि आपके पास अच्छा ज्ञान है कि इसे कैसे किया जाना चाहिए। इसके अलावा, यह विभिन्न स्वचालन उपकरणों के साथ परीक्षण किया जा सकता है।
उदाहरण के लिए, यदि आपने SOAP UI टूल के साथ एपीआई स्तर पर अपने परीक्षण को स्वचालित किया है, तो जावास्क्रिप्ट इंजेक्शन परीक्षण को भी चलाना संभव है सोप यूआई ।
हालांकि, मैं केवल अपने स्वयं के अनुभव से टिप्पणी कर सकता हूं, कि आपको वास्तव में एसओएपी यूआई टूल के बारे में अच्छा ज्ञान होना चाहिए ताकि जेएस इंजेक्शन के लिए परीक्षण किया जा सके, क्योंकि सभी परीक्षण चरणों को गलतियों के बिना लिखा जाना चाहिए। यदि कोई परीक्षण चरण गलत तरीके से लिखा गया है, तो यह गलत सुरक्षा परीक्षण परिणाम भी दे सकता है।
इसके अलावा, आप संभावित हमले के खिलाफ जांच के लिए विभिन्न ब्राउज़र के प्लगइन्स पा सकते हैं। हालांकि, यह अनुशंसा की जाती है कि इस हमले के खिलाफ मैन्युअल रूप से जांच न करें, क्योंकि यह आमतौर पर अधिक सटीक परिणाम देता है।
मैं कहना चाहूंगा, कि जावास्क्रिप्ट इंजेक्शन के खिलाफ मैन्युअल रूप से परीक्षण करने से मुझे वेबसाइट की सुरक्षा के बारे में अधिक आश्वस्त और आश्वस्त महसूस होता है। इस तरह से आप सुनिश्चित हो सकते हैं, कि परीक्षण करते समय कोई भी प्रपत्र छूट नहीं गया था और सभी परिणाम आपको दिखाई दे रहे हैं।
जावास्क्रिप्ट इंजेक्शन के खिलाफ परीक्षण करने के लिए आपको जावास्क्रिप्ट के बारे में सामान्य ज्ञान होना चाहिए और यह जानना चाहिए कि वेबसाइट के कौन से हिस्से अधिक कमजोर हैं। इसके अलावा, आपको याद रखना चाहिए कि वेबसाइट को जेएस इंजेक्शन के खिलाफ संरक्षित किया जा सकता है और परीक्षण करते समय आपको इस सुरक्षा को तोड़ने की कोशिश करनी चाहिए।
इस तरह आप सुनिश्चित होंगे कि इस हमले से सुरक्षा काफी मजबूत है या नहीं।
इस हमले के खिलाफ संभावित संरक्षण
सबसे पहले, इस हमले को रोकने के लिए, प्रत्येक प्राप्त इनपुट को मान्य किया जाना चाहिए। इनपुट को हर बार मान्य किया जाना चाहिए, न कि केवल तब जब डेटा शुरू में स्वीकार किया जाता है।
यह अत्यधिक ग्राहक पक्ष सत्यापन पर भरोसा नहीं करने के लिए अनुशंसित है। साथ ही, सर्वर साइड में एक महत्वपूर्ण तर्क करने की सिफारिश की गई है।
कई लोग जावास्क्रिप्ट को दोहरे से बदलकर जावास्क्रिप्ट इंजेक्शन से बचाने की कोशिश करते हैं और जावास्क्रिप्ट कोड उस तरह से नहीं किया जाना चाहिए।
उदाहरण के लिए, यदि आप उद्धरण के साथ टिप्पणी क्षेत्र में कुछ भी लिखेंगे… तो उन उद्धरणों को दोहरे के साथ बदल दिया जाएगा -<>...<>। इस तरह से दर्ज जावास्क्रिप्ट कोड निष्पादित नहीं किया जाएगा।
मैंने देखा है, कि संभवत: जेएस इंजेक्शन के हमलों से बचने के लिए दोहरे उद्धरण द्वारा उद्धरणों की जगह एक सामान्य अभ्यास है। हालाँकि, JS इंजेक्शन कोड को करने के लिए उद्धरणों को एनकोड करने के कुछ तरीके हैं। इसलिए उद्धरणों को डबल में बदलना इस हमले से बचाने का एक सही तरीका नहीं है।
निष्कर्ष
यह हमेशा ध्यान में रखा जाना चाहिए, कि जावास्क्रिप्ट इंजेक्शन वेबसाइटों के खिलाफ संभावित हमलों में से एक है, क्योंकि जावास्क्रिप्ट वेबसाइटों के लिए सबसे व्यापक रूप से इस्तेमाल की जाने वाली तकनीकों में से एक है। इसलिए, वेबसाइटों या किसी अन्य वेब तकनीकों का परीक्षण करते समय, इस हमले के खिलाफ परीक्षण करना नहीं भूलना चाहिए।
सुरक्षा परीक्षण करते समय, जेएस इंजेक्शन को नहीं भूलना चाहिए। कुछ लोग इस परीक्षण को कम जोखिम वाला हमला मानते हैं क्योंकि यह क्लाइंट की तरफ से किया जाता है।
हालाँकि, यह गलत दृष्टिकोण है और हमें हमेशा याद रखना चाहिए, कि जावास्क्रिप्ट इंजेक्शन संवेदनशील सूचना रिसाव, उपयोगकर्ता खातों को बदलने या हैक करने जैसे गंभीर वेबसाइट नुकसान पहुंचा सकता है।
इसलिए हमें इसे परीक्षण का एक महत्वपूर्ण हिस्सा मानना चाहिए और यह अच्छे उत्पाद और कंपनी की प्रतिष्ठा के लिए निवेश का एक हिस्सा है।
जेएस इंजेक्शन के लिए परीक्षण बहुत मुश्किल नहीं है। सबसे पहले आपको जावास्क्रिप्ट के बारे में सामान्य ज्ञान होना चाहिए और यह जानना चाहिए कि यह जांचना है कि यह हमला वर्तमान वेब समाधान के लिए संभव है या नहीं।
परीक्षण करते समय आपको यह भी याद रखना चाहिए कि किसी वेबसाइट पर इस प्रकार के हमले से सुरक्षा हो सकती है, लेकिन यह बहुत कमजोर हो सकती है - इसे भी जांचना चाहिए। एक और महत्वपूर्ण बात याद रखें कि विभिन्न प्रकार के जावास्क्रिप्ट इंजेक्शन हमले हैं और उनमें से किसी को भी परीक्षण करने के लिए नहीं भूलना चाहिए।
क्या आपने जावास्क्रिप्ट इंजेक्शन परीक्षण किया है ?? हमें आप से सुनने में खुशी होगी, नीचे टिप्पणी अनुभाग में अपने अनुभव साझा करने के लिए स्वतंत्र महसूस करें।
अनुशंसित पाठ
- शुरुआती के लिए गहराई से ग्रहण ट्यूटोरियल
- Node.js टेस्टिंग फ्रेमवर्क कैसे सेटअप करें: Node.js ट्यूटोरियल
- HTML इंजेक्शन ट्यूटोरियल: उदाहरण और उदाहरण के साथ रोकथाम
- SQL इंजेक्शन परीक्षण ट्यूटोरियल (उदाहरण और SQL इंजेक्शन हमले की रोकथाम)
- उदाहरणों के साथ जावा परावर्तन ट्यूटोरियल
- एसवीएन ट्यूटोरियल: स्रोत कोड प्रबंधन तोड़फोड़ का उपयोग करना
- उदाहरणों के साथ पायथन डेटटाइम ट्यूटोरियल
- कछुआ एसवीएन ट्यूटोरियल: कोड रिपोजिटरी में संशोधन