Tobias Scheible Cyber Security & IT-Forensik Dozent

Feroxbuster – Einfache, schnelle, rekursive Inhaltssuche

Feroxbuster ist ein Tool, das zur Durchführung von Forced Browsing entwickelt wurde. Dabei ist das Ziel, versteckte Web-Verzeichnisse und Dateien aufzufinden, die nicht von der Webanwendung referenziert werden, auf die ein Angreifer aber dennoch zugreifen kann. Damit eignet sich Feroxbuster für Website-Pentests.

Sonntag, 04. Juli 2021
0 Kommentare

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
Seclists

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.

Seclist Wortlisten
Ordnerstruktur der Wortlisten von Seclists
Seclist Wortlisten 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 Ausgabe
Feroxbuster Interface 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.

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog und in meinem Fachbuch. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.

Kommentare

Es wurde noch kein Kommentar abgegeben.

Schreibe einen Kommentar!

Hilfe zum Kommentieren und Hiweise

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen, eine Gefährdung anderer Besucher darstellen oder keinen sinvollen Inhalt beinhalten, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und damit ich direkt Kontakt aufnehmen kann. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzhinweis des Blogs.