Privilege escalation via server-side prototype pollution writeup

Descripción

This lab is vulnerable to DOM XSS via client-side prototype pollution. This is due to a gadget in a third-party library, which is easy to miss due to the minified source code. Although it’s technically possible to 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

Privilege escalation via server-side prototype pollution writeup

Al entrar encontraremos una tienda online. Iremos a ‘My account’ a iniciar sesión con el usuario ‘wiener’ y la contraseña ‘peter’. Al hacerlo aparecerá un formulario:

Interceptaremos la petición de enviar el formulario con el ‘Logger’ de Burp Suite:

Vemos que se envía un archivo JSON con los datos del formulario y se recibe uno con todos los atributos disponibles. Entre ellos está ‘isAdmin’ con el valor booleano ‘false’. Añadiremos al JSON el siguiente código:

"__proto__": {
    "isAdmin":true
}

Obteniendo la respuesta:

Nota: Es importante añadir una ‘,’ al final de la anterior propiedad para evitar errores cuando el servidor procese nuestra petición.

Al volver al navegador y actualizar la página, veremos que en el menú aparece la opción de ‘Admin panel’, permitiéndonos borrar al usuario ‘carlos’ y finalizando el laboratorio:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *