SOME - Same Origin Method Execution
Same Origin Method Execution
ऐसे अवसर होंगे जहाँ आप एक पृष्ठ में कुछ सीमित जावास्क्रिप्ट निष्पादित कर सकते हैं। उदाहरण के लिए, उस मामले में जहाँ आप एक कॉलबैक मान को नियंत्रित कर सकते हैं जो निष्पादित होगा।
ऐसे मामलों में, आप जो सबसे अच्छा कर सकते हैं वह है DOM तक पहुँच प्राप्त करना ताकि आप वहाँ जो भी संवेदनशील क्रिया पा सकें उसे कॉल कर सकें (जैसे एक बटन पर क्लिक करना)। हालाँकि, आमतौर पर आप इस भेद्यता को छोटे एंडपॉइंट्स में पाएंगे जिनमें DOM में कोई दिलचस्प चीज नहीं है।
ऐसे परिदृश्यों में, यह हमला बहुत उपयोगी होगा, क्योंकि इसका लक्ष्य यह है कि आप एक ही डोमेन के विभिन्न पृष्ठ से DOM के अंदर सीमित JS निष्पादन का दुरुपयोग कर सकें जिसमें बहुत सारी दिलचस्प क्रियाएँ हैं।
बुनियादी रूप से, हमले का प्रवाह निम्नलिखित है:
एक कॉलबैक खोजें जिसे आप दुरुपयोग कर सकते हैं (संभावित रूप से [\w\._] तक सीमित)।
यदि यह सीमित नहीं है और आप कोई भी JS निष्पादित कर सकते हैं, तो आप इसे सामान्य XSS के रूप में दुरुपयोग कर सकते हैं।
शिकार को एक पृष्ठ खोलने के लिए मजबूर करें जो हमलावर द्वारा नियंत्रित है।
पृष्ठ स्वयं एक विभिन्न विंडो में खुलेगा (नई विंडो में
opener
ऑब्जेक्ट प्रारंभिक एक को संदर्भित करेगा)।प्रारंभिक पृष्ठ उस पृष्ठ को लोड करेगा जहाँ दिलचस्प DOM स्थित है।
दूसरा पृष्ठ कॉलबैक का दुरुपयोग करते हुए कमजोर पृष्ठ को लोड करेगा और
opener
ऑब्जेक्ट का उपयोग करके प्रारंभिक पृष्ठ में कुछ क्रिया तक पहुँच और निष्पादित करेगा (जो अब दिलचस्प DOM को शामिल करता है)।
ध्यान दें कि भले ही प्रारंभिक पृष्ठ दूसरे पृष्ठ बनाने के बाद एक नए URL तक पहुँचता है, दूसरे पृष्ठ का opener
ऑब्जेक्ट नए DOM में पहले पृष्ठ के लिए अभी भी एक मान्य संदर्भ है।
इसके अलावा, दूसरे पृष्ठ के लिए ओपनर ऑब्जेक्ट का उपयोग करने के लिए दोनों पृष्ठों का एक ही मूल में होना आवश्यक है। यही कारण है कि, इस भेद्यता का दुरुपयोग करने के लिए, आपको कुछ प्रकार का XSS एक ही मूल में खोजने की आवश्यकता है।
Exploitation
आप इस फॉर्म का उपयोग करके इस प्रकार की भेद्यता का शोषण करने के लिए एक PoC उत्पन्न कर सकते हैं: https://www.someattack.com/Playground/SOMEGenerator
एक क्लिक के साथ HTML तत्व के लिए DOM पथ खोजने के लिए आप इस ब्राउज़र एक्सटेंशन का उपयोग कर सकते हैं: https://www.someattack.com/Playground/targeting_tool
Example
आप एक कमजोर उदाहरण यहाँ पा सकते हैं: https://www.someattack.com/Playground/
ध्यान दें कि इस उदाहरण में सर्वर जावास्क्रिप्ट कोड उत्पन्न कर रहा है और इसे HTML में कॉलबैक पैरामीटर की सामग्री के आधार पर जोड़ रहा है:
<script>opener.{callbacl_content}</script>
। यही कारण है कि इस उदाहरण में आपकोopener
के उपयोग को स्पष्ट रूप से इंगित करने की आवश्यकता नहीं है।इस CTF लेखन को भी देखें: https://ctftime.org/writeup/36068
References
Last updated