कुकी आधारित XSS ऑपरेशन | $ 2300 बग बाउंटी कहानी



पिछले कुछ समय से, मैं हैकरऑन प्लेटफॉर्म पर कमजोरियों का शिकार हो रहा हूं, और अपने पसंदीदा और नए कार्यक्रमों की जांच के लिए मुख्य कार्य के बाहर एक निश्चित समय आवंटित कर रहा हूं। अनगिनत बार मैं एक कुकी-आधारित XSS भेद्यता में आया, जो इस लेख का मुख्य पात्र बन जाएगा। इस प्रकार की भेद्यता तब होती है जब पृष्ठ पर कुकी पैरामीटर का मान परिलक्षित होता है। डिफ़ॉल्ट रूप से, उन्हें स्व-एक्सएसएस माना जाता है जब तक कि हम, बदले में, उनके खतरे को साबित न करें। दरअसल, आज मैं आपको बताऊंगा कि कुकी आधारित XSS कमजोरियों का कैसे फायदा उठाया जा सकता है, और मैं एक कंपनी के परीक्षण से एक उदाहरण भी दूंगा, जहां से मुझे अध्ययन के लिए कुल $ 7300 प्राप्त हुए।

उपयोगकर्ता पक्ष पर जावास्क्रिप्ट निष्पादित करने के लिए, आपको कुकी सेट करने का एक तरीका खोजने की आवश्यकता है और, यदि आवश्यक हो, पीड़ित को एक पृष्ठ पर ले जाएं, जहां, बदले में, कुकी एम्बेडेड है। इस बग का फायदा उठाने के संभावित तरीके:

F 1. CRLF इंजेक्शन। यह भेद्यता तब होती है जब लाइन ब्रेक वर्णों का सही सत्यापन और अवरोधन नहीं होता है। हम सेट-कुकी हेडर को वांछित नाम के साथ-साथ कुकी के मूल्य के जवाब में लागू कर सकते हैं और इसे ब्राउज़र में सेट कर सकते हैं। वास्तविक जीवन उदाहरण: एक अनुप्रेषित में twitter.com पर फिसलन CRLF इंजेक्शन, - https://twitter.com/login?redirect_after_login=/jjjkkk 嘊-सेट-कुकी: jjjjkk = =; domain = twitter.com;



इस प्रकार की भेद्यता पर रिपोर्ट HackerOne hackerone.com/hacktivity?order_direction=DESC&order_field=popular&filter=type%3Apublic&querystring-crlf%20injection पर पढ़ी जा सकती है।

2. उपडोमेन पर XSS भेद्यता। XSS को सार्वजनिक रूप से सुलभ और वाइल्डकार्ड * .vulnerabledomain.com पर स्थित होना आवश्यक है। कई बग बाउंटी कार्यक्रमों के लिए, उप-क्षेत्र गुंजाइश से बाहर हैं, अर्थात, ज्यादातर मामलों में, बग को या तो बिल्कुल स्वीकार नहीं किया जाता है, या "इनाम के योग्य नहीं" चिह्न के साथ प्राप्त किया जाता है। ऐसे मामलों में, आपको वापस नहीं लौटना चाहिए, लेकिन कुकी-आधारित XSS से जुड़ने के लिए, आप इनाम पाने के लिए XSS की खोज में अपना समय लगा सकते हैं। यदि XSS का पता चला है, तो हम document.cookie फ़ंक्शन का उपयोग करके कुकी को सेट या निकाल सकते हैं।

प्रभाव वृद्धि: अक्सर, उदाहरण के लिए, jira.vulnerabledomain.com की तुलना में पीड़िता अधिक से अधिक कमजोर विकलांग डोमेन पर भरोसा करती है, और यहां तक ​​कि URL /plugins/servlet/oauth/users-icon-uri?consumerUri=https://maliciousdomain.com के साथ भी। । यह अधिक संभावना है कि यह उप डोमेन की तुलना में मुख्य डोमेन पर स्विच करेगा यदि यह उपडोमेन व्यक्तिगत खाते या प्राधिकरण से जुड़ा नहीं है। पूर्वगामी के आधार पर, हम एक बेहतर प्रभाव के लिए इन-साइट रीडायरेक्ट कार्यक्षमता का उपयोग करने के लिए कमजोरियों को निष्क्रिय करने के लिए उपयोग कर सकते हैं। www.login?redirectUrl=https: //jira.vulnerabledomain.com/path उपडोमेन।

