
Uma ferramenta rápida para escanear vulnerabilidade de poluição de protótipo no lado do cliente, escrita em Rust. 🦀
Fuzzer de Poluição de Protótipo
Uma ferramenta rápida para escanear vulnerabilidades de poluição de protótipo no lado do cliente, escrita em Rust. 🦀
Simplesmente, baixe um binário pré-compilado da página de releases e execute!
| NOTA: Rust deve estar instalado! |
Usando cargo:
▶ cargo install ppfuzz
Construindo manualmente o executável a partir do código fonte:
▶ git clone https://github.com/dwisiswant0/ppfuzz
▶ cd ppfuzz && cargo build --release
# arquivo binário localizado em target/release/ppfuzz
ppfuzz usa chromiumoxide, que requer que o navegador Chrome ou Chromium esteja instalado.
Se a variável de ambiente CHROME estiver definida, ela será usada como executável padrão. Caso contrário, os nomes de arquivo google-chrome-stable, chromium, chromium-browser, chrome e chrome-browser são pesquisados em locais padrão. Se isso falhar, /Applications/Google Chrome.app/... (no MacOS) ou o registro (no Windows) é consultado.

Como você pode ver na demonstração acima (clique para ver em alta qualidade), ppfuzz tenta verificar vulnerabilidades de poluição de protótipo adicionando um objeto e consultas de ponteiro. Se for realmente vulnerável, ele identificará os gadgets de script usados e, em seguida, exibirá informações adicionais de payload que podem potencialmente escalar seu impacto para XSS, bypass ou injeção de cookies.
É bastante simples usar o ppfuzz!
▶ ppfuzz -l ARQUIVO [OPÇÕES]
Use -l/--list para fornecer uma lista de entrada:
▶ ppfuzz -l ARQUIVO
Você também pode fornecer a lista usando redirecionamento de E/S:
▶ ppfuzz < ARQUIVO
— ou encadeá-la a partir da saída de outro comando:
▶ cat ARQUIVO | ppfuzz
Mostrar apenas alvos vulneráveis/suprimir erros:
▶ ppfuzz -l ARQUIVO 2>/dev/null
Aqui estão todas as opções suportadas:
▶ ppfuzz -h
| Flag | Descrição | Valor padrão |
|---|---|---|
| -l, --list | Lista de URLs alvo | |
| -c, --concurrency | Define o nível de concorrência | 5 |
| -t, --timeout | Tempo máximo permitido para conexão (s) | 30 |
| -h, --help | Exibe informações de ajuda | |
| -V, --version | Exibe informações de versão |
Quando comecei o ppfuzz, eu tinha muito pouco ou nenhum conhecimento em Rust e acredito que pode haver muitas desvantagens/vulnerabilidades de segurança. Portanto, todas as contribuições são bem-vindas, claro — quaisquer relatórios de bugs e sugestões são apreciados, alguns ambientes ainda não foram testados.
Além de ser meu meio de aprendizado, esta ferramenta foi criada porque foi inspirada pela dica de @R0X4R sobre como automatizar a verificação de poluição de protótipo usando page-fetch.
Como esta ferramenta inclui algumas contribuições, agradeço publicamente aos seguintes usuários por suas ajudas e recursos:
Fourty2#4842 (Discord) - por uma solução alternativa útil.ppfuzz é distribuído sob MIT. Veja LICENSE.