Skip to content

Cache Poisoning via URL Discrepancies

Published: at 17.02Edit artikel ini

Table of contents

Open Table of contents

Delimiters

Pemisah URL (URL delimiters) bervariasi tergantung framework dan server yang digunakan, yang memengaruhi cara permintaan diproses dan respons ditangani. Beberapa pemisah umum yang digunakan adalah:

Untuk menemukan pemisah lainnya, bisa mengikuti langkah-langkah berikut:

Normalisasi & Pengkodean

Pengkodean

Berbagai server HTTP dan proxy seperti Nginx, Node, dan CloudFront mendekode pemisah dengan cara yang berbeda, yang menyebabkan inkonsistensi di antara CDN dan server origin yang bisa dieksploitasi. Misalnya, jika server web melakukan transformasi seperti /myAccount%3Fparam/myAccount?param, tetapi server cache tetap menyimpan path dengan key /myAccount%3Fparam, maka akan ada inkonsistensi.

Cara untuk memeriksa inkonsistensi ini adalah dengan mengirim permintaan yang mengkodekan berbagai karakter setelah memuat path tanpa pengkodean dan memeriksa apakah respons dari path yang terkode dikembalikan dari respons yang disimpan di cache.

Segmen Titik

Normalisasi path yang melibatkan titik juga sangat menarik untuk serangan poisoning cache. Misalnya, /static/../home/index atau /aaa..\home/index, beberapa server cache akan menyimpan path ini dengan dirinya sendiri sebagai kunci sementara yang lain mungkin akan menyelesaikan path tersebut dan menggunakan /home/index sebagai kunci cache. Seperti sebelumnya, mengirim permintaan semacam ini dan memeriksa apakah respons berasal dari cache membantu untuk mengetahui jika respons untuk /home/index sama dengan respons yang dikirim ketika path tersebut diminta.

Sumber Daya Statis

Beberapa server cache akan selalu menyimpan respons jika itu dikenali sebagai statis. Ini mungkin disebabkan oleh:


Artikel Sebelumnya
HTTP Request Smuggling
Artikel Selanjutnya
Cache Poisoning to Dos