क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलों को ई-कॉमर्स व्यवसायों और कई अन्य वेब अनुप्रयोगों द्वारा सामना किए जाने वाले सबसे बड़े पैमाने पर होने वाले अभी तक आसानी से ठीक करने योग्य इंजेक्शन हमले के रूप में बताया गया है। पुरातन वेब प्रौद्योगिकियों पर निर्मित अनुप्रयोगों को लक्षित करने से लेकर समृद्ध, क्लाइंट-साइड UI का उपयोग करने वाले नए तक, XSS ने उन सभी को प्रभावित किया है। हालांकि, यह महसूस करना अनिवार्य है कि XSS हमले के संभावित कारण के रूप में प्रस्तुत कमजोरियों का आसानी से पता लगाया जा सकता है और उन्हें समय पर ठीक किया जा सकता है।
क्रॉस-साइट स्क्रिप्टिंग अटैक कैसे होता है?
क्रॉस साइट स्क्रिप्टिंग (XSS) अटैक तब होता है जब
- एक वेब एप्लिकेशन एक अविश्वसनीय स्रोत के माध्यम से इनपुट डेटा के लिए अनुरोध करता है
- वेब अनुरोध के माध्यम से इनपुट की गई गतिशील सामग्री का उपयोग दुर्भावनापूर्ण सामग्री की कमी के लिए पुष्टि किए बिना किया जाता है।
ऐसे इनपुट डेटा का एक सरल उदाहरण है जब हम अपना नाम, ई-मेल आईडी, उपयोगकर्ता नाम-पासवर्ड या किसी भी इनपुट को फॉर्म में जमा करते हैं। उपरोक्त दर्ज किए गए प्रत्येक इनपुट में हेरफेर किया जा सकता है यदि अंतर्निहित कोड इनपुट को ठीक से मान्य नहीं करता है। एक हमलावर इस अक्षमता का उपयोग दुर्भावनापूर्ण सामग्री को इंजेक्ट करने में करता है, आमतौर पर जावास्क्रिप्ट कोड, HTML या ब्राउज़र द्वारा निष्पादन योग्य किसी भी प्रकार के कोड के रूप में। अंतिम उपयोगकर्ता के पास अविश्वसनीय स्क्रिप्ट पर संदेह करने का कोई तरीका नहीं है और वह इसे निष्पादित करना समाप्त कर देगा। एक बार इंजेक्शन लगाने के बाद, स्क्रिप्ट इस साइट द्वारा उपयोग की जाने वाली किसी भी कुकी, सत्र टोकन या संवेदनशील जानकारी तक पहुंच प्राप्त कर लेती है।
XSS अटैक 3 प्रकार का होता है:
- डोम आधारित हमला :क्लाइंट की ओर से कोड के दुर्भावनापूर्ण इंजेक्शन के कारण। इंजेक्शन कोड जावास्क्रिप्ट, फ्लैश, विजुअल बेसिक आदि हो सकता है।
- लगातार XSS अटैक: ऐसा तब होता है जब पेलोड को सर्वर साइड पर स्टोर किया जाता है और किसी पेज पर यूजर का अनुरोध आने पर रिकवर हो जाता है
- गैर-निरंतर XSS हमला: ऐसा तब होता है जब पेलोड एक तैयार किए गए इनपुट के साथ एक कमजोर वेबसाइट के लिए एक लिंक खोलकर उपयोगकर्ता को वापस दिखाई देता है।
एनाटॉमी ऑफ़ ए क्रॉस-साइट स्क्रिप्टिंग (XSS) अटैक
कैसे हमलावर XSS का फायदा उठाते हैं?
आम तौर पर, एक हमलावर अंतिम उपयोगकर्ता के सत्र कुकीज़ को निकालने के लिए एक XSS भेद्यता का उपयोग करता है जो अंततः हमलावर को उपयोगकर्ता के खाते तक पहुंचने में सक्षम बनाता है। उपरोक्त परिदृश्य का एक उदाहरण है:- जिस वेबसाइट पर आप पहुँचते हैं उसमें एक टिप्पणी फ़ील्ड है।
- हमलावर निम्नलिखित पेलोड को टिप्पणी अनुभाग में पोस्ट करता है।
- जैसे ही कोई वैध उपयोगकर्ता निम्नलिखित टिप्पणी देखने के लिए टिप्पणी बॉक्स खोलता है, HTML इस स्क्रिप्ट को पार्स करता है।
- जब ब्राउज़र द्वारा HTML पार्सिंग की जाती है, तो उपयोगकर्ता की कुकी उसके सर्वर पर हमलावर को भेजी जाती है।
क्रॉस-साइट स्क्रिप्टिंग हमलों के कुख्यात मामले
एक्सएसएस हमले ज्यादातर वित्तीय लाभ के लिए होते हैं, एक उल्लेखनीय ई-कॉमर्स दिग्गज ईबे के खिलाफ पिछला हमला है। हैकर्स ने सस्ते आईफोन के लिए कई लिस्टिंग में एक दुर्भावनापूर्ण जावास्क्रिप्ट कोड डाला, जो बदले में उपयोगकर्ताओं को उपयोगकर्ता क्रेडेंशियल्स से समझौता करने के लिए बनाए गए नकली लॉगिन पेज पर रीडायरेक्ट कर दिया।
ई-कॉमर्स साइट्स के अलावा, कई सोशल मीडिया साइट्स पर इस तरह के कुख्यात हमले हुए हैं। ट्विटर को एक ऐसे XSS वर्म से निशाना बनाया गया जिसके कारण StalkDaily नाम की वेबसाइट पर दुर्भावनापूर्ण लिंक दर्ज किए गए। एक और प्रसिद्ध एक्सएसएस हमला सैमी वर्म द्वारा माइस्पेस हमला था - एक सौम्य वायरस जिसने माइस्पेस उपयोगकर्ताओं के प्रोफाइल पेज को बदल दिया और यादृच्छिक मित्र अनुरोध भेजे।
XSS हमलों को कम करने के लिए सावधानियां
XSS हमले को रोकने का अर्थ यह नहीं है कि उपयोगकर्ता अपने पेलोड को इनपुट करने के लिए अक्षम कर दें, बल्कि इसे ब्राउज़र में HTML के रूप में पार्स होने से रोकने के लिए उपाय करें। कहा जा रहा है, यहां कुछ तरीके दिए गए हैं जिनका उपयोग XSS हमले को रोकने के लिए किया जाता है।-
इनपुट सत्यापन
XSS को रोकने के लिए, अधिकांश इनपुट को अल्फ़ान्यूमेरिक या कुछ मामलों में, विशेष वर्णों को श्वेत-सूचीबद्ध करें। यह सतही हमले को कम करेगा और बग की संभावना को कम करेगा।
-
सुरक्षित DOM तत्वों का उपयोग
अक्सर, डीओएम तत्वों (दस्तावेज़ ऑब्जेक्ट मॉडल) की असुरक्षित हैंडलिंग से समृद्ध क्लाइंट यूआई में भी एक्सएसएस हमले होते हैं। उदाहरण के लिए, आंतरिक HTML विशेषता का उपयोग करके उपयोगकर्ता इनपुट को जावास्क्रिप्ट ईवेंट के साथ XSS के रूप में प्रस्तुत करता है। इस मामले में, सुरक्षित विकल्प सामग्री टेक्स्ट या आंतरिक टेक्स्ट का उपयोग करना होगा।
-
जावास्क्रिप्ट एस्केपिंग
सिंगल कोट्स से बचने से जावास्क्रिप्ट के भीतर इंजेक्शन को रोका जा सकता है। एचटीएमएल एन्कोडिंग जो 'के साथ सिंगल कोट्स का उपयोग करता है, इंजेक्शन समस्या को रोकने के लिए इस्तेमाल किया जाना चाहिए
-
आउटपुट एन्कोडिंग
जब अधिकतम XSS पेलोड को निष्क्रिय करने की बात आती है तो आउटपुट एन्कोडिंग अद्भुत काम करती है। यह विधि सर्वर साइड इंजेक्शन हमलों को कम करने के लिए काम करती है। जबकि HTML एन्कोडिंग एक सामान्य तरीका है, URL एन्कोडिंग लिंक और रीडायरेक्ट में मार्कअप के किसी भी इंजेक्शन को मिटाने में मदद कर सकता है।