Feroxbuster – Einfache, schnelle, rekursive Inhaltssuche
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.
Ordnerstruktur der Wortlisten von 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 Ausgabe 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