# XS-Search/XS-Leaks
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) का उपयोग करके आसानी से **वर्कफ्लोज़ को ऑटोमेट** करें जो दुनिया के **सबसे उन्नत** समुदाय टूल्स द्वारा संचालित होते हैं।\
आज ही एक्सेस प्राप्त करें:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
AWS हैकिंग सीखें शून्य से नायक तकhtARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**।
* **अपनी हैकिंग ट्रिक्स साझा करें** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके।
## **मूल जानकारी**
XS-Search एक तकनीक है जो **क्रॉस-ओरिजिन जानकारी को एक्सफिल्ट्रेट** करने के लिए **साइड चैनल अटैक्स** का दुरुपयोग करती है।
इस प्रकार के हमले में विभिन्न तत्व होते हैं:
* **असुरक्षित वेब**: वह वेब जहां से हम कुछ जानकारी निकालना चाहते हैं
* **हमलावर का वेब**: वह वेब जिसे हमलावर बनाता है जिसमें एक्सप्लॉइट होता है और जिसे पीड़ित एक्सेस करता है
* **इनक्लूजन मेथड**: वह विधि जिसका उपयोग करके हमलावर के वेब से असुरक्षित वेब को लोड किया जाता है (जैसे window.open, iframe, fetch, href के साथ HTML टैग...)
* **लीक तकनीक**: असुरक्षित वेब तक पहुंचने के बाद, इनक्लूजन मेथड से प्राप्त जानकारी के साथ वेब की संभावित स्थिति के बीच अंतर करने के लिए एक तकनीक का उपयोग किया जाएगा।
* **स्थितियां**: वे 2 संभावित स्थितियां जो असुरक्षित वेब की हो सकती हैं जिन्हें हम पीड़ित के आधार पर अंतर करना चाहते हैं।
* **पता लगाने योग्य अंतर**: यह वह जानकारी है जिसका उपयोग हमलावर को असुरक्षित वेब की स्थिति का निर्णय करने के लिए करना होता है।
### पता लगाने योग्य अंतर
असुरक्षित पृष्ठ की 2 स्थितियों के बीच अंतर करने के लिए कई चीजों को देखा जा सकता है:
* **स्टेटस कोड**। एक हमलावर क्रॉस-ओरिजिन **विभिन्न HTTP प्रतिक्रिया स्थिति कोडों** को अंतर कर सकता है (उदाहरण के लिए, सर्वर त्रुटियां, ग्राहक त्रुटियां, या प्रमाणीकरण त्रुटियां)।
* **API उपयोग**। यह पता लगाने योग्य अंतर एक हमलावर को पृष्ठों के बीच **Web APIs’ उपयोग का पता लगाने** की अनुमति देता है, जिससे एक हमलावर यह अनुमान लगा सकता है कि क्या एक क्रॉस-ओरिजिन पृष्ठ एक विशेष JavaScript Web API का उपयोग कर रहा है।
* **रीडायरेक्ट्स**। यह संभव है कि यदि एक वेब एप्लिकेशन ने उपयोगकर्ता को एक अलग पृष्ठ पर **नेविगेट किया है** का पता लगाया जा सकता है। यह केवल HTTP रीडायरेक्ट्स तक सीमित नहीं है बल्कि JavaScript या HTML द्वारा ट्रिगर किए गए रीडायरेक्ट्स को भी शामिल करता है।
* **पृष्ठ सामग्री**। ये पता लगाने योग्य **अंतर HTTP प्रतिक्रिया शरीर** में स्वयं या पृष्ठ द्वारा शामिल किए गए उप-संसाधनों में प्रकट होते हैं। उदाहरण के लिए, यह **शामिल फ्रेमों की संख्या** हो सकती है (cf. XS-Leak on Gitlab) या छवियों के आकार के अंतर।
* **HTTP हेडर**। एक हमलावर एक **विशेष HTTP प्रतिक्रिया हेडर** की उपस्थिति का पता लगा सकता है और उसके मूल्य को एकत्र करने में सक्षम हो सकता है। इसमें X-Frame-Options, Content-Disposition, और Cross-Origin-Resource-Policy जैसे हेडर शामिल हैं।
* **समय**: एक हमलावर यह पता लगा सकता है कि 2 स्थितियों के बीच एक सुसंगत समय अंतर मौजूद है।
### इनक्लूजन मेथड
* **HTML तत्व**। HTML विभिन्न तत्व प्रदान करता है जो **क्रॉस-ओरिजिन संसाधन इनक्लूजन** को सक्षम करते हैं। स्टाइलशीट्स, इमेजेज, या स्क्रिप्ट्स जैसे तत्व, पीड़ित के ब्राउज़र को एक निर्दिष्ट गैर-HTML संसाधन के लिए अनुरोध करने के लिए मजबूर करते हैं। इस उद्देश्य के लिए संभावित HTML तत्वों की एक सूची ऑनलाइन उपलब्ध है ([https://github.com/cure53/HTTPLeaks](https://github.com/cure53/HTTPLeaks))।
* **फ्रेम्स**। जैसे **iframe**, **object**, और **embed** तत्व आगे HTML संसाधनों को सीधे हमलावर पृष्ठ में एम्बेड कर सकते हैं। यदि पृष्ठ **फ्रेमिंग सुरक्षा का उपयोग नहीं करता है**, तो JavaScript कोड contentWindow प्रॉपर्टी के माध्यम से फ्रेम्ड संसाधन की विंडो ऑब्जेक्ट तक पहुंच सकता है।
* **पॉप-अप्स**। **`window.open`** मेथड एक नए ब्राउज़र टैब या विंडो में एक संसाधन को लोड करता है। मेथड एक **विंडो हैंडल** वापस करता है जिसे JavaScript कोड SOP के अनुरूप तरीकों और गुणों तक पहुंचने के लिए उपयोग कर सकता है। इन्हें पॉप-अप्स कहा जाता है और अक्सर एकल साइन-ऑन में उपयोग किया जाता है। आधुनिक ब्राउज़र केवल तभी पॉप-अप्स की अनुमति देते हैं जब वे कुछ उपयोगकर्ता इंटरैक्शन द्वारा ट्रिगर किए जाते हैं। XS-Leak हमलों के लिए, यह मेथड विशेष रूप से सहायक है क्योंकि यह एक लक्ष्य संसाधन के लिए फ्रेमिंग और कुकी प्रतिबंधों को बायपास करता है। नए ब्राउज़र संस्करणों ने हाल ही में विंडो हैंडल को अलग करने के तरीके जोड़े हैं।
* **JavaScript अनुरोध**। JavaScript लक्ष्य संसाधनों को सीधे अनुरोध भेजने की अनुमति देता है। इस उद्देश्य के लिए दो अलग-अल
```html
```
```markdown
इस मामले में यदि `example.com/404` नहीं मिला तो `attacker.com/?error` लोड होगा।
### Onload Timing
* **Inclusion Methods**: HTML Elements
* **Detectable Difference**: Timing (आमतौर पर Page Content, Status Code के कारण)
* **अधिक जानकारी**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events)
* **सारांश:** [**performance.now()**](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) **API** का उपयोग करके यह मापा जा सकता है कि किसी अनुरोध को पूरा करने में कितना समय लगता है। हालांकि, अन्य घड़ियाँ भी उपयोग की जा सकती हैं, जैसे कि [**PerformanceLongTaskTiming API**](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming) जो 50ms से अधिक समय तक चलने वाले कार्यों की पहचान कर सकती है।
* **कोड उदाहरण**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#onload-events) एक और उदाहरण:
{% content-ref url="xs-search/performance.now-example.md" %}
[performance.now-example.md](xs-search/performance.now-example.md)
{% endcontent-ref %}
#### Onload Timing + Forced Heavy Task
यह तकनीक पिछली तकनीक की तरह ही है, लेकिन **attacker** यह भी **force** करेगा कि कुछ क्रिया **relevant amount time** लेगी जब **answer positive or negative** हो और उस समय को मापेगा।
{% content-ref url="xs-search/performance.now-+-force-heavy-task.md" %}
[performance.now-+-force-heavy-task.md](xs-search/performance.now-+-force-heavy-task.md)
{% endcontent-ref %}
### unload/beforeunload Timing
* **Inclusion Methods**: Frames
* **Detectable Difference**: Timing (आमतौर पर Page Content, Status Code के कारण)
* **अधिक जानकारी**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events)
* **सारांश:** [SharedArrayBuffer clock](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#sharedarraybuffer-and-web-workers) का उपयोग करके यह मापा जा सकता है कि किसी अनुरोध को पूरा करने में कितना समय लगता है। अन्य घड़ियाँ भी उपयोग की जा सकती हैं।
* **कोड उदाहरण**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#unload-events)
[`unload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event) और [`beforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event) घटनाओं का उपयोग करके संसाधन प्राप्त करने में लगने वाले समय को मापा जा सकता है। यह काम करता है क्योंकि **`beforeunload`** तब ट्रिगर होता है जब ब्राउज़र **नई नेविगेशन** अनुरोध करता है, जबकि **`unload`** तब ट्रिगर होता है जब वह **नेविगेशन वास्तव में होता है**। इस व्यवहार के कारण, इन दो घटनाओं के बीच समय अंतर की गणना करके यह मापा जा सकता है कि **ब्राउज़र को संसाधन प्राप्त करने में कितना समय लगा**।
### Sandboxed Frame Timing + onload
* **Inclusion Methods**: Frames
* **Detectable Difference**: Timing (आमतौर पर Page Content, Status Code के कारण)
* **अधिक जानकारी**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks)
* **सारांश:** [performance.now()](https://xsleaks.dev/docs/attacks/timing-attacks/clocks/#performancenow) API का उपयोग करके यह मापा जा सकता है कि किसी अनुरोध को पूरा करने में कितना समय लगता है। अन्य घड़ियाँ भी उपयोग की जा सकती हैं।
* **कोड उदाहरण**: [https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks](https://xsleaks.dev/docs/attacks/timing-attacks/network-timing/#sandboxed-frame-timing-attacks)
यदि किसी पृष्ठ में [Framing Protections](https://xsleaks.dev/docs/defenses/opt-in/xfo/) लागू नहीं किए गए हैं, तो एक attacker समय माप सकता है कि पृष्ठ और सभी सबरिसोर्सेज को नेटवर्क पर लोड होने में कितना समय लगता है। डिफ़ॉल्ट रूप से, एक iframe के लिए `onload` हैंडलर सभी संसाधनों के लोड होने के बाद और सभी जावास्क्रिप्ट के पूरा होने के बाद आमंत्रित किया जाता है। लेकिन, एक attacker `