यदि पीड़ित के पास एक सक्रिय सत्र है, तो पुनर्निर्देशन स्वचालित होगा, यदि नहीं, तो प्राधिकरण की आवश्यकता है। जब उपयोगकर्ता इस तरह के लिंक पर क्लिक करता है, तो कुकी को उप-डोमेन से भी इंस्टॉल किया जाएगा, जिस पर रिफ्लेक्टेड XSS मौजूद है, इसे आगे अपस्ट्रीम पर भेजा जा सकता है - कुकी-आधारित XSS वाले पेज पर, जहां शोषण काम कर सकता है, जो बदले में, टोकन के CSRF मान को कैप्चर करेगा। और ईमेल पता बदलने के अनुरोध को पूरा करें। इस प्रकार, दो XSS भेद्यताओं के संयोजन से खाता टेकओवर हो सकता है यदि कोई संबद्ध समस्याएँ नहीं हैं, जैसे कि पुराने पासवर्ड से ईमेल पासवर्ड या कोड बदलने की अतिरिक्त पुष्टि।

3. परीक्षण फ़ाइलों की जांच जो कुकीज़ को सेट करने की अनुमति देती हैं। यह सामग्री का पता लगाने वाले उपकरण (dirb, dirserach, आदि) को उजागर करने के लिए पर्याप्त है, खुदाई शुरू करें, और अगर डेवलपर्स सफाई करना भूल गए, तो आप ऐसी फ़ाइलों पर ठोकर खा सकते हैं।

हाल ही में, मुझे एक परीक्षण सर्वलेट एचटीएमएल पेज मिला, जिस पर एक मनमाना नाम और मूल्य के साथ कुकी स्थापित करना संभव था। POST अनुरोध पर सुरक्षा, ज़ाहिर है, अनुपस्थित थी, इसलिए यदि पीड़ित CSRF शोषण (या आप POST को GET में बदल सकता है) का दौरा करेगा, तो उसके ब्राउज़र में कुकी को स्थापित करना संभव होगा।



यह बग CRLF इंजेक्शन के लिए एक विकल्प के रूप में योग्य था, जिसे हटा दिया गया था / उदाहरण / और कम-गंभीर बग के लिए $ 150 का भुगतान किया गया था। यद्यपि एच 1 ट्राइगर ने माध्यम दिया, लेकिन डेवलपर्स अभी भी यह विश्वास करने में इच्छुक थे कि यह कम गंभीरता है।



4. मैन इन द मिडल अटैक (MITM)। यह विधि केवल तभी लागू की जा सकती है जब कुकी पर कोई सुरक्षित ध्वज न हो। यदि आपको यह पता नहीं है कि यह किस प्रकार का झंडा है या आप अपनी मेमोरी को रीफ्रेश करना चाहते हैं, तो मैं आपको OWASP London 2017 www.owasp.org/images/a/a0/OWASPLondon20173030_Cookie_Security_Misconministr_David_Johanssonpson से कुकी सुरक्षा प्रस्तुति देखने की सलाह देता हूं।

एक सफल हमले के लिए, यह आवश्यक है कि पीड़ित हमलावर के नेटवर्क में हो या कि डीएनएस संकल्प प्रभावित हो। भेद्यता की जांच करने के लिए, यह आवश्यक है:

1) निम्नलिखित सामग्रियों के साथ index.php फ़ाइल को होस्ट करें:

<?php if ($_SERVER['HTTP_HOST'] == 'non-existed-subdomain.vulnerabledomain.com') { setrawcookie("VID",'\'+alert(123123123)+\'', time()+36000, "/", ".vulnerabledomain.com",0,1); } ?> 

2) अपने / etc / मेजबान / फ़ाइल में निम्न पंक्ति जोड़ें: 127.0.0.1 गैर-existed-subdomain.vulnerabledomain.com

3) non-existed-subdomain.vulnerabledomain.com पर जाएं और उसके बाद उस पेज को खोलें, जिस पर कुकी प्रतिबिंबित है।

E.mail.ru पर MITM शोषण का एक अद्भुत उदाहरण https://hackerone.com/reports/312548 है, जैसा कि आप देख सकते हैं, MITM भेद्यता के एक छोटे से खतरे को साबित करने के लिए पर्याप्त था, लेकिन यह पुरस्कार स्टेंस XSS के स्तर से मेल नहीं खाता, क्योंकि यह केवल दिखाया गया था ऑपरेशन का "स्थानीय" मोड, जो "इन-द-वाइल्ड" नहीं है। यदि शोधकर्ता ने थोड़ा सा समय XSS या CRLF इंजेक्शन (जो अनगिनत हैं) * .mail.ru पर स्थित खोज में बिताया है, तो इनाम थोड़ा बढ़ाया जा सकता है।

लेकिन सभी हैकरोन कार्यक्रम MITM के माध्यम से कुकी-आधारित XSS को स्वीकार नहीं करते हैं। यदि गुंजाइश बहिष्करण "सेल्फ एक्सएसएस" कहता है, तो इस ऑपरेशन को स्व एक्सएसएस के रूप में माना जा सकता है और सूचनात्मक या एन / ए सेट किया जा सकता है, जो हमेशा सुखद नहीं होता है। अब मैं एक ऐसी ही घटना के बारे में बात करूंगा जो मंच पर अगले शिकार के दौरान मेरे साथ हुई थी।

