Page cover

tools/ffuf

FFUF

FFUF (Fuzz Faster U Fool) is a fuzzing tool designed to find hidden directories, files, and vulnerabilities in web applications. It works by sending HTTP requests with different word combinations from a dictionary, allowing it to discover paths or access points not visible to the public.

These types of tools aren’t useful without a set of dictionaries worth testing. That’s why it’s recommended to install SecLists, a well-known collection of dictionaries used in security testing.

sudo apt install seclists

Although there are many tools available for fuzzing, FFUF is one of my favorites due to its ease of use and the variety of options it offers.

Usage

Basic Usage

FFUF is used by applying different options to a target, which should be a URL.

# Basic command structure 
ffuf [options] -u URL

# Basic attack: specify wordlist (DICT) and target (URL) for fuzzing
ffuf -w DICT -u URL

The FUZZ Variable

In FFUF, the FUZZ variable acts as a placeholder that indicates where the words from the dictionary will be replaced in the target URL. For example, in the following command:

ffuf -w paths.txt -u http://www.example.com/FUZZ

FFUF will take each word from paths.txt and insert it in place of FUZZ in the URL. This allows for automated searching of specific directories or files on the website, making it easier to identify hidden paths or vulnerabilities.

Options

General Options

Options that affect the overall behavior of FFUF, such as customizing output, configuring the number of threads, and selecting a specific wordlist.

Option
Flag
Description

wordlist

-c

Enable colored output.

color

-w WORDLIST

Specify the path to the wordlist.

threads

-t NUMBER

Set the number of concurrent threads (defaukt: 40)

output file

-o FILENAME

Specify the file to save the output.

output format

-of FORMAT

Specify the output format (e.g., json, csv, html).

verbose

-v

Enable verbose output for detailed logging.

quiet

-q

Suppress all output except for errors.

recursion

-recursion

Enables recursive attacks on discovered paths.

Request Options

Settings to customize HTTP requests, including headers, cookies, and the User-Agent. These are useful for applications that require authentication or have redirects.

Option
Flag
Description

user-agent

-ua "USERAGENT"

Set a custom User-Agent header.

header

-h "HEADERS"

Add custom headers to the request.

cookie

-b "COOKIE"

Provide a session cookie for authenticated requests.

follow-redirects

-r

Follow HTTP redirects.

Time Options

Control the timing behavior, allowing you to set timeouts, limits on the duration of the task, and delays between requests.

Option
Flag
Description

timeout

-timeout SECONDS

Set the timeout for each request.

maxtime

-maxtime SECONDS

Set the maximum duration for the entire fuzzing task.

maxtime-job

-maxtime-job SECONDS

Set a time limit for individual jobs within the fuzzing task.

delay

-p SECONDS

Introduce a delay between each request to improve results.

rate

-rate REQUESTS

Set the request rate (requests per second) for the attack.

Error Options

Manage errors during fuzzing, enabling the attack to stop if certain error thresholds are reached, preventing unnecessary requests.

Option
Flag
Description

Spurious Error

-se

Indicates if the next request is a spurious error.

Stop on Failure

-sf

Stops the attack if more than 95% of requests fail.

Stop on All

-sa

Combines both spurious error and failure stop conditions.

Matchers

Options for filtering and classifying responses, helping to identify those that meet specific criteria, such as HTTP status codes or size patterns.

Matcher
Flag
Description

status code

-mc

Searches for specific HTTP status codes.

words

-mw

Searches for words in the response body.

regex

-mr

Uses regular expressions for matching.

size

-ms

Searches for responses by size in bytes.

lines

-ml

Searches for the number of lines in the response.

Filters

Used to exclude unwanted responses based on specific criteria, allowing the user to focus on relevant data and reduce noise.

Filter
Flag
Description

status code

-fc

Excludes responses based on status codes.

words

-fw

Excludes responses containing certain words.

regex

-fr

Excludes responses matching regular expressions.

size

-fs

Excludes responses based on size.

lines

-fl

Excludes responses based on line count.

Examples

Last updated