Vulnerabilidad de Contaminación de Prototipo(Prototype Pollution): Prueba de Concepto y Explicación
La técnica de ataque conocida como Prototype Pollution se vale de debilidades presentes en la forma en que se implementan los objetos en JavaScript. Este método se emplea para alterar la propiedad «prototype» de un objeto en una aplicación web, brindando al atacante la capacidad de ejecutar código malicioso o manipular la información de la aplicación.
En el contexto de JavaScript, la propiedad «prototype» se utiliza para definir las características y funciones de un objeto. Los atacantes aprovechan esta particularidad del lenguaje para modificar las características y funciones de un objeto, logrando así tomar el control de la aplicación.
El ataque de Prototype Pollution se materializa cuando un atacante altera la propiedad «prototype» de un objeto en una aplicación web. Este acto puede llevarse a cabo manipulando datos transmitidos mediante formularios o solicitudes AJAX, o introduciendo código malicioso en el código JavaScript de la aplicación.
Una vez que el objeto ha sido manipulado, el atacante puede ejecutar código malicioso en la aplicación, manipular datos o incluso tomar el control de la sesión de un usuario. Un ejemplo ilustrativo sería la modificación de la propiedad «prototype» de un objeto de autenticación de usuario para permitir el acceso a una cuenta sin requerir una contraseña.
Las consecuencias de la explotación del ataque Prototype Pollution pueden ser graves, ya que los atacantes pueden asumir el control de la aplicación o comprometer los datos de los usuarios. Además, debido a que este tipo de ataque se basa en vulnerabilidades en la implementación de objetos en JavaScript, su detección y corrección pueden resultar desafiantes.
La herencia basada en objetos le otorga a JavaScript la flexibilidad y eficiencia que los programadores web han apreciado, pero también lo hace vulnerable a la manipulación.
Los actores maliciosos pueden realizar cambios en toda la aplicación de todos los objetos modificando el objeto, de ahí el nombre de «contaminación prototipo».
Curiosamente, los atacantes ni siquiera necesitan modificar directamente el objeto; pueden acceder a él a través de la propiedad __proto__ de cualquier objeto JavaScript. Y una vez que realizan un cambio en el objeto, este se aplica a todos los objetos JavaScript en una aplicación en ejecución, incluidos los creados después de la manipulación.
PoC
Vemos que este usuario no tiene privilegios de administrador y también podemos enviar un mensaje a un administrador.
Si echamos un vistazo al código, vemos que cuando somos admin la propiedad esta en «true», en cambio cuando no pone «false»
Si pasamos esta carga útil a la operación de merge sin sanitizar los campos, contaminará/moficara completamente los prototipos de objetos.

Muchísimas gracias por la mención y tomar como ejemplo nuestra máquina, maravilloso articulo y una explicación de 10. Muchas gracias compañero