साइट का परीक्षण करते समय, मैंने अचानक देखा कि साइट के उपनिर्देशिकाओं में से एक में फिर से तैयार कुकीज़ का मूल्य परिलक्षित होता है। पहली चीज़ जो मैंने की थी, वह वर्णों के प्रदर्शन की जांच कर रही थी "/ <>। यह पता चला कि केवल वर्ण <> फ़िल्टर किए गए थे, और यह हमें बताता है कि हम परे नहीं जा सकते हैं, लेकिन यह भी स्पष्ट हो जाता है कि शेष वर्ण फ़िल्टर नहीं किए गए हैं । दो बार सोचने के बिना, हम '-लर्ट (document.domain) -' को लागू करते हैं और js निष्पादित होता है।

चूंकि डेवलपर्स ने कुकी को सुरक्षित ध्वज नहीं दिया था, इस मामले में MITM विधि काम करती है। निम्नलिखित प्रभाव के साथ कार्यक्रम में एक रिपोर्ट भेजने का निर्णय लिया गया था:



हैकरऑन स्टाफ (विजयी) ने स्पष्ट किया कि यह स्व-एक्सएसएस है और मुझे इसके लिए और अधिक प्रयास करने होंगे:



उसके बाद, मैंने साइट को सर्फ करना शुरू कर दिया और खतरे को साबित करने के लिए CRLF इंजेक्शन या XSS खोजने की कोशिश की।

⠀ मुझे एक बड़े शब्दकोश की मदद से उपडोमेन की सूची का विस्तार करना था, SSL प्रमाणपत्र के साथ उपडोमेन को स्क्रैप करना और कुछ अन्य ट्रिक्स का उपयोग करना था। परिणाम आने में लंबा नहीं था, क्योंकि अधिकांश उपकरण मैं वीपीएस के साथ चलाता हूं। समय-समय पर, रास्ते में अन्य बगों का भी पता लगाया गया था, जो मैंने रिपोर्ट किया था, यदि आवश्यक हो तो आउट-ऑफ-स्कोप से इन-स्कोप बना। मैं $ 5000 के लिए कई ओपन रिडायरेक्ट्स और यहां तक ​​कि एक अनुचित एक्सेस कंट्रोल बग भी आया था, लेकिन मैं अभी भी बंडल के लिए आवश्यक कमजोरियों को नहीं पकड़ सका। उपर्युक्त बग काफी दिलचस्प और खतरनाक है, पूरे उपडोमेन को रिपोर्ट के तुरंत बाद ऑफ़लाइन ले लिया गया था, शायद भविष्य में मैं hackerone.com/w2w पर रिपोर्ट खोलूंगा, अगर कार्यक्रम सार्वजनिक हो जाता है।

एक हफ्ते बाद, सामग्री का पता लगाने के लिए स्क्रिप्ट के परिणामों की जांच की गई, जहां एंडपॉइंट / सत्यापन पाया गया था, जिसमें मैंने पहली बार विशेष महत्व नहीं दिया था, लेकिन फिर भी इस पर स्क्रिप्ट सेट करें - / सत्यापन / लॉगिन उपनिर्देशिका पाया गया था। संक्रमण के बाद, /verification/login/?redirect_uri=https://vulnerabledomain.com पृष्ठ प्रदर्शित किया गया था, जो लॉगिन के बाद पुनर्निर्देशित किया गया था या लॉगिन होने के तुरंत बाद पुनर्निर्देशित किया गया था यदि कोई सत्र था। घुसपैठिए के लिए उड़ान भरने के बाद, एक खुला पुनर्निर्देशन संरक्षण बाईपास की खोज की गई थी - weakabledomain.com@anotherdomain.com। XSS - जावास्क्रिप्ट: अलर्ट (1) पेलोड विफल हुआ, जावास्क्रिप्ट: अलर्ट (1) // भी। लेकिन जावास्क्रिप्ट पेलोड: // https: //vulnerablesite.com/%250A1? अलर्ट (1): 0 शॉट, क्योंकि कमजोरियों की उपस्थिति के कारण। Com, पैरामीटर ने श्वेत सूची सत्यापन को पारित कर दिया।



अधिसूचना विंडो (मैं हमेशा करता हूं) के माध्यम से माउस को दूर से चलाने के बाद, मैं तुरंत अपने कुकी-आधारित XSS पर काम करने के लिए तैयार हूं। जावास्क्रिप्ट का उपयोग करना: https: //vulnerabledomain.com/%0A1? दस्तावेज़% 2ecookie% 20% 3D% 20% 27SID% 3D137gf6g67f76fg6766123% 5c- 27-चेतावनी% 28document% 2 स्वतंत्रता% 29-% 5c% 27% 3b% 20bires 20% 3dFri% 2c% 203% 20Aug% 202019% 2020% 3a47% 3a11% 20UTC% 3b% 20path% 3D% 2b% 3b% 20domain% 3D% 2evuladomomain% 2ecom% 3b% 27% 3a0 कुकी अब सफलतापूर्वक * .vulnerner पर बैठ गया है। । कुकी के साथ पृष्ठ पर जाने के बाद, क़ीमती अलर्ट को हटा दिया गया! डबल XSS, चीयर्स! :) मैंने रिपोर्ट को पूरक किया और उत्तर की प्रतीक्षा की।



उसी दिन, "नाइस कैच" ने त्रिकोणीय (यदि आप इसे कॉल कर सकते हैं) से उड़ान भरी, और इनाम का भुगतान किया गया था। भगवान उन कंपनियों को आशीर्वाद देते हैं जो भुगतान करते हैं!

DOM आधारित XSS के लिए, जिसके साथ मैंने कुकी स्थापित की, बाउंटी भी आ गया।



परीक्षा परिणाम


$ 1000 + $ 1000 + $ 200 (OR) + $ 100 (OR) = $ 2300

यह कार्यक्रम एक वर्ष से अधिक समय से कार्य कर रहा है, लेकिन एक महीने से भी कम समय में मैं इसमें पहला स्थान लेने में सक्षम था और परीक्षण के साथ काफी आगे बढ़ गया - मैंने अधिकांश समापन बिंदुओं को चरणबद्ध करने, उनकी प्रतिक्रिया का मूल्यांकन करने की कोशिश की, समझें कि साइट कैसे काम करती है और यहां तक ​​कि डेस्कटॉप एप्लिकेशन का भी परीक्षण किया गया है। यह बग बाउंटी प्रोग्राम हैकरऑन पर सबसे प्रिय बन गया है। मुझे आशा है कि आप भी किसी दिन वही पाएंगे! :)



इसके अलावा, यह ऐसा कार्यक्रम था जिसने मुझे एक नया बढ़ावा दिया (mail.ru - पहला वाला), - इसके साथ मुझे 2500 प्रतिष्ठा मिली (हेलो हूडि) और 90 दिनों में प्रतिष्ठा के लिए लीडरबोर्ड में 36 वां स्थान प्राप्त किया, जिसे ताजा कब्रें देनी चाहिए । हालांकि ऐसा लगता है कि लीडरबोर्ड पर उपस्थिति की परवाह किए बिना ग्राफ्ट्स आते हैं, मैं अक्सर पुराने ग्राफ्ट को रद्द कर देता हूं और लाइन में नए लोगों की प्रतीक्षा करता हूं।

संक्षिप्त समय


  • कुकी आधारित XSS पूरी तरह से शोषक हैं। यदि आप कोशिश करते हैं और थोड़ा गहरा खुदाई करते हैं, तो आप n / a के बजाय एक बाउंटी प्राप्त कर सकते हैं, सिग्नल और -5 प्रतिष्ठा को नष्ट कर सकते हैं।
  • यदि कार्यक्रम पुराना है, तो इसका मतलब यह नहीं है कि इसमें कोई भेद्यता नहीं होगी। यदि फल लंबे समय तक पेड़ पर लटके रहते हैं, तो कम लटकने वाले फलों को उठाकर तुरंत ले जाया जाएगा (उपडोमेन टेकओवर इत्यादि)। अन्य फल लटकते रहते हैं, लेकिन अधिक होते हैं। उन्हें पाने के लिए, आपको कुछ प्रयास करने की आवश्यकता है।
  • कभी-कभी लंबे समय तक एक कार्यक्रम पर ध्यान केंद्रित करना बेहतर होता है, जितनी संभव हो उतने कमजोरियों का पता लगाएं और इसकी निगरानी करें। उस प्रोग्राम को खोजना बेहतर है जिसे आप पसंद करते हैं और उसे तोड़ते हैं।
  • दृढ़ता और यह समझने की इच्छा कि वेब एप्लिकेशन कैसे काम करता है, साथ ही साथ कुछ कार्यात्मकताएं और एक-दूसरे के साथ उनकी बातचीत, बग बाउंटी में कमजोरियों की सफलतापूर्वक खोज करने की कुंजी है।

यदि आप मेरे नवीनतम लेखों और खबरों से बचना चाहते हैं, तो मैं आपको टेलीग्राम चैनल / ट्विटर की सदस्यता लेने की सलाह देता हूं, जिनके लिंक नीचे मिल सकते हैं।

Source: https://habr.com/ru/post/hi460101/


All Articles