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
Last updated
Link: https://portswigger.net/web-security/prototype-pollution/server-side/lab-privilege-escalation-via-server-side-prototype-pollution
Last updated
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 nilai false
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
menjadi true
agar dapat melakukan privilege escalation. Maka payload untuk melakukan privilege escalation tersebut akan terlihat seperti berikut
Lihat response yang diberikan, data pada parameter isAdmin telah berubah menjadi true
. Dan ketika dilihat pada browser, terdapat fitur Admin panel
yang artinya telah berhasil melakukan privilege escalation dari user biasa menjadi user admin
Untuk menyelesaikan tantangan pada lab ini, lakukan penghapusan user carlos
Thanks, Stay Ethical & Happy Hacking! 🍻