La contaminación de prototipos (Prototype Pollution) es una vulnerabilidad de JavaScript que permite a un atacante añadir propiedades arbitrarias a prototipos de objetos globales, que luego pueden ser heredados por objetos definidos por el usuario.
ppfuzz es un fuzzer para escanear vulnerabilidades de contaminación de prototipos del lado del cliente escrita en Rust. A continuación, veamos cómo se usa.
Instalación
Binario
Simplemente, descarga un binario precompilado de la página de lanzamientos y ¡ejecútalo!
https://github.com/dwisiswant0/ppfuzz/releases
Fuente
Usando cargo
:
▶ cargo install ppfuzz
- o
Construcción manual del ejecutable a partir del código fuente:
▶ git clone https://github.com/dwisiswant0/ppfuzz
▶ cd ppfuzz && cargo build --release
# binary file located at target/release/ppfuzz
Dependencias
ppfuzz utiliza chromiumoxide, que requiere tener instalado el navegador Chrome o Chromium. Si la variable de entorno CHROME
está establecida, lo utilizará como ejecutable por defecto. En caso contrario, se buscan los nombres de archivo google-chrome-stable
, chromium
, chromium-browser
, chrome
y chrome-browser
en los lugares estándar. Si eso falla, /Applications/Google Chrome.app/… (en MacOS) o el registro (en Windows).
https://github.com/mattsse/chromiumoxide
Demostración

Como puedes ver en la demo de arriba, ppfuzz intenta comprobar si hay vulnerabilidades de prototype-pollution añadiendo un objeto & consultas de puntero, si efectivamente es vulnerable: tomará la huella digital de los gadgets de script utilizados y luego mostrará información adicional de la carga útil que potencialmente podría escalar su impacto a XSS, bypass o inyección de cookies.
Uso de ppfuzz
Utilizar ppfuzz es bastante sencillo.
▶ ppfuzz -l FILE [OPTIONS]
Básico
Utiliza -l/–list para proporcionar la lista de entrada:
▶ ppfuzz -l FILE
También puedes proporcionar la lista usando la redirección de E/S:
▶ ppfuzz < FILE
o encadenarla desde la salida de otro comando:
▶ cat FILE | ppfuzz
Mostrar sólo objetivos vulnerables/suprimir un error:
▶ ppfuzz -l FILE 2>/dev/null
Opciones
Aquí están todas las opciones que soporta:
▶ ppfuzz -h
Flag | Descripción | Valor por defecto |
---|---|---|
-l, –list | Lista de URL de destino | . |
-c, –concurrency | Establecer el nivel de concurrencia | 5 |
-t, –timeout | Tiempo máximo de conexión (es) | 30 |
-h, –help | Imprimir información de ayuda | . |
-V, –version | Imprime información sobre la versión | . |
https://github.com/dwisiswant0/ppfuzz