hacktricks/pentesting-web/cache-deception.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

26 KiB

कैश पॉइजनिंग और कैश धोखाधड़ी

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥


Trickest का उपयोग करें और आसानी से वर्कफ़्लो बनाएं और स्वचालित करें जो दुनिया के सबसे उन्नत समुदाय उपकरणों द्वारा संचालित होते हैं।
आज ही पहुंच प्राप्त करें:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

अंतर

वेब कैश पॉइजनिंग और वेब कैश धोखाधड़ी के बीच क्या अंतर है?

  • वेब कैश पॉइजनिंग में, हमलावर अनुप्रयोग को कैश में कुछ खतरनाक सामग्री संग्रहीत करने के कारण, और यह सामग्री कैश से अन्य अनुप्रयोग उपयोगकर्ताओं को सेवा कराई जाती है।
  • वेब कैश धोखाधड़ी में, हमलावर अनुप्रयोग को कैश में किसी अन्य उपयोगकर्ता की कुछ संवेदनशील सामग्री संग्रहीत करने के कारण, और फिर हमलावर इस सामग्री को कैश से प्राप्त करता है।

कैश पॉइजनिंग

कैश को पॉइजन करने का उद्देश्य है कि ग्राहक अप्रत्याशित संसाधनों को आंशिक रूप से या हमलावर द्वारा नियंत्रित किए गए संसाधनों को लोड करें
पॉइजन किए गए प्रतिक्रिया को केवल उन उपयोगकर्ताओं को सेवा किया जाएगा जो कैश पॉइजन होने पर प्रभावित पृष्ठ का दौरा करते हैं। इसके परिणामस्वरूप, प्रभाव अस्तित्वहीन से लेकर विशाल हो सकता है, यह उस पृष्ठ की लोकप्रियता पर निर्भर करेगा।

कैश पॉइजनिंग हमला करने के लिए, आपको पहले अविच्छेद्य इनपुट्स की पहचान करनी होगी (कैश अनुरोध पर प्रदर्शित होने की आवश्यकता नहीं होती है, लेकिन प्रतिस्पर्धी पृष्ठ को बदलते हैं), इस पैरामीटर का दुरुपयोग कैसे करें और प्रतिक्रिया को कैश करें

खोज: HTTP हैडर्स की जांच करें

आमतौर पर, जब एक प्रतिक्रिया को कैश में संग्रहीत किया गया होता है, तो इसका हैडर इसकी सूचित करता है, आप इस पोस्ट में देख सकते हैं कि आपको किस हैडर्स पर ध्यान देना चाहिए: HTTP कैश हैडर्स

खोज: कैशिंग 400 कोड

यदि आप सोच रहे हैं कि प्रतिक्रिया कैश में संग्रहीत हो रही है, तो आपको एक बुरा हैडर के साथ अनुरोध भेजने की कोशिश करनी चाहिए, जिसे स्थिति कोड 400 के साथ प्रतिस्पर्धी पृष्ठ के साथ प्रतिसादित किया जाना चाहिए। फिर सामान्य रूप से अनुरोध तक पहुंचने की कोशिश करें और यदि प्रतिक्रिया 400 स्थिति कोड है, तो आप जानते हैं कि यह विकल्पशील है (और आप यहां तक कि आप एक डीओएस भी कर सकते हैं)।
एक खराबी संरचित हैडर केवल \: हो सकती है।
_ध्यान दें कि कभी-कभी इस तरह के स्थिति कोड

<script type="text/javascript" src="//<X-Forwarded-For_value>/resources/js/tracking.js"></script>

बैक-एंड सर्वर से हानिकारक प्रतिक्रिया प्राप्त करें

पैरामीटर/हेडर की पहचान करें और देखें कि यह कैसे "सैनिटाइज़" किया जाता है और कहां से "प्रतिक्रिया" को प्रभावित कर रहा है। क्या आप इसे किसी भी तरीके से दुरुपयोग कर सकते हैं (एक्सएसएस का उपयोग करें या अपने द्वारा नियंत्रित जेएस कोड लोड करें? डीओएस का कार्य करें?...)

प्रतिक्रिया को कैश करें

