Feroxbuster

Feroxbuster è uno strumento sviluppato in Rust utilizzato per individuare file e directory su web servers e web applications. Il suo scopo principale è identificare risorse che potrebbero essere “nascoste” o non facilmente rinvenibili. Ciò  consente di identificare potenziali file vulnerabili, file di configurazione o file obsoleti esposti che potrebbero contenere informazioni sensibili.

Feroxbuster, rilasciato nel 2020, è un tool relativamente nuovo nell’ambito della offensive security, dalla nostra esperienza risulta essere uno strumento altamente efficace per la directory enumeration durante le attività offensive.

Pro e Contro

In alcune circostanze altri strumenti simili potrebbero avere la stessa velocità o essere anche più veloci nel concludere l’analsisi, ma Feroxbuster si distingue per alcune caratteristiche chiave. Uno dei principali vantaggi è la sua velocità, resa possibile dall’uso del linguaggio Rust, che consente di gestire operazioni in parallelo in modo efficiente. Nonostante sia uno strumento CLI, l’interfaccia risulta chiara e intuitiva, offrendo un’esperienza di utilizzo più semplice rispetto ad altri strumenti simili.

Un altro punto di forza di Feroxbuster è la sua ampia possibilità di configurazione. È progettato per eccellere in questa tipologia di analisi, permettendo di personalizzare aspetti come il numero di richieste, il comportamento di auto-adattamento, e altre opzioni che ne migliorano la flessibilità. Queste caratteristiche sono illustrate nel dettaglio nelle sezioni successive dedicate alle configurazioni e agli esempi di utilizzo, dimostrando come il tool possa essere adattato a diverse esigenze operative.

È importante sottolineare che esistono altri tool in grado di eseguire la stessa analisi, che in alcune web app possono risultare più veloci grazie alla loro leggerezza e al miglior supporto su sistemi meno potenti. Tuttavia, la vasta gamma di configurazioni e la gestione avanzata delle richieste in parallelo offerte da questo strumento lo rendono unico nel suo genere.

Di seguito presentiamo una tabella che evidenzia i pro e i contro di questo strumento rispetto ad altri tool simili:

FeatureFeroxbusterDirbGobusterDirbuster
VelocitàMolto altaMediaMolto AltaMedia
Difficoltà di utilizzo baseMolto FacileMolto FacileMediaAbbastanza facile per utenti base poichè possiede la GUI
Possibilità di configurazione dell'analisiMolto AmpiaPocaPiuttosto configurabileMedia
Analisi con una configurazione stockMolto ApprofonditaPoco approfonditaNon troppo approfonditaAbbastanza approfondita
Pesantezza dello strumentoAbbastanza pesanteMolto leggeroMolto leggeroAbbastanza pesante
Gestione automatica dell'aumento o diminuzione del numero di richiesteSiNoNoNo
Salvataggio dello stato dell'analisi automaticoSiNoNoNo
Facilità di configurazioneMediaBassaMediaBassa

In sintesi, per test approfonditi sul servizio da analizzare, si raccomanda l’uso di questo tool configurato correttamente, grazie alla sua velocità e alla capacità di adattarsi alla tipologia del servizio. Al contrario, per analisi più superficiali mirate a identificare solo i path di default, senza approfondire pagine potenzialmente vulnerabili o altri dettagli specifici, è più comune optare per strumenti alternativi.

Comandi Base

-u, –url

Il target effettivo dell’analisi deve essere fornito utilizzando lo schema HTTP o HTTPS. Se si desidera che il tool esegua l’analisi solo all’interno di una specifica directory, è necessario specificare l’URL completo, ad esempio: “http://10.10.10.100/admin/”. In questo caso, la scansione della directory enumeration verrà limitata esclusivamente alla directory /admin/.

-w, –wordlist

