Feroxbuster nutzt Brute-Force in Kombination mit einer Wortliste, um in Zielverzeichnissen nach unverlinkten Inhalten zu suchen. In diesen Inhalten können sensible Informationen über Webanwendungen und Betriebssysteme gespeichert sein, z. B. Quellcode, Anmeldedaten, interne Netzwerkadressen, Backups usw.. Diese Methode ist auch als Predictable Resource Location, File Enumeration, Directory Enumeration und Resource Enumeration bekannt.
Feroxbuster ist in Rust geschrieben und wird aktiv weiterentwickelt, teilweise werden zweimal im Monat neue Versionen veröffentlicht. Die GitHub-Seite des Projektes ist sehr ausführlich und beschreibt alle wichtigen Aspekte. Feroxbuster kann sehr flexibel konfiguriert werden und bietet eine rekursive Suche. Damit wird in einem gefundenen Verzeichnis eine erneute Suche gestartet. Das Tool ist schnell und kann individuell angepasst werden.
Installation von Feroxbuster
Feroxbuster kann über die GitHub-Seite des Projektes auf vielen verschiedenen Systemen installiert werden. In der ausführlichen Dokumentation werden die Schritte sehr gut für die verschiedenen Systeme beschrieben. Seit der Version 2021.2 von Kali Linux ist Feroxbuster fester Bestandteil der Distribution und ist als Paket verfügbar. Die Installation kann wie gewohnt über das Terminal durchgeführt werden:
$ sudo apt update && sudo apt install -y feroxbuster
Anschließend kann getestet werden, ob die Installation von Feroxbuster geklappt hat:
$ feroxbuster -h feroxbuster 2.2.1 Ben 'epi' Risher (@epi052) A fast, simple, recursive content discovery tool written in Rust USAGE: feroxbuster [FLAGS] [OPTIONS] --url... FLAGS: -f, --add-slash Append / to each request --auto-bail Automatically stop scanning when an excessive amount of errors are encountered --auto-tune Automatically lower scan rate when an excessive amount of errors are encountered -D, --dont-filter Don't auto-filter wildcard responses -e, --extract-links Extract links from response body (html, javascript, etc...); make new requests based on findings (default: false) -h, --help Prints help information -k, --insecure Disables TLS certificate validation --json Emit JSON logs to --output and --debug-log instead of normal text -n, --no-recursion Do not scan recursively -q, --quiet Hide progress bars and banner (good for tmux windows w/ notifications) -r, --redirects Follow redirects --silent Only print URLs + turn off logging (good for piping a list of urls to other commands) --stdin Read url(s) from STDIN -V, --version Prints version information -v, --verbosity Increase verbosity level (use -vv or more for greater effect. [CAUTION] 4 -v's is probably too much) OPTIONS: --debug-log Output file to write log entries (use w/ --json for JSON entries) -d, --depth Maximum recursion depth, a depth of 0 is infinite recursion (default: 4) -x, --extensions ... File extension(s) to search for (ex: -x php -x pdf js) -N, --filter-lines ... Filter out messages of a particular line count (ex: -N 20 -N 31,30) -X, --filter-regex ... Filter out messages via regular expression matching on the response's body (ex: -X '^ignore me$') --filter-similar-to ... Filter out pages that are similar to the given page (ex. --filter-similar-to http://site.xyz/soft404) -S, --filter-size ... Filter out messages of a particular size (ex: -S 5120 -S 4927,1970) -C, --filter-status ... Filter out status codes (deny list) (ex: -C 200 -C 401) -W, --filter-words ... Filter out messages of a particular word count (ex: -W 312 -W 91,82) -H, --headers ... Specify HTTP headers (ex: -H Header:val 'stuff: things') -o, --output Output file to write results to (use w/ --json for JSON entries) --parallel Run parallel feroxbuster instances (one child process per url passed via stdin) -p, --proxy Proxy to use for requests (ex: http(s)://host:port, socks5(h)://host:port) -Q, --query ... Specify URL query parameters (ex: -Q token=stuff -Q secret=key) --rate-limit Limit number of requests per second (per directory) (default: 0, i.e. no limit) -R, --replay-codes ... Status Codes to send through a Replay Proxy when found (default: --status-codes value) -P, --replay-proxy Send only unfiltered requests through a Replay Proxy, instead of all requests --resume-from State file from which to resume a partially complete scan (ex. --resume-from ferox-1606586780.state) -L, --scan-limit Limit total number of concurrent scans (default: 0, i.e. no limit) -s, --status-codes ... Status Codes to include (allow list) (default: 200 204 301 302 307 308 401 403 405) -t, --threads Number of concurrent threads (default: 50) --time-limit Limit total run time of all scans (ex: --time-limit 10m) -T, --timeout Number of seconds before a request times out (default: 7) -u, --url ... The target URL(s) (required, unless --stdin used) -a, --user-agent Sets the User-Agent (default: feroxbuster/VERSION) -w, --wordlist Path to the wordlist NOTE: Options that take multiple values are very flexible. Consider the following ways of specifying extensions: feroxbuster -u http://127.1 -x pdf -x js,html -x php txt json,docx The command above adds .pdf, .js, .html, .php, .txt, .json, and .docx to each url All of the methods above (multiple flags, space separated, comma separated, etc...) are valid and interchangeable. The same goes for urls, headers, status codes, queries, and size filters. EXAMPLES: Multiple headers: feroxbuster -u http://127.1 -H Accept:application/json "Authorization: Bearer {token}" IPv6, non-recursive scan with INFO-level logging enabled: feroxbuster -u http://[::1] --no-recursion -vv Read urls from STDIN; pipe only resulting urls out to another tool cat targets | feroxbuster --stdin --silent -s 200 301 302 --redirects -x js | fff -s 200 -o js-files Proxy traffic through Burp feroxbuster -u http://127.1 --insecure --proxy http://127.0.0.1:8080 Proxy traffic through a SOCKS proxy feroxbuster -u http://127.1 --proxy socks5://127.0.0.1:9050 Pass auth token via query parameter feroxbuster -u http://127.1 --query token=0123456789ABCDEF Find links in javascript/html and make additional requests based on results feroxbuster -u http://127.1 --extract-links Ludicrous speed... go! feroxbuster -u http://127.1 -t 200
Feroxbuster verwendet die Wortlisten der Seclists, um die Bruteforce-Operationen auszuführen, die auch in der Standardkonfiguration Anwendung finden. Alternativ kann auch eine eigene Wortliste angegeben werden. Die Seclists sind eine Sammlung von Wortlistendateien, die Benutzernamen, Kennwörter, Web-Shells, Datenmuster, Fuzzing-Payloads usw. enthalten. Das Seclists Software-Paket kann unter Kali Linux einfach installiert werden:
$ apt -y install seclists
Nach der Installation von Seclists liegen die Wortlisten im Verzeichnis /usr/share/seclists.
Aufruf von Feroxbuster
Feroxbuster verfügt über die Konfigurationsdatei /etc/feroxbuster/ferox-config.toml. Die Standardkonfigurationen können durch Auskommentieren der vordefinierten Einstellungen in der Datei außer Kraft gesetzt werden. Beim Aufruf von Feroxbuster werden zuerst die Standardwerte geladen, dann die Konfigurationsdatei ausgewertet und anschließend die gesetzten Parameter verwendet. In vielen Anwendungsfällen reicht es aus, nur die Parameter zu setzen. Jeder Aufruf von Feroxbuster hat den grundsätzlichen Aufbau:
$ feroxbuster -u < URL>
Die Angabe von Parameter ist optional, daher reicht für einen einfachen Aufruf nur die Übergabe einer URL.
$ feroxbuster -u http://webscantest.com
Feroxbuster kann sehr flexibel konfiguriert werden und für die unterschiedlichsten Szenarien individuell angepasst werden. Das nachfolgende Beispiel zeigt einen Aufruf, bei dem Feroxbuster ausschließlich nach PHP-Dateien sucht und die Wortliste common.txt verwendet.
$ feroxbuster -u http://webscantest.com -x php -w vim /usr/share/seclists/Discovery/Web-Content/common.txt
Fazit Feroxbuster
Feroxbuster arbeitet sehr schnell, bietet einen großen Funktionsumfang und kann flexibel konfiguriert werden. Dank der rekursiven Suche, den flexiblen Filtern und der integrierten Verwendung von Proxys können sehr viele Einsatzszenarien damit abgedeckt werden. Die sehr gute Dokumentation und die aktive Entwicklung machen Feroxbuster zu einem Top-Tool in diesem Bereich und sollte zu jeder Standardausstattung eines Website-Pentesters gehören.
Kali Linux 2021.2 Artikelserie
Dieser Blog-Artikel ist Teil der Kali Linux 2021.2 Artikelserie, bei der ich mich intensiver mit den neuen Anwendungen der aktuellen Version beschäftige.
- CloudBrute – Gezieltes Suchen von Dateien und Apps in der Cloud
- dirsearch – Brute-Force-Verzeichnisse und -Dateien auf Webservern
- Feroxbuster – Einfache, schnelle, rekursive Inhaltssuche
- Ghidra – Reverse-Engineering-Framework
- Pacu – AWS-Exploitation-Framework
- Peirates – Kubernetes Sicherheitsanalyse
- Quark-Engine – Android-Malware-Bewertungssystem