SOME - Same Origin Method Execution

Support HackTricks

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

Support HackTricks

Last updated