जब आपने दुरुपयोग करने योग्य पृष्ठ की पहचान कर ली हो, जिस पैरामीटर/हेडर का उपयोग करना है और उसे कैसे दुरुपयोग करना है, तो आपको पृष्ठ को कैश करने की आवश्यकता होगी। कैश में प्राप्त करने के लिए कुछ समय लग सकता है, आपको कई सेकंड के लिए प्रयास करने की आवश्यकता हो सकती है।
प्रतिक्रिया में हेडर X-Cache बहुत उपयोगी हो सकता है क्योंकि यह मान रख सकता है कि जब अनुरोध को कैश नहीं किया गया था तो मान miss हो सकता है और जब यह कैश होता है तो मान hit हो सकता है।
हेडर Cache-Control भी दिलचस्प हो सकता है ताकि पता चले कि किसी संसाधन को कैश किया जा रहा है और अगली बार संसाधन को कैश किया जाएगा कब होगा: Cache-Control: public, max-age=1800
एक और दिलचस्प हेडर Vary है। यह हेडर आमतौर पर उपयोग किया जाता है ताकि यह दिखा सके कि अतिरिक्त हेडर को कैश कुंजी का हिस्सा माना जाता है, भले ही वे सामान्यतः अनकी हों। इसलिए, यदि उपयोगकर्ता उस पीड़ित का User-Agent जानता है, तो वह उस विशेष User-Agent का उपयोग करके उस उपयोगकर्ता के लिए कैश को दुषित कर सकता है।
कैश के संबंध में एक और हेडर Age है। इससे प्रोक्सी कैश में वस्तु कितने सेकंड से है, यह परिभाषित करता है।

एक अनुरोध को कैश करते समय, उपयोग करने वाले हेडर्स के साथ सतर्क रहें क्योंकि इनमें से कुछ हेडर्स को अप्रत्याशित रूप से कुंजीबद्ध रूप में उपयोग किया जा सकता है और पीड़ित को उसी हेडर का उपयोग करने की आवश्यकता होगी। हमेशा अलग-अलग ब्राउज़र्स के साथ एक कैश पॉइज़निंग का परीक्षण करें और देखें कि क्या यह काम कर रहा है।

उदाहरणों का शोषण

सबसे आसान उदाहरण

X-Forwarded-For जैसा एक हेडर प्रतिक्रिया में असैनिटाइज़ कर रहा है
आप एक मूल XSS पेलोड भेज सकते हैं और कैश को दुषित कर सकते हैं ताकि पृष्ठ का उपयोग करने वाले हर कोई XSS हो जाए:

GET /en?region=uk HTTP/1.1
Host: innocent-website.com
X-Forwarded-Host: a."><script>alert(1)</script>"

नोट करें कि यह /en के बजाय /en?region=uk परिवेश में एक अनुरोध को पॉइजन करेगा

कुकी-हैंडलिंग कमजोरियों का शोषण करने के लिए वेब कैश पॉइजनिंग का उपयोग करना

कुकी एक पेज के प्रतिक्रिया पर भी प्रतिबिंबित हो सकती है। यदि आप इसे उदाहरण के लिए एक XSS को कारण बनाने के लिए दुरुपयोग कर सकते हैं, तो आप दुष्ट कैश प्रतिक्रिया लोड करने वाले कई क्लाइंट्स में XSS का शोषण कर सकते हैं।

GET / HTTP/1.1
Host: vulnerable.com
Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b"

ध्यान दें कि यदि दुर्भाग्यपूर्ण कुकी उपयोगकर्ताओं द्वारा बहुत उपयोग की जाती है, नियमित अनुरोध कैश को साफ कर देंगे।

वेब कैश पॉइजनिंग संरक्षण कमजोरियों का उपयोग करने के लिए एकाधिक हैडर्स का उपयोग करें

कभी-कभी आपको कैश का दुरुपयोग करने के लिए कई अनकी इनपुट का दुरुपयोग करने की आवश्यकता होगी। उदाहरण के लिए, यदि आप X-Forwarded-Host को अपने द्वारा नियंत्रित डोमेन पर सेट करते हैं और X-Forwarded-Scheme को http पर सेट करते हैं, तो आपको एक खुला पुनर्निर्देशन मिल सकता है। अगर सर्वर सभी HTTP अनुरोधों को HTTPS पर फ़ॉरवर्ड कर रहा है और पुनर्निर्देश के लिए डोमेन नाम के रूप में हेडर X-Forwarded-Scheme का उपयोग कर रहा है। आप पुनर्निर्देश के लिए पृष्ठ को कहां दिखाना चाहते हैं, उसे आप नियंत्रित कर सकते हैं।

GET /resources/js/tracking.js HTTP/1.1
Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net
X-Forwarded-Host: ac8e1f8f1fb1f8cb80586c1d01d500d3.web-security-academy.net/
X-Forwarded-Scheme: http

सीमित Vary हैडर का उपयोग करके शोषण करना

