
Scanner de poluição de protótipo usando Chrome headless

Plution é uma maneira conveniente de escanear em larga escala por páginas que são vulneráveis à poluição de protótipo do lado do cliente através de um payload de URL. Na configuração padrão, ele usará um payload embutido que pode detectar 11 dos casos documentados aqui: https://github.com/BlackFan/client-side-prototype-pollution/tree/master/pp
Isso não é uma solução completa. Poluição de protótipo é uma fera complicada. Esta ferramenta não faz nada que você não pudesse fazer manualmente. Não é uma super ferramenta polida e livre de bugs. Ela é funcional, mas mal codificada e deve ser considerada no máximo alfa.
Plution anexa um payload às URLs fornecidas, navega para cada URL com chrome headless e executa javascript na página para verificar se um protótipo foi poluído com sucesso.
Escaneamento básico, saída apenas na tela:
cat URLs.txt | plution
Escaneamento com um payload fornecido em vez do embutido:
cat URLs.txt|plution -p '__proto__.zzzc=example'
Nota sobre payloads personalizados: A variável que você espera injetar deve se chamar ou renderizar para "zzzc". Isso porque 'window.zzzc' será executado em cada página para verificar a poluição.
Saída:
Passing '-o' followed by a location will output only URLs of pages that were successfully polluted.
Concorrência:
Pass the '-c' option to specify how many concurrent jobs are run (default is 5)
Como instalar?
go get -u github.com/raverrr/plution
Por que limitar especificamente a verificar se window.zzzc está definido?
zzzc is a short pattern that is unlikely to already be in a prototype. If you want more freedom in regards to the javascript use https://github.com/detectify/page-fetch instead
Tem uma pergunta mais específica?
Ask me on twitter @divadbate.