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:

  1. Find a prototype pollution source that you can use to add arbitrary properties to the global Object.prototype.

  2. Identify a gadget property that you can use to escalate your privileges.

  3. 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:

  1. Lakukan analisa pada web target

  2. Terlihat pada response endpoint saat melakukan request perubahan alamat pengiriman didapati data parameter isAdmin dengan nilai false

  3. Pada JSON request, tambahkan payload basic prototype pollution JSON seperti berikut. Jika sudah, kirim kembali request yang telah ditambahkan payload tersebut

  4. 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

  5. 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

  6. Untuk menyelesaikan tantangan pada lab ini, lakukan penghapusan user carlos

Thanks, Stay Ethical & Happy Hacking! 🍻

Last updated