
Escáner de contaminación de prototipos usando headless Chrome

Plution es una forma conveniente de escanear a gran escala páginas que son vulnerables a la contaminación de prototipos del lado del cliente mediante un payload en la URL. En la configuración predeterminada, usará un payload hardcodeado que puede detectar 11 de los casos documentados aquí: https://github.com/BlackFan/client-side-prototype-pollution/tree/master/pp
Esto no es una solución integral. La contaminación de prototipos es una bestia complicada. Esta herramienta no hace nada que no puedas hacer manualmente. No es una super herramienta pulida y libre de errores. Es funcional pero mal codificada y debe considerarse alfa en el mejor de los casos.
Plution añade un payload a las URLs proporcionadas, navega a cada URL con Chrome headless y ejecuta javascript en la página para verificar si un prototipo fue contaminado exitosamente.
Escaneo básico, salida solo a pantalla:
cat URLs.txt | plution
Escaneo con un payload proporcionado en lugar del hardcodeado:
cat URLs.txt|plution -p '__proto__.zzzc=example'
Nota sobre payloads personalizados: La variable que esperas inyectar debe llamarse o renderizarse como "zzzc". Esto se debe a que se ejecutará 'window.zzzc' en cada página para verificar la contaminación.
Salida:
Passing '-o' followed by a location will output only URLs of pages that were successfully polluted.
Concurrencia:
Pase la opción '-c' para especificar cuántos trabajos concurrentes se ejecutan (por defecto es 5)
¿Cómo lo instalo?
go get -u github.com/raverrr/plution
¿por qué limitarlo específicamente a verificar si window.zzzc está definido?
zzzc es un patrón corto que es poco probable que ya esté en un prototipo. Si deseas más libertad con respecto al javascript, usa https://github.com/detectify/page-fetch en su lugar
¿Tienes una pregunta más específica?
Pregúntame en Twitter @divadbate.