
Golang-Tool, das hilft, irrelevante Einträge aus deiner ffuf-Ergebnisdatei zu entfernen.
Leider – trotz seines "-ac"-Flags – erzeugt ffuf eine Menge irrelevanter Einträge. Deshalb habe ich ein Post-Processing-Tool erstellt, um diese Einträge herauszufiltern. Zusätzlich habe ich gesehen, dass viele relevante Einträge entfernt wurden, wenn "-ac" verwendet wurde – insbesondere wenn ffuf auf json- oder xml-Dateien stößt – "-ac" könnte sie vollständig entfernen. Dieses Tool muss ausgeführt werden, nachdem ffuf beendet ist. Zusätzlich sollte der anfängliche ffuf-Befehl mit den folgenden Flags ausgeführt werden:
-o /folder/to/results.json
-od /folder/to/bodies
-of json (default)
Dies zwingt ffuf, eine Zusammenfassungsdatei im json-Format sowie die Bodies der Antworten auf die Festplatte zu schreiben. Das Hinzufügen von "-od" ist nicht zwingend erforderlich, wird aber empfohlen.
Ich empfehle dringend, NICHT das "-ac"-Flag zu verwenden – besonders wenn du coole Sachen nicht verpassen willst und dieses Post-Processing-Tool nutzen möchtest.
Usage of ./ffufPostprocessing:
-result-file string
Path to the original ffuf result file (in json format)
-bodies-folder string
Path to the ffuf bodies folder (optional, if set results will be better)
-new-result-file string
Path to the new ffuf result file (optional)
-delete-bodies
Delete unnecessary body files after filtering (optional)
-overwrite-result-file
Overwrite original result file (optional)
-verbose
Verbose mode (Shows currently filtered results) (optional)
Führe zuerst ffuf wie immer aus – ich habe einen sehr einfachen, minimalistischen Befehl verwendet:
./ffuf -u yourtarget.com/FUZZ -w /path/to/wordlist -o /tmp/ffuf/results.json -od /tmp/ffuf/bodies/ -of json
Nachdem er gelaufen ist, solltest du die Ergebnisdatei sowie alle Bodies in deinen angegebenen Ordnern haben. Jetzt ist es an der Zeit, die Daten zu parsen und die irrelevanten Einträge herauszufiltern:
./ffufPostprocessing -result-file /tmp/ffuf/results.json -bodies-folder /tmp/ffuf/bodies/ -delete-bodies -overwrite-result-file
Besonders wenn -od gesetzt ist, was bedeutet, dass wir alle HTTP-Header und Bodies für jede angeforderte URL haben, analysiert dieses Tool zunächst alle Bodies und reichert die anfängliche Ergebnis-JSON-Datei mit den folgenden Datenpunkten an:
Danach durchsucht es die gesamte neue Ergebnisdatei und behält nur die Einträge, die basierend auf bekannten Metadatentypen eindeutig sind. Wenn sich herausstellt, dass einer dieser Werte immer unterschiedlich ist (z. B. können die Titel von Seiten sehr stark variieren), wird dieser Metadatentyp für die Eindeutigkeitsprüfung übersprungen.
Im Allgemeinen behält dieses Tool immer eine kleine Anzahl von Einträgen, die nicht eindeutig sind. Wenn die Ergebnis-JSON-Datei beispielsweise 300× HTTP-Status 403 enthält (mit identischen Wörtern, Länge usw.) und 2 eindeutige HTTP-Status-200-Antworten, werden nicht alle 300 HTTP-Status-403-Einträge verworfen. Es behält X davon im Datensatz.
ffufPostprocessing erfordert golang 1.19
cd ffufPostprocessing
go build -o dist/ffufPostprocessing main.go
Ist mir egal. Mach damit, was du willst.