Prototype Pollution
Prototype pollution is a JavaScript vulnerability that enables an attacker to add arbitrary properties to global object prototypes, which may then be inherited by user-defined objects.
name.__proto__
, name['__proto__']
, name.constructor.prototype
Steps:
Try different ways of adding an arbitrary property to
Object.prototype
. Try to inject an arbitrary property via the query string, URL fragment, and any JSON input. (es.__proto__[foo]=bar
-> In consoleObject.prototype.foo
)Identify a gadget property that allows you to execute arbitrary JavaScript.
Use DOM Invader and Server-Side Prototype Pollution Scanner.
More difficult to detect:
No source code access
Lack of developer tools
The DoS problem
Pollution persistence
POST
or PUT
requests that submit JSON data to an application or API are prime candidates
Detection
RCE
For identifying
For exploit
or
Last updated