
Быстрый инструмент для сканирования уязвимости прототипного загрязнения на стороне клиента, написанный на Rust. 🦀
Фаззер для Prototype Pollution
Быстрый инструмент для сканирования уязвимостей prototype pollution на стороне клиента, написанный на Rust. 🦀
Просто скачайте готовый бинарный файл со страницы релизов и запускайте!
| ПРИМЕЧАНИЕ: Rust должен быть установлен! |
Использование cargo:
▶ cargo install ppfuzz
Ручная сборка исполняемого файла из исходного кода:
▶ git clone https://github.com/dwisiswant0/ppfuzz
▶ cd ppfuzz && cargo build --release
# бинарный файл находится в target/release/ppfuzz
ppfuzz использует chromiumoxide, для которого требуется установленный браузер Chrome или Chromium.
Если установлена переменная окружения CHROME, то она будет использоваться как исполняемый файл по умолчанию. В противном случае в стандартных местах ищутся файлы с именами google-chrome-stable, chromium, chromium-browser, chrome и chrome-browser. Если это не удается, проверяется /Applications/Google Chrome.app/... (на MacOS) или реестр (на Windows).

Как вы можете видеть на демонстрации выше (нажмите для просмотра в высоком качестве), ppfuzz пытается проверить наличие уязвимостей prototype-pollution, добавляя запросы объекта и указателя. Если уязвимость подтверждена, он определяет используемые скриптовые гаджеты и затем отображает дополнительную информацию о полезной нагрузке, которая может потенциально повысить её воздействие до XSS, обхода или внедрения cookie.
Использовать ppfuzz довольно просто!
▶ ppfuzz -l FILE [OPTIONS]
Используйте -l/--list, чтобы указать входной список:
▶ ppfuzz -l FILE
Вы также можете передать список с помощью перенаправления ввода/вывода:
▶ ppfuzz < FILE
— или объединить с выводом другой команды:
▶ cat FILE | ppfuzz
Показать только уязвимые цели/подавить ошибки:
▶ ppfuzz -l FILE 2>/dev/null
Вот все поддерживаемые параметры:
▶ ppfuzz -h
| Флаг | Описание | Значение по умолчанию |
|---|---|---|
| -l, --list | Список целевых URL-адресов | |
| -c, --concurrency | Уровень параллелизма | 5 |
| -t, --timeout | Макс. время ожидания соединения (с) | 30 |
| -h, --help | Печатает справочную информацию | |
| -V, --version | Печатает информацию о версии |
Когда я начинал ppfuzz, у меня было очень мало или совсем не было знаний о Rust, и я считаю, что может быть много недостатков/уязвимостей безопасности. Поэтому все вклады приветствуются, конечно — любые отчёты об ошибках и предложения ценятся, некоторые окружения ещё не тестировались.
Помимо того, что это моё учебное средство, этот инструмент был создан, потому что он был вдохновлён советом @R0X4R о том, как автоматизировать проверку prototype pollution с помощью page-fetch.
Поскольку этот инструмент включает некоторые вклады, я публично благодарю следующих пользователей за их помощь и ресурсы:
Fourty2#4842 (Discord) — за полезный обходной путь.ppfuzz распространяется под лицензией MIT. См. LICENSE.