Secureaks

FFuF: The essential tool for web pentests

Article illustration

When performing a security audit on a web application, it is essential to identify publicly exposed resources, such as files, folders or API endpoints. Enumerating these elements can uncover potential security flaws and expand the attack surface.

There are several tools available for this task, including DirBuster, GoBuster and FFuF (Fast Fuzzing), an open-source tool developed in Go. Fast, efficient and flexible, FFuF has become a must-have in the field of cybersecurity.

In this article, we'll look at how FFuF works, how to install it and how to use it effectively for hidden resource discovery.

You can find the content of this article in video form on my YouTube channel :

Youtube illustration

Download and installation

There are several ways to install FFuF, depending on your operating system:

  1. Downloading precompiled binaries (Windows, Linux, Mac):
  1. Installation via Go :
go install github.com/ffuf/ffuf/v2@latest
  1. Manual compilation :
git clone https://github.com/ffuf/ffuf.git
cd ffuf
go get
go build
  1. Installation via a package manager (e.g. on Kali Linux) :
sudo apt install ffuf

Dictionaries and wordlists

To function, FFuF requires files containing lists of words or paths to be tested. One of the most popular sources is the SecLists repository, which contains a vast collection of wordlists suitable for various types of testing.

Download SecLists :

cd /opt/
git clone https://github.com/danielmiessler/SecLists.git

Once the wordlists are in place, we can start using FFuF.

Searching for hidden files and folders

The basic command for scanning a website for hidden files and folders is :

ffuf -c -w /opt/SecLists/Discovery/Web-Content/common.txt -u https://example.com/FUZZ

Explanation:

  • -c: enable coloring of results in the terminal
  • -w: specifies the file containing the words to be tested
  • -u: defines target URL with FUZZ parameter replaced by dictionary words

FFuF will send a query for each word in the dictionary and display the resources found.

Recursive search

To automate enumeration by also testing the sub-folders found, we add -recursion :

ffuf -c -w /opt/SecLists/Discovery/Web-Content/common.txt -recursion -u https://example.com/FUZZ

FFuF will then analyze each folder discovered and search for other files or sub-folders inside.

Filtering results

Some servers always return a HTTP 200 code, even when the resource doesn't exist. To avoid false positives, you can filter responses by size (-fs) or content (-fr):

ffuf -w /opt/SecLists/Discovery/Web-Content/common.txt -u https://example.com/FUZZ -fs 669

Or use a regular expression to filter a specific error message:

ffuf -w /opt/SecLists/Discovery/Web-Content/common.txt -u https://example.com/FUZZ -en "Page Not Found"

Search for API parameters

FFuF can also be used to discover unknown API parameters:

ffuf -w /opt/SecLists/Discovery/Web-Content/params.txt -u "https://example.com/api/data?FUZZ=1" -mc all -fr "Required Parameter Missing"

This command replaces FUZZ with each word in the dictionary to test different parameters and identify those accepted by the application.

Discover VHosts

FFuF can also be used to enumerate the Virtual Hosts on a server:

ffuf -w /opt/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: FUZZ.example.com" -u https://example.com -fs 1495

If a subdomain exists but has no DNS record, you can test its response with :

curl -H "Host: vhost.example.com" https://example.com

Conclusion

FFuF is a powerful, fast and flexible tool for discovering web resources. When used in conjunction with appropriate wordlists and a wide range of filtering options, it delivers precise, usable results.

Whether for pentesting, bug bounty or simply to better understand a target's infrastructure, FFuF is an indispensable asset.

If you'd like to deepen your skills, don't hesitate to test FFuF on platforms such as TryHackMe or HackTheBox.

Useful links

By Romain Garcia on 03/05/2025 in the Tools category