Back to Skills

prototype-pollution-advanced

Advanced prototype pollution playbook — server-side RCE, client-side gadgets, filter bypasses, and detection techniques. Companion to ../prototype-pollution/ for basics. Use when you've confirmed pollution and need to escalate to code execution or find framework-specific gadgets.

1,311stars179forksUpdated 7/8/2026

Security Assessment

Medium Risk(60/100)

Detected risks:

Command Injection([SKILL.md] child_process, [KNOWN_GADGETS.md] child_process)
Security Score60/100

About prototype-pollution-advanced

prototype-pollution-advanced is an offensive-security playbook for escalating a confirmed JavaScript prototype-pollution finding into higher-impact outcomes. It is positioned as a companion to a basic prototype-pollution skill and instructs loading that first for fundamentals such as merge sinks, the distinction between __proto__ and constructor.prototype, and basic probes. The material is intended for authorized penetration testing and covers both server-side and client-side exploitation.

On the server side it documents remote-code-execution paths through template engines such as EJS, Pug, Handlebars, and Nunjucks, as well as Express res.render and Node.js child_process gadgets that inherit polluted properties like shell, env, and NODE_OPTIONS. On the client side it catalogs gadgets in jQuery and Lodash, framework script gadgets (Angular.js, Vue.js, Ember.js, Backbone.js), and DOM property pollution that leads to XSS. A companion KNOWN_GADGETS.md reference tabulates gadgets by framework with polluted properties, trigger conditions, impact, and affected versions.

Use it after pollution is confirmed and the goal is code execution or framework-specific gadget discovery. It also provides systematic detection: black-box server-side probes using injected __proto__ payloads and error or response differentials (for example overwriting toString or valueOf to force crashes, or changing status and content-type), client-side checks against Object.prototype, and automated tooling including the PPScan and server-side-prototype-pollution Burp extensions plus the ppfuzz and ppmap CLIs. A dedicated section covers bypassing __proto__ filters via the constructor.prototype path, bracket notation, and JSON key variations, noting that Object.assign and shallow copies are safe and only deep or recursive merges are vulnerable.

FAQ

What prerequisite knowledge does this assume?

It is a companion to the basic prototype-pollution skill and instructs loading that first for fundamentals like merge sinks, __proto__ versus constructor.prototype, and basic probes.

Which server-side engines does it cover for RCE?

Template engines EJS, Pug, Handlebars, and Nunjucks, plus Express res.render and Node.js child_process gadgets that inherit polluted prototype properties.

How does it detect prototype pollution in black-box testing?

Server-side via injected __proto__ payloads and error or response differentials (such as overwriting toString/valueOf or changing status and content-type); client-side by checking Object.prototype for injected values.

What tools does it reference?

The Burp extensions PPScan and Gareth Heyes's server-side-prototype-pollution, plus the CLI tools ppfuzz and ppmap for client-side pollution.

How do you bypass a __proto__ filter?

Use the constructor.prototype path, bracket-notation variants, or JSON key variations. The skill notes Object.assign and shallow copies are safe, so only deep or recursive merges are exploitable.

All Files

2 files
SKILL.md10.8 KB
View
KNOWN_GADGETS.md9.1 KB
View

Install prototype-pollution-advanced

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill