Skip to content

FFUF

Description

A module for web fuzzing using the FFUF tool.

This module runs FFUF on given target and returns a file with found directories.

Prerequisites

FFUF must be installed.

Input parameters

target

Scan target.

Name Type Required Default value Example value
target string http://127.0.0.1:8000/FUZZ

wordlist

The wordlist for fuzzing the webserver.

Name Type Required Default value Example value
wordlist string /usr/share/wordlists/dirb/small.txt

options

Additional FFUF parameters.

Name Type Required Default value Example value
options string -X POST

serialize_output

Use FFUF's serialization (-of json -o file).

Name Type Required Default value Example value
serialize_output boolean true false

command

FFUF command to run with syntax as in command line (with executable).

Name Type Required Default value Example value
command string ffuf -u http://CHANGE_ME/FUZZ

Examples

Example with serialized output

Input:

module_arguments:
  target: CHANGE_ME
  wordlist: "/usr/share/wordlists/dirb/small.txt"
  options: -X POST

Output:

{"time":"2023-05-16T12:04:36+02:00","config":{"sni":"","url":"http://172.16.169.128/FUZZ","json":false,"rate":0,"delay":{"value":"0.00"},"fmode":"or","http2":false,"mmode":"or","quiet":false,"colors":false,"method":"POST","cmdline":"ffuf -w /usr/share/wordlists/dirb/small.txt -u http://172.16.169.128/FUZZ -of json -o /tmp/cryton-ffuf-1684231474.215272.tmp -X POST","headers":{},"maxtime":0,"threads":40,"timeout":10,"verbose":false,"debuglog":"","matchers":{"Mutex":{},"Filters":{},"Matchers":{"status":{"value":"200,204,301,302,307,401,403,405,500"}},"IsCalibrated":false,"PerDomainFilters":{}},"postdata":"","proxyurl":"","scrapers":"all","stop_403":false,"stop_all":false,"inputmode":"clusterbomb","recursion":false,"wordlists":["/usr/share/wordlists/dirb/small.txt"],"configfile":"","extensions":[],"ignorebody":false,"inputshell":"","outputfile":"/tmp/cryton-ffuf-1684231474.215272.tmp","maxtime_job":0,"requestfile":"","scraperfile":"","stop_errors":false,"cmd_inputnum":100,"outputformat":"json","requestproto":"https","inputproviders":[{"name":"wordlist","value":"/usr/share/wordlists/dirb/small.txt","keyword":"FUZZ","template":""}],"noninteractive":false,"replayproxyurl":"","autocalibration":false,"outputdirectory":"","recursion_depth":0,"follow_redirects":false,"recursion_strategy":"default","OutputSkipEmptyFile":false,"autocalibration_keyword":"FUZZ","autocalibration_perhost":false,"autocalibration_strings":[],"dirsearch_compatibility":false,"autocalibration_strategy":"basic","ignore_wordlist_comments":false},"results":[],"commandline":"ffuf -w /usr/share/wordlists/dirb/small.txt -u http://172.16.169.128/FUZZ -of json -o /tmp/cryton-ffuf-1684231474.215272.tmp -X POST"}

Example with text output

Input:

module_arguments:
  target: CHANGE_ME
  options: --max-threads 7
  serialize_output: False

Output:

/'___\ /'___\ /'___\ /\ \__/ /\ \__/ __ __ /\ \__/ \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\ \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/ \ \_\ \ \_\ \ \____/ \ \_\ \/_/ \/_/ \/___/ \/_/ v2.0.0-dev ________________________________________________ :: Method : POST :: URL : http://172.16.169.128/FUZZ :: Wordlist : FUZZ: /usr/share/wordlists/dirb/small.txt :: Output file : /tmp/cryton-ffuf-1684231474.215272.tmp :: File format : json :: Follow redirects : false :: Calibration : false :: Timeout : 10 :: Threads : 40 :: Matcher : Response status: 200,204,301,302,307,401,403,405,500 ________________________________________________ :: Progress: [40/959] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 :: :: Progress: [492/959] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 :: :: Progress: [959/959] :: Job [1/1] :: 0 req/sec :: Duration: [0:00:00] :: Errors: 0 :: :: Progress: [959/959] :: Job [1/1] :: 121 req/sec :: Duration: [0:00:01] :: Errors: 0 ::

Troubleshooting

So far so good.

Output serialization

Output is serialized by FFUF itself.