
Python-आधारित प्रूफ-ऑफ-कॉन्सेप्ट स्क्रिप्ट जो Swagger UI में CVE-2018-25031 XSS भेद्यता को प्रदर्शित करती है, Selenium का उपयोग करके कई एंडपॉइंट्स पर स्वचालित पहचान हेतु।
यह रिपॉजिटरी एक Python स्क्रिप्ट रखता है जो Swagger UI में क्रॉस-साइट स्क्रिप्टिंग (XSS) भेद्यता का एक प्रूफ ऑफ कॉन्सेप्ट (POC) प्रदर्शित करता है, जिसमें Selenium लाइब्रेरी का उपयोग किया गया है। इस POC का उद्देश्य उन साइटों की पहचान करना है जो एक दुर्भावनापूर्ण पेलोड के साथ Swagger UI का शोषण करके इस भेद्यता के प्रति संवेदनशील हैं।
Swagger UI एक व्यापक रूप से उपयोग किया जाने वाला उपकरण है जो उपयोगकर्ता के अनुकूल इंटरफेस के माध्यम से APIs को देखने और उनके साथ बातचीत करने के लिए है। हालांकि, संस्करण 2.9.2 में, एक क्रॉस-साइट स्क्रिप्टिंग (XSS) भेद्यता की पहचान की गई थी जो एक हमलावर को लोड किए गए Swagger UI पृष्ठों में दुर्भावनापूर्ण JavaScript कोड इंजेक्ट करने की अनुमति दे सकती थी।
XSS तब होता है जब कोई एप्लिकेशन पृष्ठ पर प्रदर्शित करने से पहले उपयोगकर्ता द्वारा दर्ज किए गए डेटा को उचित रूप से मान्य नहीं करता है। इस मामले में, एक हमलावर Swagger UI के इनपुट फ़ील्ड में एक दुर्भावनापूर्ण JavaScript कोड डालकर भेद्यता का शोषण कर सकता है, जो उसी समझौता किए गए पृष्ठ पर पहुंचने वाले अन्य उपयोगकर्ताओं के ब्राउज़र के संदर्भ में निष्पादित होगा।

नोट: उपरोक्त छवि एक उदाहरण दिखाती है कि कैसे एक हमलावर प्रभावित संस्करणों में एक सुरक्षा दोष का लाभ उठाकर Swagger UI में XSS पेलोड डाल सकता है।
इस भेद्यता को कम करने का सबसे प्रभावी तरीका यह सुनिश्चित करना है कि Swagger UI एक ऐसे संस्करण में अपडेट किया गया है जो प्रभावित नहीं है। Swagger UI के नवीनतम संस्करणों की जाँच करें और इसे हमेशा अपडेट रखें।
उन डेवलपर्स के लिए जो Swagger UI का उपयोग या अनुकूलित करना चाहते हैं, इंटरफ़ेस पर प्रदर्शित करने से पहले इनपुट डेटा का उचित सत्यापन करना महत्वपूर्ण है। उपयोगकर्ताओं द्वारा डाले गए HTML या JavaScript के सीधे रेंडरिंग से बचना XSS भेद्यताओं से बचने के लिए एक अनुशंसित अभ्यास है।
यहाँ एक सरलीकृत उदाहरण है कि कैसे Swagger UI का उपयोग करके भेद्यता का शोषण किया जा सकता है:
यह अनुभाग केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए है। दुर्भावनापूर्ण या अवैध गतिविधियों को प्रोत्साहित या भाग न लें। भेद्यताओं की रिपोर्ट करते समय हमेशा जिम्मेदार प्रकटीकरण प्रथाओं का पालन करें।
स्क्रिप्ट चलाने से पहले निम्नलिखित पूर्वापेक्षाएँ स्थापित करना सुनिश्चित करें:
pip install selenium
इस रिपॉजिटरी को अपनी मशीन पर क्लोन या डाउनलोड करें।
sites_para_testar.txt फ़ाइल को संपादित करें और उन साइटों के URL दर्ज करें जिन्हें आप परीक्षण करना चाहते हैं, प्रति पंक्ति एक।
रिपॉजिटरी फ़ोल्डर में एक टर्मिनल खोलें और निम्नलिखित कमांड का उपयोग करके स्क्रिप्ट चलाएँ:
python main.py
स्क्रिप्ट sites_para_testar.txt फ़ाइल में सूचीबद्ध साइटों के माध्यम से जाएगी, उनके Swagger UI URL तक पहुँचेगी और जाँच करेगी कि क्या कोई XSS अलर्ट पाया गया है। परिणाम तीन फ़ाइलों में दर्ज किए जाएँगे: संभावित रूप से कमजोर URL के लिए valido.txt, ऐसे URL जो कमजोर हो सकते हैं उनके लिए talvezvalido.txt, और गैर-कमजोर URL के लिए naovalido.txt।
स्क्रिप्ट Chrome ब्राउज़र के साथ बातचीत को स्वचालित करने के लिए Selenium लाइब्रेरी का उपयोग करती है। यह sites_para_testar.txt फ़ाइल में कॉन्फ़िगर किए गए Swagger UI URL को लोड करता है, configUrl पैरामीटर में एक दुर्भावनापूर्ण पेलोड जोड़ता है, और जाँच करता है कि क्या कोई XSS अलर्ट ट्रिगर हुआ है।
स्क्रिप्ट निम्नलिखित चरणों का उपयोग करती है:
Selenium और अन्य निर्भरताओं से आवश्यक लाइब्रेरी आयात करता है।
SSL और प्रमाणपत्र त्रुटियों को अनदेखा करने के लिए ChromeDriver विकल्प कॉन्फ़िगर करता है।
Chrome ड्राइवर को आरंभ करता है।
परीक्षण किए जाने वाले साइटों को sites_para_testar.txt फ़ाइल से पढ़ता है और उन पर पुनरावृत्ति करता है।
प्रत्येक Swagger UI URL को जोड़े गए दुर्भावनापूर्ण पेलोड के साथ खोलता है।
यह जाँचने का प्रयास करता है कि क्या कोई XSS अलर्ट ट्रिगर हुआ है।
जाँच के परिणाम के आधार पर, URL को valido.txt, talvezvalido.txt या naovalido.txt फ़ाइलों में दर्ज करता है।
Chrome ड्राइवर को बंद करता है।
यह स्क्रिप्ट केवल शैक्षिक और साइबर सुरक्षा जागरूकता उद्देश्यों के लिए प्रदान की गई है। इसका उपयोग दुर्भावनापूर्ण या अवैध उद्देश्यों के लिए नहीं किया जाना चाहिए। लेखक इस स्क्रिप्ट के किसी भी दुरुपयोग या इसके उपयोग से होने वाली किसी भी क्षति के लिए जिम्मेदार नहीं है।
यदि आप इस स्क्रिप्ट को बेहतर बनाने का कोई तरीका पाते हैं या सुझाव देते हैं, तो बेझिझक एक पुल अनुरोध बनाएँ।
यह प्रोजेक्ट MIT लाइसेंस के तहत लाइसेंस प्राप्त है।