Dopo aver specificato il parametro del target, il tool si aspetta il percorso del dizionario da utilizzare per l’analisi. Come accennato in precedenza, se non viene fornito un dizionario personalizzato, il tool utilizzerà automaticamente uno di default, che viene scaricato durante il processo di installazione.

-t, –threads

Il tool richiede un numero intero di threads che eseguono l’analisi, e questo parametro influisce direttamente sulla velocità dell’analisi. Tuttavia, è importante sottolineare che un numero di threads troppo elevato potrebbe, paradossalmente, rallentare il processo se non si dispone di un hardware sufficientemente potente. Il valore predefinito di 50 threads è piuttosto alto e potrebbe risultare problematico in alcuni scenari, in particolare con applicativi leggeri che non riescono a gestire un carico eccessivo di richieste in breve tempo. In ambienti di produzione, è consigliabile limitare il numero di threads a meno di 10 per evitare sovraccarichi. Se non si conosce l’applicativo da analizzare, è opportuno iniziare con 1 o 2 threads e, successivamente, regolare altri parametri in base ai risultati ottenuti.

-n, –no-recursion

Come accennato in precedenza, Feroxbuster ha una “profondità” di analisi predefinita impostata a 4, il che significa che se lo strumento trova directory valide, esplorerà al massimo 4 livelli di profondità all’interno di esse. Tuttavia, con un comando specifico, è possibile limitare l’analisi alla sola prima directory rilevata, impedendo allo strumento di andare oltre il primo livello.

-d, –depth

Con questo comando, il tool si aspetta un numero intero che definisce la “profondità” dell’analisi, come descritto precedentemente. Questo parametro determina fino a che livello di directory il tool esplorerà.

-L, –scan-limit

Di base, Feroxbuster esegue le analisi delle directory rilevate in parallelo, aumentando l’efficienza ma anche il traffico generato. Tuttavia, questo approccio può risultare problematico se si desidera evitare di sovraccaricare il sistema o generare troppo traffico. In alcuni casi, limitare il numero di directory che vengono analizzate in parallelo può essere una buona idea, per ridurre l’impatto e mantenere il controllo sul traffico prodotto.

–rate-limit

In questo caso, questo parametro viene utilizzato in situazioni particolari, poiché definisce il limite di richieste che il tool può effettuare al secondo. Se viene impostato a “1”, Feroxbuster effettuerà una richiesta al secondo per ogni analisi in concorrenza, riducendo significativamente il traffico generato e limitando l’impatto sul sistema target. Questo può essere utile in scenari dove è necessario un controllo più stretto sul volume di richieste, ad esempio quando si vogliono evitare rallentamenti o sovraccarichi.

-o, –output

Questo parametro può essere molto utile poiché consente di salvare le rilevazioni effettuate in un file esterno in formato JSON, che include anche tutte le configurazioni utilizzate durante l’analisi. Il parametro richiede di specificare il nome del file che verrà generato al termine dell’analisi, facilitando la documentazione e la revisione delle configurazioni e dei risultati ottenuti.

Comandi Avanzati

–resume-from

Feroxbuster, di default, scrive un file con estensione “.state” nella cartella in cui viene eseguito, contenente i progressi dell’analisi. Se l’analisi viene interrotta o il tool si blocca, questo file viene aggiornato per salvare lo stato corrente. Il parametro in questione consente di riprendere l’analisi dal punto in cui è stato interrotto, sfruttando il file “.state”. Questa funzionalità è particolarmente utile in caso di crash o interruzioni, permettendo di evitare di dover ripetere l’intero processo dall’inizio.

-a, –user-agent

Con questo parametro, è possibile modificare lo user agent, impostandone uno personalizzato a scelta.

-A, –random-agent

In questo caso, lo user agent non è un parametro statico, ma cambia dinamicamente ad ogni richiesta effettuata. Questa funzionalità è utile in situazioni in cui un’applicazione web effettua dei controlli sugli header e potrebbe bloccare o rispondere con un errore 404 a richieste provenienti da un determinato user agent. Variando lo user agent in modo casuale, è possibile aggirare questi controlli e ottenere risposte più complete e accurate dal server.

