FFUF arbeitet, indem es HTTP-Anfragen an einen Webserver sendet und die Antworten analysiert. Der Benutzer gibt eine Ziel-URL mit einem Platzhalter (FUZZ) an, der durch Einträge aus einer Wortliste ersetzt wird. FFUF wertet die Serverantworten (z. B. Statuscodes, Antwortgröße) aus, um relevante Ergebnisse zu identifizieren. Bruteforcing ist wie das Arbeiten mit einer Brechstange. Es hinterlässt viele auffällige Logs.
Ethische Nutzung von FFUF
FFUF ist ein mächtiges Tool, das nur für legitime Zwecke verwendet werden sollte:
- Penetrationstests: Testen der Sicherheit von Webanwendungen mit Zustimmung des Eigentümers.
- Bug-Bounty-Programme: Teilnahme an legalen Programmen, die das Scannen erlauben.
- Entwicklung und Forschung: Finden von Schwachstellen in eigenen Anwendungen oder Lernen über Websicherheit.
Wichtiger rechtlicher Hinweis: Das unbefugte Scannen von Websites oder Servern ohne Zustimmung ist illegal und verstößt gegen Gesetze wie das deutsche Strafgesetzbuch (§ 202a StGB). Verwende FFUF nur mit ausdrücklicher Genehmigung.
Ablauf eines FFUF-Angriffs
- Ziel-URL definieren: Der Benutzer gibt eine URL mit dem Platzhalter FUZZ an, z. B. http://example.com/FUZZ.
- Wortliste bereitstellen: Eine Datei mit potenziellen Eingaben (z. B. Verzeichnisnamen wie admin, login, backup) wird verwendet.
- Anfragen senden: FFUF ersetzt FUZZ durch jeden Eintrag aus der Wortliste und sendet HTTP-Anfragen (z. B. GET oder POST).
- Antworten analysieren: FFUF filtert die Ergebnisse basierend auf Kriterien wie HTTP-Statuscode (z. B. 200 für Erfolg, 404 für nicht gefunden) oder Antwortgröße.
- Ergebnisse speichern: Gefundene Treffer werden in der Konsole angezeigt oder in einer Datei gespeichert.
Beispiel eines FFUF-Befehls
ffuf -w wordlist.txt -u http://example.com/FUZZ
- -w wordlist.txt: Gibt die Wortliste an.
- -u http://example.com/FUZZ: Die Ziel-URL mit Platzhalter.
Installation von FFUF
FFUF kann auf verschiedenen Betriebssystemen installiert werden. Hier ist ein Schritt-für-Schritt-Leitfaden für die Installation unter Linux (Ubuntu/Debian). Ähnliche Schritte gelten für Windows und macOS.
Installation unter Linux
- Go installieren (falls nicht vorhanden):
sudo apt update sudo apt install -y golang
- FFUF installieren: Lade und installiere FFUF mit Go:
go install github.com/ffuf/ffuf@latest
Der ausführbare Befehl wird in ~/go/bin/ffuf gespeichert. - Pfad hinzufügen (optional): Füge den Go-Bin-Pfad zu deiner Shell-Konfiguration hinzu (z. B. ~/.bashrc):
export PATH=$PATH:~/go/bin source ~/.bashrc
- Installation überprüfen:
ffuf -V
Installation unter Windows
- Installiere Go von golang.org.
- Öffne PowerShell oder die Eingabeaufforderung und installiere FFUF:
go install github.com/ffuf/ffuf@latest
- Navigiere zum Go-Bin-Verzeichnis (z. B. %USERPROFILE%\go\bin) und führe ffuf.exe -V aus.
Installation unter macOS
- Installiere Homebrew (falls nicht vorhanden):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Installiere FFUF:
brew install ffuf
- Überprüfe die Installation:
ffuf -V
Alternative: Binaries verwenden
Falls du Go nicht installieren möchtest, kannst du vorgefertigte Binaries von der offiziellen GitHub-Seite herunterladen: github.com/ffuf/ffuf.
Beispiel: Verzeichnis-Enumeration
Um die Funktionsweise von FFUF zu demonstrieren, führen wir einen einfachen Verzeichnis-Enumerationsangriff durch. Angenommen, du möchtest versteckte Verzeichnisse auf http://example.com finden.
- Wortliste herunterladen: Lade eine Wortliste wie directory-list-2.3-medium.txt von SecLists herunter:
wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/directory-list-2.3-medium.txt
- FFUF-Befehl ausführen:
ffuf -w directory-list-2.3-medium.txt -u http://example.com/FUZZ -e .php,.html
- -e .php,.html: Testet auch Dateien mit diesen Endungen (z. B. admin.php, index.html).
- Ergebnisse wie http://example.com/admin (Status 200) werden angezeigt.
- Ergebnisse filtern: Um irrelevante Antworten (z. B. 404-Fehler) auszuschließen:
ffuf -w directory-list-2.3-medium.txt -u http://example.com/FUZZ -fc 404
- -fc 404: Filtert Antworten mit Statuscode 404.
- Ergebnisse speichern: Speichere die Ergebnisse in einer Datei:
ffuf -w directory-list-2.3-medium.txt -u http://example.com/FUZZ -o results.json -of json
Fortgeschrittene FFUF-Techniken
FFUF bietet zahlreiche Optionen für fortgeschrittene Szenarien. Hier sind einige Beispiele:
Parameter-Fuzzing
Um versteckte Parameter in einer GET-Anfrage zu finden:
ffuf -w parameters.txt -u http://example.com/?FUZZ=test -fc 404
- parameters.txt: Eine Wortliste mit Parameternamen (z. B. id, user, token).
- Ergebnisse zeigen Parameter, die der Server akzeptiert.
Subdomain-Enumeration
Um Subdomains zu finden (z. B. sub.example.com):
ffuf -w subdomains.txt -u http://FUZZ.example.com -H "Host: FUZZ.example.com" -fc 404
- -H „Host: FUZZ.example.com“: Setzt den Host-Header für virtuelle Hosts.
POST-Parameter-Fuzzing
Um Parameter in einer POST-Anfrage zu testen:
ffuf -w parameters.txt -u http://example.com/login -X POST -d "FUZZ=test" -fc 404
- -X POST: Gibt die HTTP-Methode an.
- -d „FUZZ=test“: Sendet POST-Daten.
Rekursives Fuzzing
FFUF kann rekursiv nach Unterverzeichnissen suchen:
ffuf -w directory-list-2.3-medium.txt -u http://example.com/FUZZ -recursion -recursion-depth 2
- -recursion: Aktiviert rekursives Scannen.
- -recursion-depth 2: Begrenzt die Tiefe auf zwei Ebenen.
Tipps für den effektiven Einsatz von FFUF
- Hochwertige Wortlisten: Verwende kuratierte Wortlisten wie SecLists, die auf spezifische Szenarien (z. B. Verzeichnisse, Subdomains, Parameter) zugeschnitten sind.
- Filter optimieren: Nutze Filteroptionen (-fc, -fs, -fw), um Rauschen zu reduzieren und relevante Ergebnisse hervorzuheben.
- Multithreading anpassen: Erhöhe die Anzahl der Threads mit -t (z. B. -t 50), aber achte auf Serverbeschränkungen, um Überlastung zu vermeiden.
- Rate-Limiting beachten: Verwende -p für Verzögerungen (z. B. -p 0.1 für 0,1 Sekunden) oder -rate für Anfragen pro Sekunde, um IP-Sperren zu vermeiden.
- Ergebnisse speichern: Speichere Ergebnisse in Formaten wie JSON oder CSV für die spätere Analyse (-o results.json -of json).
- Proxy-Unterstützung: Nutze -x http://127.0.0.1:8080 für Proxys wie Burp Suite, um Anfragen zu analysieren.
Häufige Fehler und Problembehebung
- Fehler: Zu viele Anfragen: Reduziere die Thread-Anzahl (-t 10) oder füge Verzögerungen hinzu (-p 0.2).
- Keine Ergebnisse: Überprüfe die Wortliste, URL und Filter. Stelle sicher, dass die Ziel-URL korrekt ist.
- Server blockiert Anfragen: Verwende einen Proxy oder rotiere User-Agent-Header:
ffuf -w wordlist.txt -u http://example.com/FUZZ -H "User-Agent: Mozilla/5.0"
FFUF in der Praxis: Ein Szenario
Stell dir vor, du bist ein Penetrationstester, der die Sicherheit einer Webanwendung überprüft. Deine Aufgabe ist es, versteckte Verzeichnisse und Dateien zu finden.
- Ziel definieren: Die Ziel-URL ist http://example.com.
- Wortliste vorbereiten: Verwende directory-list-2.3-medium.txt aus SecLists.
- Angriff starten:
ffuf -w directory-list-2.3-medium.txt -u http://example.com/FUZZ -e .php,.html,.txt -fc 404 -o results.json -of json
- Ergebnisse analysieren: Gefundene Verzeichnisse wie /admin oder Dateien wie config.php werden in results.json gespeichert.
- Weiterführende Tests: Verwende rekursives Fuzzing für gefundene Verzeichnisse:
ffuf -w directory-list-2.3-medium.txt -u http://example.com/admin/FUZZ -recursion
Schreibe einen Kommentar