---
title: "FUZZ Everything! 📂"
description: "How to use ffuf to fuzz everything: hidden directories, file extensions, API endpoints, parameters and backup files that normal recon never surfaces."
canonical_url: "https://amrelsagaei.com/fuzz-everything"
last_updated: "2025-02-05"
---

<post-media video="xlQ5pvcvxYI">



</post-media>

Ever wanted to dig deep into websites, APIs, and directories to uncover hidden secrets? In the world of penetration testing, **fuzzing** is one of the most effective techniques for doing just that. Today, we’re diving into the concept of “**fuzz everything**,” exploring how to use **ffuf** to find all those buried endpoints, parameters, and backup files. Whether you’re experienced in bug bounty hunting or just starting your cybersecurity journey, ffuf is a tool you’ll want to have in your arsenal.

## What is Fuzzing?

In simple terms, **fuzzing** is the process of sending various inputs to an application to see how it reacts. It’s like testing every possible combination to find hidden vulnerabilities. You’re essentially throwing random (or structured) data at a target to see if anything interesting happens, sometimes leading to valuable discoveries.

In the context of security testing, fuzzing can help identify hidden directories, files, API endpoints, and parameters that aren't easily visible. These are the entry points that lead to valuable vulnerabilities, and fuzzing helps you find them before someone else does.

[**ffuf**](https://github.com/ffuf/ffuf?utm_source=amrelsagaei.com&utm_medium=referral), short for **Fuzz Faster You Fool**: is one of the top tools for this task, built for speed and flexibility. So let’s jump into setting it up and using it effectively.

---

## Setting Up ffuf

First things first, installing [**ffuf**](https://github.com/ffuf/ffuf?utm_source=amrelsagaei.com&utm_medium=referral). If you don’t already have it, follow these steps:

1. Open your terminal.
2. Clone the ffuf repository and install it by entering:```bash
git clone https://github.com/ffuf/ffuf.git
cd ffuf
go get
```

> **Note**: Make sure **Go** is installed on your system, as ffuf requires it. Once installed, you’re all set to start fuzzing!

---

## Finding Hidden Directories and Files

One of the most common uses of fuzzing is to find hidden files or directories on a website. These hidden files can sometimes contain sensitive information or lead to vulnerable areas of the site.

### Basic Directory Fuzzing Command

```bash
ffuf -u http://example.com/FUZZ -w /path/to/wordlist.txt
```

- `-u` sets the target URL, with **FUZZ** as a placeholder where ffuf will try different values.
- `-w` points to the wordlist, which ffuf uses to test different file or directory names.

### Adding File Extensions

To make fuzzing even more effective, add common file extensions like `.php`, `.html`, `.bak`, or `.zip` to look for potential backups or hidden scripts:

```bash
ffuf -u http://example.com/FUZZ -w /path/to/wordlist.txt -e .bak,.php,.html
```

Adding extensions helps in finding backup files or sensitive scripts that may have been left exposed unintentionally.

---

## Uncovering API Endpoints

For bug bounty hunters and penetration testers, fuzzing APIs can be highly rewarding. This process can reveal hidden or undocumented endpoints.

### Command for API Endpoint Fuzzing

```bash
ffuf -u http://api.example.com/FUZZ -w /path/to/api_wordlist.txt
```

In this setup, ffuf will scan for possible API endpoints like `/admin`, `/dev`, or others that might contain sensitive data or functionality.

---

## Discovering Parameters

Another powerful feature of ffuf is its ability to uncover hidden parameters. This is useful for testing various vulnerabilities, such as **SQL Injection** or **Cross-Site Scripting (XSS)**.

### Fuzzing for Parameters Command

```bash
ffuf -u http://example.com/search?FUZZ=value -w /path/to/parameter_wordlist.txt
```

With this command, you can find hidden or undocumented parameters, giving you additional angles to test for vulnerabilities.

---

## Using Custom Headers and POST Data

ffuf allows you to customize your requests with headers and POST data, making it versatile for testing various scenarios. This is handy when authentication tokens are needed or when testing form inputs.

### Adding Custom Headers

For example, if you need to add an authorization token, you can use this command:

```bash
ffuf -u http://example.com/FUZZ -w /path/to/wordlist.txt -H Authorization: Bearer TOKEN
```

### Fuzzing with POST Data

If you need to test POST requests, specify the HTTP method with `-X POST` and add the data payload using `-d`:

```bash
ffuf -u http://example.com/login -w /path/to/wordlist.txt -X POST -d username=FUZZ&password=pass123
```

This command can be helpful for brute-forcing form fields or testing different input values.

---

## Advanced Filtering and Matching Techniques

One of ffuf’s strengths is its ability to filter and match results based on specific criteria like status codes, response sizes, or regex patterns. This makes it easier to sift through responses and find the most relevant results.

### Matching Status Codes

To see only responses with a particular HTTP status code, use the `-mc` flag:

```bash
ffuf -u http://example.com/FUZZ -w /path/to/wordlist.txt -mc 200
```

### Filtering by Response Size

Sometimes, filtering by response size can be helpful, especially when the server returns the same status code for valid and invalid requests:

```bash
ffuf -u http://example.com/FUZZ -w /path/to/wordlist.txt -fs 1024
```

These options make it easy to zero in on the important results without being overwhelmed by irrelevant data.

---

## Going Deeper with Recursion

When you find a directory you want to explore further, ffuf’s `-recursion` flag lets you automatically go deeper into any directories it discovers.

```bash
ffuf -u http://example.com/FUZZ -w /path/to/wordlist.txt -recursion
```

You can also set the recursion depth with `-recursion-depth` to control how many levels deep ffuf should search.

---

## Integrating Proxies for Better Control

Finally, ffuf can be run through a proxy, which is useful for logging requests or analyzing them with tools like **Burp Suite**.

### Using a Proxy

```bash
ffuf -u http://example.com/FUZZ -w /path/to/wordlist.txt -x http://127.0.0.1:8080
```

Routing fuzzing traffic through a proxy lets you see each request in detail, giving you more insight and control.

---

## Wrapping Up

That’s a comprehensive look at how to **fuzz everything** using **ffuf**!

Fuzzing is an essential skill for anyone serious about hacking, and ffuf is one of the best tools to make it fast and efficient. Mastering these techniques can help you uncover vulnerabilities that others might overlook.

If you have any questions or suggestions for future tutorials, drop them in the comments. Happy fuzzing, and Cheers🥂!

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
