
Ein schnelles Tool zum Scannen von Client-seitigen Prototype-Pollution-Schwachstellen, geschrieben in Rust. 🦀
Prototype-Pollution-Fuzzer
Ein schnelles Tool zum Scannen von clientseitigen Prototype-Pollution-Schwachstellen, geschrieben in Rust. 🦀
Laden Sie einfach ein vorgefertigtes Binärpaket von der Releases-Seite herunter und führen Sie es aus!
| HINWEIS: Rust sollte installiert sein! |
Mit cargo:
▶ cargo install ppfuzz
Manuelles Erstellen der ausführbaren Datei aus dem Quellcode:
▶ git clone https://github.com/dwisiswant0/ppfuzz
▶ cd ppfuzz && cargo build --release
# binary file located at target/release/ppfuzz
ppfuzz verwendet chromiumoxide, für das ein Chrome- oder Chromium-Browser installiert sein muss. Wenn die Umgebungsvariable CHROME gesetzt ist, wird diese als Standard-Executable verwendet. Andernfalls werden die Dateinamen google-chrome-stable, chromium, chromium-browser, chrome und chrome-browser an den üblichen Stellen gesucht. Wenn das fehlschlägt, wird /Applications/Google Chrome.app/... (unter MacOS) oder die Registry (unter Windows) konsultiert.

Wie Sie in der obigen Demo sehen können (zum Anzeigen in hoher Qualität klicken), versucht ppfuzz, Prototype-Pollution-Schwachstellen zu überprüfen, indem es Objekt- und Zeigerabfragen hinzufügt. Falls die Seite tatsächlich anfällig ist, werden die verwendeten Script-Gadgets identifiziert und zusätzliche Payload-Informationen angezeigt, die möglicherweise dessen Auswirkungen auf XSS, Bypass oder Cookie-Injection eskalieren lassen.
Die Verwendung von ppfuzz ist ziemlich einfach!
▶ ppfuzz -l FILE [OPTIONS]
Verwenden Sie -l/--list, um eine Eingabeliste bereitzustellen:
▶ ppfuzz -l FILE
Sie können die Liste auch per I/O-Umleitung bereitstellen:
▶ ppfuzz < FILE
— oder verketten Sie es mit der Ausgabe eines anderen Befehls:
▶ cat FILE | ppfuzz
Nur anfällige Ziele anzeigen / Fehler unterdrücken:
▶ ppfuzz -l FILE 2>/dev/null
Hier sind alle unterstützten Optionen:
▶ ppfuzz -h
| Flag | Beschreibung | Standardwert |
|---|---|---|
| -l, --list | Liste der Ziel-URLs | |
| -c, --concurrency | Festlegen der Parallelitätsstufe | 5 |
| -t, --timeout | Maximal zulässige Verbindungszeit (s) | 30 |
| -h, --help | Zeigt Hilfsinformationen an | |
| -V, --version | Zeigt Versionsinformationen an |
Als ich mit ppfuzz begann, hatte ich sehr wenig oder keine Kenntnisse über Rust, und ich glaube, dass es viele Nachteile/Sicherheitslücken geben könnte. Daher sind alle Beiträge willkommen, natürlich – Fehlerberichte und Vorschläge werden geschätzt; einige Umgebungen wurden noch nicht getestet.
Neben der Tatsache, dass es mein Lernmedium ist, wurde dieses Tool erstellt, weil es von @R0X4R's Tipp zur Automatisierung der Prototype-Pollution-Überprüfung mit page-fetch inspiriert wurde.
Da dieses Tool einige Beiträge enthält, möchte ich mich öffentlich bei den folgenden Benutzern für ihre Hilfe und Ressourcen bedanken:
Fourty2#4842 (Discord) - für hilfreiche Workarounds.ppfuzz wird unter MIT vertrieben. Siehe LICENSE.