Skip to content

Wfuzz Command Cheatsheet

Wfuzz

About Wfuzz

Wfuzz is a powerful web application fuzzer that replaces any reference to the FUZZ keyword in URLs, headers, cookies, or other HTTP request elements with values from a specified payload. This makes it an essential tool for web application security assessments.

Commmon Snippets

Terminal window
wfuzz -c -w $wordlist -t $threads -v --hc 404 $host/FUZZ
wfuzz -c -w $wordlist -t $threads -v --hc 404 -H "Host: FUZZ.$host" $host

Table of Contents

Installation

Terminal window
# Using pip
pip install wfuzz
# On Kali Linux
# Pre-installed, but can be updated via apt
sudo apt update && sudo apt install wfuzz

Basic Concepts

The fundamental concept of Wfuzz is replacing the FUZZ keyword with payloads:

Terminal window
# Basic syntax
wfuzz -z payload,wordlist URL/FUZZ
# Multiple FUZZ keywords
wfuzz -z payload,list1 -z payload,list2 URL/FUZZ/FUZ2Z

Filtering Options

Terminal window
# Hide/Show by string or regex
--hs/ss "regex" # Hide/Show responses with match
--hc/sc CODE # Hide/Show by response code
--hl/sl NUM # Hide/Show by line count
--hw/sw NUM # Hide/Show by word count
--hh/sh NUM # Hide/Show by char count
# Examples
--hs "Invalid username" # Hide responses containing text
--hs "Invalid *" # Hide responses matching regex
--hc 404,503 # Hide specific response codes

Authentication Methods

Terminal window
# Basic authentication
wfuzz -c -w users.txt -w passes.txt \
--basic FUZZ:FUZ2Z \
http://example.com/
# NTLM authentication
wfuzz -c -w users.txt -w passes.txt \
--ntlm 'domain\FUZZ:FUZ2Z' \
http://example.com/

Common Attack Scenarios

Login Form Bruteforce

Terminal window
# Single list
wfuzz -c -w users.txt \
--hs "Login name" \
-d "name=FUZZ&password=FUZZ&autologin=1" \
http://example.com/login
# Two lists
wfuzz -c -z file,users.txt -z file,passes.txt \
--sc 200 \
-d "name=FUZZ&password=FUZ2Z" \
http://example.com/login

Directory and File Discovery

Terminal window
# Basic directory scanning
wfuzz -c \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
--sc 200,202,301,302,307,401 \
http://example.com/FUZZ
# File extension fuzzing
wfuzz -c \
-w wordlist.txt \
-z list,.php-.txt-.html \
http://example.com/FUZZ/FUZ2Z

Virtual Host Discovery

Terminal window
# Subdomain enumeration
wfuzz -c \
-w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-20000.txt \
--hc 400,404,403 \
-H "Host: FUZZ.example.com" \
-u http://example.com \
-t 100

API Endpoint Fuzzing

Terminal window
# RESTful API endpoints
wfuzz -c \
-w /usr/share/wordlists/api_endpoints.txt \
--hc 404 \
https://api.example.com/FUZZ
# Path parameters
wfuzz -c \
-w params.txt \
--hw 11 \
'http://example.com/api/FUZZ=value'

Advanced Features

Encoders

Terminal window
# List available encoders
wfuzz -e encoders
# Common encoders:
# - urlencode
# - md5
# - base64
# - hexlify
# - uri_hex

Output Management

Terminal window
# List available output formats
wfuzz -e printers
# Save output to file
-f /tmp/output,csv
# Custom output format
--oF custom_format.txt
# Color output
-c