PostMessage Vulnerabilities
PostMessage वंरबिलिटी
PostMessage भेजें
PostMessage एक संदेश भेजने के लिए निम्नलिखित फ़ंक्शन का उपयोग करता है:
ध्यान दें कि targetOrigin एक '*' या एक URL जैसे https://company.com हो सकता है। दूसरे स्थिति में, संदेश केवल उस डोमेन पर भेजा जा सकता है (यदि विंडो ऑब्ज
addEventListener शोषण
addEventListener
वह फ़ंक्शन है जिसका उपयोग JS द्वारा किया जाता है जो postMessages
की अपेक्षा कर रहा है।
निम्नलिखित कोड का उपयोग किया जाएगा:
गणना
वर्तमान पृष्ठ में इवेंट लिस्टनर्स खोजने के लिए आप:
JS कोड में
window.addEventListener
और$(window).on
(JQuery version) के लिए खोज करेंडेवलपर टूल्स कांसोल में निम्नलिखित को एक्सीक्यूट करें:
getEventListeners(window)
ब्राउज़र के डेवलपर टूल्स में Elements --> Event Listeners पर जाएं
https://github.com/benso-io/posta या https://github.com/fransr/postMessage-tracker जैसा ब्राउज़र एक्सटेंशन उपयोग करें। ये ब्राउज़र एक्सटेंशन सभी संदेशों को अंतर्दृष्टि करेंगे और आपको उन्हें दिखाएंगे।
मूल की जाँच छल
event.isTrusted
विशेषता को सुरक्षित माना जाता है क्योंकि यह केवल वास्तविक उपयोगकर्ता क्रियाओं द्वारा उत्पन्न इवेंट्स के लिएTrue
लौटाता है। यदि सही ढंग से लागू किया गया है, तो इसे छलने में कठिनाई होती है, लेकिन सुरक्षा जांचों में इसका महत्व विशेष है।PostMessage इवेंट में मूल की जाँच के लिए
indexOf()
का उपयोग छलने के लिए संभावित है। इस वंशानुक्रमण को दिखाने वाला एक उदाहरण निम्नलिखित है:
String.prototype.search()
सेsearch()
विधि नियमित अभिव्यक्तियों के लिए है, स्ट्रिंग्स के लिए नहीं। रेगुलर एक्सप्रेशन के लिए कुछ भी नहीं पास करने से इसे इम्प्लिसिट रूप से रेगेक्स में बदल दिया जाता है, जिससे विधि संभावना सुरक्षित नहीं होती है। इसका कारण यह है कि रेगेक्स में डॉट (.) एक वाइल्डकार्ड के रूप में काम करता है, जिससे विशेष रूप से तैयार किए गए डोमेन के साथ मान्यता को छल सकती है। उदाहरण के रूप में:
search()
की तरह,match()
फ़ंक्शन भी रेगेक्स को प्रोसेस करता है। यदि रेगेक्स गलती से निर्मित है, तो छलने के लिए संभावना हो सकती है।escapeHtml
फ़ंक्शन इनपुट को एस्केप करके साफ करने के लिए है। हालांकि, यह एक नया एस्केप्ड ऑब्ज
आप एक आइफ्रेम बना सकते हैं जो postMessage
भेजता है और तुरंत हटा दिया जाता है, जिससे संदेश का e.source
नल होने के लिए बनाया जा सकता है।
अधिक जानकारी के लिए पढ़ें:
pageBypassing SOP with Iframes - 2X-Frame-Header बाइपास
इन हमलों को करने के लिए आपको आमतौर पर विक्टिम वेब पेज को एक आइफ्रेम
में डालने की सुविधा होनी चाहिए। लेकिन कुछ हेडर्स जैसे X-Frame-Header
ऐसा व्यवहार रोक सकते हैं।
उन स्थितियों में आप एक कम गुप्त धारण का उपयोग कर सकते हैं। आप विकल्पित वेब एप्लिकेशन के लिए एक नया टैब खोल सकते हैं और इसके साथ संवाद कर सकते हैं:
मुख्य पृष्ठ को ब्लॉक करके बच्चे को भेजे गए संदेश को चुराना
निम्नलिखित पृष्ठ पर आप देख सकते हैं कि आप मुख्य पृष्ठ को ब्लॉक करके डेटा भेजने से पहले एक बच्चा आइफ्रेम को चुराने के लिए कैसे उपयोग कर सकते हैं संवेदनशील पोस्टमैसेज डेटा और बच्चे में XSS का दुरुपयोग करके डेटा चुराने:
pageBlocking main page to steal postmessageआइफ्रेम स्थान को संशोधित करके संदेश चुर
अधिक जानकारी के लिए:
प्रोटोटाइप पोल्यूशन के बारे में पेज के लिंक
XSS के बारे में पेज के लिंक
क्लाइंट साइड प्रोटोटाइप पोल्यूशन से XSS के बारे में पेज के लिंक
संदर्भ
अभ्यास के लिए: https://github.com/yavolo/eventlistener-xss-recon
Last updated