यदि आपने पाया है कि X-Host हैडर का उपयोग एक JS संसाधन लोड करने के लिए डोमेन नाम के रूप में किया जा रहा है, लेकिन प्रतिक्रिया में Vary हैडर User-Agent को दर्शा रहा है। तो, आपको पीड़ित का User-Agent निकालने और उस उपयोगकर्ता एजेंट का उपयोग करके कैश को दुषित करने का एक तरीका ढूंढ़ना होगा:

GET / HTTP/1.1
Host: vulnerbale.net
User-Agent: THE SPECIAL USER-AGENT OF THE VICTIM
X-Host: attacker.com

HTTP रिक्ति द्वारा कैश धोखाधड़ी का उपयोग करके HTTP अनुरोध अपराध का उपयोग करके एक्सप्लॉइट करना

यहां सीखें कि HTTP अनुरोध अपराध का उपयोग करके कैश धोखाधड़ी हमले को कैसे करें

वेब कैश धोखाधड़ी के लिए स्वचालित परीक्षण

वेब कैश संवर्धन स्कैनर का उपयोग वेब कैश धोखाधड़ी के लिए स्वचालित रूप से परीक्षण करने के लिए किया जा सकता है। इसमें कई विभिन्न तकनीकों का समर्थन होता है और यह अत्यंत अनुकूलनयोग्य है।

उदाहरण उपयोग: wcvs -u example.com


Trickest का उपयोग करें और आसानी से विश्व के सबसे उन्नत समुदाय उपकरणों द्वारा संचालित कार्यप्रवाह बनाएं और स्वचालित करें।
आज ही पहुंच प्राप्त करें:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

भ्रष्ट उदाहरण

अपाचे ट्रैफिक सर्वर (CVE-2021-27577)

ATS ने URL में शार्टकट को छोड़कर फ्रेगमेंट को आगे भेजा और केवल होस्ट, पथ और क्वेरी (फ्रेगमेंट को अनदेखा करते हुए) का कैश कुंजी उत्पन्न की। इसलिए अनुरोध /#/../?r=javascript:alert(1) को बैकएंड को /#/../?r=javascript:alert(1) के रूप में भेजा गया था और कैश कुंजी में इसमें पेलोड नहीं था, केवल होस्ट, पथ और क्वेरी थी।

GitHub CP-DoS

कंटेंट-टाइप हैडर में एक बुरा मान भेजने से 405 कैश किया गया प्रतिक्रिया उत्पन्न हुई। कैश कुंजी में कुकी शामिल थी, इसलिए केवल अनधिकृत उपयोगकर्ताओं पर हमला करना संभव था।

GitLab + GCP CP-DoS

GitLab स्टेटिक सामग्री संग्रहित करने के लिए GCP बकेट का उपयोग करता है। GCP Buckets को हेडर x-http-method-override का समर्थन है। इसलिए हेडर x-http-method-override: HEAD भेजने और कैश को खाली प्रतिक्रिया बॉडी लौटाने के लिए कैश को धोखा देना संभव था। यह उपयोग भी विधि PURGE का समर्थन कर सकता है।

रैक मिडडलवेयर (रूबी ऑन रेल्स)

रूबी ऑन रेल्स एप्लिकेशन अक्सर रैक मिडडलवेयर के साथ डिप्लॉय किया जाता है। नीचे दिए गए रैक कोड में x-forwarded-scheme मान का मूल्य लेता है और इसे अनुरोध की योजना के रूप में उपयोग करता है।

x-forwarded-scheme: http हेडर भेजने पर एक 301 पुनर्निर्देशटो एक ही स्थान पर होगा जिससे उस संसाधन पर एक डीओएस होगा जैसा कि इस उदाहरण में है:

एप्लिकेशन शीर्षक X-forwarded-host का समर्थन भी कर सकता है और उपयोगकर्ता को उस मेजबान पर पुनर्निर्देशित कर सकता है, जिससे हमलावर के सर्वर से जावास्क्रिप्ट फ़ाइलों को लोड करने की संभावना होती है:

403 और स्टोरेज बकेट

पहले, Cloudflare को 403 प्रतिक्रियाओं को कैश करने का उपयोग किया जाता था, इसलिए बुरी अधिकृति हेडर्स भेजने पर S3 या Azure Storage Blobs तक पहुंच करने की कोशिश करने पर 403 लौटाया जाता था जो कैश हो जाता था। क्लाउडफ्लेयर अब 403 प्रत

संदर्भ


Trickest का उपयोग करें और आसानी से वर्कफ़्लो बनाएं और संचालित करें, जो दुनिया के सबसे उन्नत समुदाय उपकरणों द्वारा संचालित होते हैं।
आज ही पहुंच प्राप्त करें:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