
Сканер загрязнения прототипа с использованием headless chrome

Plution — это удобный способ массового сканирования страниц, уязвимых для загрязнения прототипов на стороне клиента, с помощью URL-полезной нагрузки. В конфигурации по умолчанию он использует жестко заданную полезную нагрузку, которая может обнаружить 11 из случаев, описанных здесь: https://github.com/BlackFan/client-side-prototype-pollution/tree/master/pp
Это не универсальное решение. Загрязнение прототипов — сложный зверь. Этот инструмент не делает ничего, что вы не могли бы сделать вручную. Это не отшлифованный суперинструмент без багов. Он функционален, но плохо написан и в лучшем случае считается альфа-версией.
Plution добавляет полезную нагрузку к предоставленным URL, переходит по каждому URL с помощью headless Chrome и выполняет javascript на странице, чтобы проверить, был ли прототип успешно загрязнен.
Базовое сканирование, вывод только на экран:
cat URLs.txt | plution
Сканирование с заданной полезной нагрузкой вместо жестко заданной:
cat URLs.txt|plution -p '__proto__.zzzc=example'
Примечание по пользовательским полезным нагрузкам: переменная, которую вы хотите внедрить, должна называться или отображаться как "zzzc". Это связано с тем, что для проверки загрязнения на каждой странице будет выполняться 'window.zzzc'.
Вывод:
При передаче '-o' с указанием пути будут выведены только URL-адреса страниц, которые были успешно загрязнены.
Параллельность:
Укажите опцию '-c', чтобы задать количество одновременных задач (по умолчанию 5)
Как его установить?
go get -u github.com/raverrr/plution
Почему именно ограничение проверкой, определен ли window.zzzc?
zzzc — это короткий шаблон, который вряд ли уже присутствует в прототипе. Если вам нужно больше свободы в отношении javascript, используйте https://github.com/detectify/page-fetch
Есть более конкретный вопрос?
Спросите меня в твиттере @divadbate.