Privilege escalation via server-side prototype pollution
Link: https://portswigger.net/web-security/prototype-pollution/server-side/lab-privilege-escalation-via-server-side-prototype-pollution
Description:
This lab is built on Node.js and the Express framework. It is vulnerable to server-side prototype pollution because it unsafely merges user-controllable input into a server-side JavaScript object. This is simple to detect because any polluted properties inherited via the prototype chain are visible in an HTTP response.
To solve the lab:
Find a prototype pollution source that you can use to add arbitrary properties to the global
Object.prototype
.Identify a gadget property that you can use to escalate your privileges.
Access the admin panel and delete the user
carlos
.
You can log in to your own account with the following credentials: wiener:peter
Proof of concept:
Lakukan analisa pada web target
Terlihat pada response endpoint saat melakukan request perubahan alamat pengiriman didapati data parameter
isAdmin
dengan nilaifalse
Pada JSON request, tambahkan payload basic prototype pollution JSON seperti berikut. Jika sudah, kirim kembali request yang telah ditambahkan payload tersebut
Terlihat pada response, dikirimkan kembali data JSON baru yaitu JSON yang sebelumnya ditambahkan. Maka dari itu, dapat disimpulkan bahwa web target pada fitur ubah alaman pengiriman tersebut rentan terhadap prototype pollution. Maka dari itu, dengan menggunakan teknik yang sama ubah nilai pada parameter
isAdmin
menjaditrue
agar dapat melakukan privilege escalation. Maka payload untuk melakukan privilege escalation tersebut akan terlihat seperti berikutLihat response yang diberikan, data pada parameter isAdmin telah berubah menjadi
true
. Dan ketika dilihat pada browser, terdapat fiturAdmin panel
yang artinya telah berhasil melakukan privilege escalation dari user biasa menjadi user adminUntuk menyelesaikan tantangan pada lab ini, lakukan penghapusan user
carlos
Thanks, Stay Ethical & Happy Hacking! 🍻
Last updated