
Packer Fuzzer ist ein schneller und effizienter Scanner für die Sicherheitserkennung von Websites, die mit Javascript-Modul-Bündlern wie Webpack erstellt wurden.
Jegliche direkten oder indirekten Folgen und Verluste, die durch die Verbreitung oder Nutzung der von Packer Fuzzer (im Folgenden als „dieses Tool“ bezeichnet) bereitgestellten Erkennungsfunktionen entstehen, liegen in der alleinigen Verantwortung des Benutzers. Das Entwicklungsteam von Packer Fuzzer (im Folgenden als „dieses Team“ bezeichnet) übernimmt keinerlei Haftung hierfür.
Dieses Tool generiert automatisch einen Scan-Ergebnisbericht basierend auf den Erkennungsergebnissen des Benutzers. Dieser Bericht sowie alle daraus abgeleiteten Inhalte spiegeln nicht die Position oder Meinung dieses Teams wider.
Bitte beachten Sie bei der Nutzung dieses Tools die einschlägigen Gesetze und Vorschriften des Landes, in dem Sie sich befinden und in dem sich das Zielsystem befindet. Nicht autorisierte Tests sind in keiner Weise gestattet. Bei Verstößen gegen das Gesetz behalten wir uns das Recht vor, rechtliche Schritte gegen Sie einzuleiten und werden vollumfänglich mit den zuständigen Behörden zusammenarbeiten, um die Angelegenheit zu untersuchen.
Mit der zunehmenden Verbreitung von Frontend-Bundlern im Web begegnen Sie bei täglichen Penetrationstests und Sicherheitsdiensten immer häufiger Websites, die auf Webpack-Bundler setzen. Diese Bundler packen die gesamten APIs einer Website sowie deren Parameter zusammen, um sie zentral für das Web aufzurufen. Das erleichtert uns die schnelle Identifizierung der Funktionen und API-Listen der Website. Allerdings sind die von diesen Bundlern generierten JS-Dateien oft extrem zahlreich und der gesamte JS-Codeumfang ist enorm (oft mehrere zehntausend Zeilen), was manuelle Tests sehr mühsam macht. Packer Fuzzer wurde genau für diesen Zweck entwickelt.
Dieses Tool unterstützt die automatische, unscharfe Extraktion der entsprechenden Ziel-API-Endpunkte sowie deren Parameter. Es ermöglicht eine schnelle und effiziente Erkennung von sieben Schwachstellen: Nicht autorisierter Zugriff, Offenlegung sensibler Informationen, CORS, SQL-Injection, horizontale Privilegieneskalation, schwache Passwörter und beliebiges Datei-Upload. Nach dem Scan generiert das Tool automatisch einen Bericht. Sie können zwischen einer HTML-Version für die Analyse sowie den formelleren Versionen doc, pdf und txt wählen.
Sie müssen sich auch keine Sorgen um Sprachprobleme machen, da das Tool mit fünf Hauptsprachpaketen (einschließlich Berichtsvorlagen) ausgestattet ist: Vereinfachtes Chinesisch, Französisch, Spanisch, Englisch, Japanisch (sortiert nach Übersetzungsgenauigkeit). Übersetzt von unserem sehr unprofessionellen Team.
Hinweis: Die erste Version des Tools ist nur auf die Regeln des Webpack-Bundlers optimiert. Regeln für andere Bundler folgen in zukünftigen Versionen.
Dieses Tool wurde mit Python3 entwickelt. Stellen Sie vor der Ausführung sicher, dass Python3.X und pip3 installiert sind. Falls nicht, folgen Sie dieser Anleitung: https://www.runoob.com/python3/python3-install.html
MacOS-Benutzer können es schnell mit folgendem Befehl installieren:
brew install python3 # installiert automatisch pip3
Ubuntu-Benutzer können es schnell mit folgendem Befehl installieren:
sudo apt-get install -y python3 && sudo apt install -y python3-pip
CentOS-Benutzer können es schnell mit folgendem Befehl installieren:
sudo yum -y install epel-release && sudo yum install python3 && yum install -y python3-setuptools && easy_install pip
Dieses Tool führt nativen NodeJS-Code über node_vm2 aus. Daher empfehlen wir die Installation der NodeJS-Umgebung (andere JS-Laufzeitumgebungen werden nicht empfohlen, da dies zu Analysefehlern führen kann). Falls nicht installiert, folgen Sie dieser Anleitung: https://www.runoob.com/nodejs/nodejs-install-setup.html
Verwenden Sie den Befehl python3 PackerFuzzer.py [options], um das Tool auszuführen. Die options werden wie folgt beschrieben:
-h (--help)
Hilfe-Befehl, keine zusätzlichen Parameter. Zeigt alle unterstützten Parameter und deren Kurzbeschreibung an.
-u (--url)
Die zu scannende Website-URL, Pflichtfeld, z.B. -u https://demo.poc-sir.com.
-c (--cookie)
Zusätzliche Cookies, optional. Wenn angegeben, werden sie global übergeben, z.B. -c "POC=666;SIR=233".
-d (--head)
Zusätzlicher HTTP-Header, optional. Wenn angegeben, wird er global übergeben. Standardmäßig Cache-Control:no-cache, z.B. -d "Token:3VHJ32HF0".
-l (--lang)
Sprachoption. Wenn leer, wird automatisch die Systemsprache erkannt. Falls kein entsprechendes Sprachpaket vorhanden ist, wird auf Englisch umgeschaltet. Verfügbare Sprachpakete: Vereinfachtes Chinesisch (zh), Französisch (fr), Spanisch (es), Englisch (en), Japanisch (ja), z.B. -l zh.
-t (--type)
Unterteilt in Basis- und Fortgeschrittenen-Modus. Standardmäßig wird der Basismodus verwendet. Der Fortgeschrittenen-Modus scannt alle APIs erneut, extrahiert die entsprechenden Parameter unscharf und führt Tests auf SQL-Injection, horizontale Privilegieneskalation, schwache Passwörter und beliebiges Datei-Upload durch. Verwenden Sie die Option adv für den Fortgeschrittenen-Modus, z.B. -t adv.
-p (--proxy)
Globaler Proxy, optional. Wenn angegeben, wird global eine Proxy-IP verwendet, z.B. -p https://hack.cool:8080.
.db (Sqlite-Datenbank) finden. Beim Öffnen sehen Sie, dass alle Live-Ergebnisse des entsprechenden Projekts in dieser Datenbank gespeichert sind. Sie können die aktuellen Scanergebnisse direkt über die Cache-Datenbank analysieren.baseurl anzupassen, um die Erfolgsrate der API-Zusammenstellung zu erhöhen und die Anzahl der gesendeten Anfragen zu reduzieren. Die baseurl zu finden ist nicht schwer – lösen Sie einfach eine beliebige API auf der Zielseite aus und beobachten Sie den fehlenden Teil, um sie schnell zu identifizieren.--ah (--apihost), um die API-Serveradresse anzupassen.Als Administrator ausführen. Beachten Sie auch unter Linux/Mac die Berechtigungen und verwenden Sie idealerweise den Befehl sudo.Sie können direkt ein ISSUE im GitHub-Repository einreichen: https://github.com/rtcatc/Packer-Fuzzer/issues
Wenn Sie der Meinung sind, dass das konkrete Ziel nicht öffentlich gemacht werden sollte, können Sie uns eine E-Mail senden: admin[at]hackinn.com
Um die Analyse zu erleichtern, fügen Sie bitte die entsprechenden Logdateien aus dem logs-Verzeichnis bei. Vielen Dank für Ihre Mitarbeit!
Gleichzeitig können Sie den QR-Code der Gruppen-Chats auf der linken Seite scannen, um unserer WeChat-Diskussionsgruppe beizutreten (aufgrund von WeChat-Einschränkungen derzeit nicht verfügbar). Oder Sie scannen den persönlichen QR-Code von „天下大木头 (KpLi0rn)“ auf der rechten Seite mit dem Hinweis „Packer Fuzzer“, um von ihm in die Gruppe eingeladen zu werden:
Poc Sir
KpLi0rn
Liucy
RachesseHS
v1.0 2020/09/30
v1.1 2020/11/21
Einige Kompatibilitätsprobleme unter Windows behoben;
Verbesserung der globalen Zertifikatsüberprüfung;
Mehrere Fehler behoben, die zu schwerwiegenden Scanner-Fehlern führen konnten.
v1.2 2021/01/21
Hinzufügung der Erkennung von Frontend-Bundlern und der Asset-Baum-Anzeige;
Optimierung der asynchronen Extraktionsregeln und Hinzufügung von zwei neuen API-Erkennungsregeln;
Fehler behoben, der die korrekte Generierung von Berichten und Datenbanken verhinderte;
Stiller Modus hinzugefügt, geeignet für Batch-Tests oder Multiplattform-Integration;
Dringender Fix einer Schwachstelle, die zu beliebiger Befehlsausführung führen konnte.
v1.3 2021/04/23
Mehrere Fehler behoben, die zu Erkennungsanomalien führen konnten;
PyExecJS durch das sicherere node_vm2 ersetzt;
Terminal-Anzeige optimiert, neue interaktive Hinweise hinzugefügt;
Verarbeitungsmodus von BaseDir optimiert, benutzerfreundlicher gestaltet.
v1.4 2022/06/19
Mehrere Fehler behoben, die zu Laufzeitfehlern des Scanners führen konnten;
Entfernung veralteter Python-Erweiterungen;
HTML-Bericht optimiert, jetzt wird die Länge des API-Rückgabeinhalts angezeigt und kann sortiert werden;
POST- und GET-Anfrage-Umschaltmechanismus hinzugefügt;
Anpassung des Content-Type-Headers hinzugefügt;
Anpassung der POST-Dateninhalte hinzugefügt;
Anpassung der API-Serveradresse hinzugefügt.
MacOS-Benutzer können es schnell mit folgendem Befehl installieren:
brew install node
Ubuntu-Benutzer können es schnell mit folgendem Befehl installieren:
sudo apt-get install nodejs && sudo apt-get install npm
CentOS-Benutzer können es schnell mit folgendem Befehl installieren:
sudo yum -y install nodejs
Verwenden Sie den folgenden Befehl, um alle benötigten Python-Bibliotheken mit einem Klick zu installieren:
pip3 install -r requirements.txt
-j (--js)
Zusätzliche JS-Dateien, optional. Wenn Sie der Meinung sind, dass weitere JS-Dateien analysiert werden müssen, verwenden Sie diese Option, z.B. -j https://demo.poc-sir.com/js/index.js,https://demo.poc-sir.com/js/vue.js.
-b (--base)
Gibt den mittleren Teil der API an (z.B. wenn eine API https://demo.poc-sir.com/v1_api/login ist, dann ist der basedir v1_api), optional. Wenn Sie glauben, dass der automatisch extrahierte basedir ungenau ist, verwenden Sie diese Option, z.B. -b v1_api.
-r (--report)
Gibt das Format der generierten Berichte an. Standardmäßig werden HTML- und DOC-Berichte generiert. Verfügbare Formate: html, doc, pdf, txt, z.B. -r html,pdf.
-e (--ext)
Aktiviert die erweiterten Plugin-Optionen. Das Tool unterstützt die Erstellung eigener Plugins, die im Verzeichnis ext gespeichert werden (siehe demo.py in diesem Verzeichnis für die Erstellung). Standardmäßig deaktiviert. Wenn Sie on verwenden, führt das Tool automatisch die Plugins im entsprechenden Verzeichnis aus, z.B. -e on.
-f (--flag)
SSL-Sicherheitsoption. Standardmäßig deaktiviert, in diesem Zustand werden alle unsicheren Verbindungen blockiert. Wenn Sie den SSL-Status ignorieren möchten, verwenden Sie 1, um alle Zertifikatsfehler zu ignorieren, z.B. -f 1.
-s (--silent)
Stiller Modus. Einmal aktiviert, werden alle JA/NEIN-Abfragen automatisch auf JA gesetzt. Der Text nach dem Parameter wird als Name des Scan-Berichts verwendet (benutzerdefinierter Berichtsname). Geeignet für unbeaufsichtigte, Batch- oder Plugin-Aufrufe, z.B. -s Scan_Task_777.
--st (--sendtype)
Anfrage-Methode. Unterstützt die Parameter POST und GET. Wenn aktiviert, werden alle APIs mit der entsprechenden Methode gescannt. Wenn nicht aktiviert, wird die Methode intelligent basierend auf dem HTTP-Statuscode ausgewählt.
--ct (--contenttype)
Content-Type-Option. Hiermit kann der Content-Type-Header des HTTP-Anfrage während des Scans benutzerdefiniert festgelegt werden. Wenn nicht aktiviert, wird der Content-Type intelligent basierend auf dem HTTP-Statuscode ausgewählt.
--pd (--postdata)
POST-Inhaltsoption. Hiermit kann der POST-Inhalt für den Scan benutzerdefiniert festgelegt werden (alle Scans verwenden diesen Inhalt, nur für POST-Szenarien relevant). Wenn nicht aktiviert, wird der Inhalt intelligent basierend auf dem HTTP-Statuscode ausgewählt.
--ah (--apihost)
API-Domain-Option. Hiermit kann die Domain für alle API-Anfragen während des Scans benutzerdefiniert festgelegt werden. Beispiel: Der API-Pfad (aus JS extrahiert) ist /v1/info, die gescannte URL (über -u übergeben) ist http://exp.com/. Wenn der apihost-Parameter https://pocsir.com:777/ lautet, lautet die API https://pocsir.com:777/v1/info und nicht http://exp.com/v1/info. Nützlich, wenn API und Frontend auf unterschiedlichen Domains oder Servern laufen.
--fe (--fileext)
API-Dateierweiterungsoption. Hiermit kann allen APIs eine bestimmte Erweiterung hinzugefügt werden, um Fälle zu behandeln, in denen die Erweiterung bei der API-Extraktion fehlt. Beispiel: Wenn die extrahierte API https://pocsir.com:777/v1/info lautet, kann mit --fe .json die API automatisch in https://pocsir.com:777/v1/info.json umgewandelt und gescannt werden.