FFUF - Fast Fuzzer
Scopri FFUF, il potente tool in Go per offensive security. Fuzzing, enumerazione, brute force: ottimizza i tuoi test di vulnerabilità.
FFUF è uno strumento realizzato in Go, pensato per diverse attività di offensive security. La sua versatilità lo rende adatto a molti contesti, grazie alla possibilità di definire in modo semplice dove inserire e testare input personalizzati. I suoi utilizzi spaziano dalla rilevazione di sottodomini, enumerazione di directory, al fuzzing di header, fino ad attacchi di brute force e password spraying, con supporto per le richieste GET, POST, PUT, DELETE, etc…
Esempi di utilizzo
Come molti altri strumenti, anche ffuf può essere utilizzato per eseguire la directory enumeration. È sufficiente inserire il placeholder FUZZ (oppure un segnaposto personalizzato, se necessario) nel punto desiderato dell’URL, direttamente nel parametro -u. Il parametro -w serve a specificare il percorso della wordlist da utilizzare per l’enumerazione. Il parametro -fc (filter code) permette di filtrare le risposte HTTP con uno specifico status code, ad esempio per escludere le pagine che restituiscono un codice 404 (nel nostro caso, il server restituisce effettivamente 404 per le risorse inesistenti, quindi è utile ignorarle). Infine, il parametro -c abilita la colorazione dell’output, rendendo più immediata la distinzione tra i diversi codici di risposta.
ffuf -u http://127.0.0.1:8000/FUZZ -w wordlists/fuzz-url.txt -fc 404 -cUn esempio utile per mostrare l’estrema flessibilità di ffuf è l’utilizzo di due placeholder contemporaneamente: uno per enumerare i parametri e l’altro per testare possibili valori per ciascun parametro. Nel nostro caso, come wordlist dei valori abbiamo utilizzato una semplice lista numerica da 1 a 100, ma nulla vieta di usare qualsiasi altra tipologia di input, a seconda del contesto. Nel parametro -u, come mostrato nel comando precedente, inseriamo i due placeholder (in questo caso con nomi personalizzati). Per ogni placeholder utilizzato, dobbiamo specificare una wordlist tramite il parametro -w. Poiché stiamo effettuando due fuzzing distinti, specificheremo due wordlist, una per ciascun placeholder: la sintassi -w wordlist.txt:PLACEHOLDER consente di indicare che la wordlist verrà utilizzata per sostituire quel preciso placeholder nell’URL. Nell’esempio, params.txt fuzzerà il parametro PARAM, mentre values.txt fuzzerà il valore VALUE.
ffuf -u http://127.0.0.1:8000/item?PARAM=VALUE -w wordlists/params.txt:PARAM -w wordlists/values.txt:VALUE
fn main() {
println!("Hello, World!);
}| Colonna 1 | Colonna 2 | Colonna 3 |
|---|---|---|
| 1 | 2 | 3 |
| a | b | c |
def main():
print("Hello, World!")
if __name__ == "__main__":
main()Pro e Contro
FFUF è uno strumento progettato per eseguire attività di fuzzing, una tecnica di attacco utilizzata per individuare errori, bug o possibili vulnerabilità testando automaticamente l’applicazione con numerose combinazioni di dati. Il bello di FFUF è la sua estrema personalizzabilità: grazie all’uso di wordlist e placeholder, puoi configurarlo in pochi secondi per testare directory nascoste, parametri GET/POST, header, autenticazioni e persino attacchi di brute‑force. Pro: Flessibilità: puoi definire esattamente quali punti della richiesta fuzzare (URL, body, header). Estendibilità: permette di applicare filtri avanzati e personalizzare i codici di stato da includere o escludere, output in vari formati e configurazione di rate limiting custom. Performance: scritto in Go, sfrutta pienamente il parallelismo per essere più veloce della maggior parte dei tool in Python. Contro: Nonostante la versatilità e potenza di FFUF, va considerato che per alcune operazioni specifiche potrebbe non essere la scelta ottimale. Esistono infatti strumenti specializzati che, pur avendo uno scopo più ristretto, sono progettati per eseguire determinati compiti in modo più efficiente e mirato. In questi casi, FFUF rischia di essere superato da tool focalizzati su uno specifico tipo di attacco come, ad esempio: Gobuster: Utilizzato per l’enumerazione di directory e DNS: https://github.com/OJ/gobuster Wfuzz: Utilizzato per fuzzing: https://github.com/xmendez/wfuzz Feroxbuster: Utilizzato per l’enumerazione di directory: https://www.kali.org/tools/feroxbuster/ (Consulta la nostra guida dedicata: https://studioconsi.com/articoli/feroxbuster/)
| Caratteristica | FuFF | Gobuster | Wfuff | Feroxbuster |
|---|---|---|---|---|
| Difficoltà di utilizzo base | Media | Media | Alta | Bassa |
| Possibilità di configurazione dell’analisi | Alta | Media | Molto Alta | Molto Alta |
| Analisi con una configurazione stock | Bassa | Media | Bassa | Alta |
| Pesantezza dello strumento | Leggero | Leggero | Medio | Abbastanza pesante |
| Facilità di configurazione | Alta | Media | Media | Media |
| Flessibilità delle tipologie di analisi | Molto alta | Alta | Molto Alta | Bassa |
Chart.JS
Test
t2
t3
t4
t5
t6
Apache ECharts
D3
Target Distribution Map
Discovery Flow Network
Endpoint Hierarchy
Response Size Dots
Conclusioni
Link utili
- Gobuster
Utilizzato per enumerazione di directory e DNS
- Dirb
- Wfuff
- Hydra
- Feroxbuster
Utilizzato per enumeration, molto veloce ed ottimizzato
Approfondimento: Feroxbuster