-x, –extensions

Con questo parametro, possiamo istruire Feroxbuster a cercare ogni parola del dizionario anche con le estensioni specificate. Ad esempio, se si utilizza una wordlist con 1000 parole e si aggiungono estensioni come “.php” e “.html” (-x .php,.html), il tool testerà non solo le parole senza estensione, ma anche le stesse parole con le estensioni aggiunte. Questo comporta un aumento significativo della durata dell’analisi, poiché, per ogni parola nel dizionario, Feroxbuster testerà la parola senza estensione e tutte le combinazioni con le estensioni fornite, portando a un incremento esponenziale del numero di richieste.

-b, –cookies

Se si dispone di una sessione autenticata tramite cookie, è possibile configurare Feroxbuster per eseguire tutte le richieste utilizzando i cookie di sessione dell’utente. Questo permette di effettuare l’analisi in modalità autenticata, accedendo a risorse o directory protette che richiedono l’autenticazione. Per farlo, è sufficiente fornire i cookie di sessione tramite un parametro specifico, consentendo così a Feroxbuster di simulare il comportamento di un utente già loggato durante l’esecuzione dell’analisi.

–dont-scan

È possibile specificare uno o più URL che non si desidera vengano analizzati, escludendoli così dall’analisi durante l’esecuzione del tool.

-r, –redirects

Se questo parametro è attivato, il tool seguirà automaticamente il redirect della pagina, qualora presente.

–auto-tune

Questa è una funzionalità particolarmente utile di Feroxbuster: con il parametro specificato, il tool regola automaticamente il carico delle richieste. Se rileva errori nelle richieste effettuate, avverte l’utente e riduce il carico per quella determinata analisi, adattandosi dinamicamente per evitare sovraccarichi o blocchi durante il processo.

–auto-bail

Vale lo stesso principio di “–auto-tune”, ma invece di ridurre il carico delle richieste, questo parametro blocca completamente la scansione in caso di errori, fermando l’analisi per evitare ulteriori problematiche.

Esempio 1

In un caso con un web server instabile e una rete lenta, è importante adattare le configurazioni di Feroxbuster per evitare di sovraccaricare il server e garantire una scansione più stabile. Ecco alcuni suggerimenti per eseguire un’enumerazione approfondita:

feroxbuster -u http://IP:PORTA -t 1 –scan-limit 1 –rate-limit 1 -d 6 -T 20 -x .php

Il comando sopracitato avrà questo comportamento:

  • Utilizzerà solamente 1 thread per l’enumerazione
  • Effettuerà l’analisi solamente ad una directory alla volta.
  • Eseguirà solamente una richiesta al secondo
  • Andrà in profondità nelle directory fino a 6
  • Avrà un timeout di 20 secondi in caso il server non risponda a quella determinata richiesta
  • In tutte le parole della wordlist che testerà, aggiungerà anche l’estensione .php per cercare file php.
 
Esempio 2

Abbiamo bisogno di eseguire un test autenticato all’interno di un’applicazione, senza generare un carico eccessivo. Siamo in un ambiente di test, quindi non riscontriamo problemi né di rete né di instabilità dell’indirizzo IP:

feroxbuster -u http://IP:PORT -H “Cookie: sessionid=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX” –auto-tune -r

Il tool eseguirà l’analisi in questo modo:

  • Test con il cookie autenticato
  • Bilanciamento del carico con auto-tune, in modo tale da rallentare le analisi se risponde con qualche errore
  • Follow dei redirects
 
Esempio 3

Un applicativo web non fa visualizzare l’interfaccia a nessun sistema operativo che non sia windows:

feroxbuster -u http://IP:PORT -H “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36”

  • Utilizziamo uno user agent personalizzato che simula una richiesta proveniente da un sistema operativo Windows.