# Wfuzz

*`Wfuzz` es una herramienta de **fuerza bruta y fuzzing,** utilizada principalmente en pentesting web. Su propósito principal es **descubrir recursos o vulnerabilidades** en aplicaciones web enviando múltiples peticiones HTTP modificadas, generalmente cambiando algún parámetro en la URL, headers, datos POST, etc.*

#### *🛠 ¿Para qué se utiliza Wfuzz?*

*Estas son algunas de sus aplicaciones más comunes:*

| Función                                    | Descripción                                                                      |
| ------------------------------------------ | -------------------------------------------------------------------------------- |
| **Descubrimiento de directorios/archivos** | Enumerar rutas ocultas o sensibles (como `/admin`, `/login`, `/config.php`)      |
| **Enumeración de parámetros**              | Encontrar nombres de parámetros GET o POST que no están documentados             |
| **Bypass de autenticación o WAF**          | Probar con distintos headers, parámetros o rutas para saltarse restricciones     |
| **Fuzzing de formularios**                 | Enviar múltiples valores a campos específicos buscando errores o RCE, SQLi, etc. |
| **Fuerza bruta de login**                  | Probar combinaciones de usuario y contraseña en formularios de autenticación     |

#### 💻 *Comandos comunes en Wfuzz para pentesting*

***1. Descubrir directorios o archivos ocultos***

{% code fullWidth="true" %}

```bash
wfuzz -u http://target.com/FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hc 404
```

{% endcode %}

* *`FUZZ` es el punto donde se inyectan los valores.*
* *`--hc 404`: oculta las respuestas que devuelven 404 (Not Found).*

***

***2. Descubrir archivos con extensiones específicas***

```bash
wfuzz -u http://target.com/FUZZ.php -w wordlist.txt --hc 404
```

* *Esto probaría archivos como `admin.php`, `login.php`, etc.*

***

***3. Enumerar parámetros GET***

```bash
wfuzz -u http://target.com/index.php?FUZZ=test -w params.txt --hh 1000
```

* *`params.txt` contiene posibles nombres de parámetros (ej: `id`, `user`, `cmd`).*
* *`--hh 1000` oculta respuestas con longitud 1000 (útil para filtrar respuestas vacías o repetitivas).*

***

***4. Fuerza bruta de login (usuario o password)***

```bash
wfuzz -u http://target.com/login.php -d "username=admin&password=FUZZ" -w rockyou.txt --hh 1500
```

* *Está probando distintas contraseñas para el usuario `admin`.*

*También podrías hacerlo variando usuarios:*

```bash
wfuzz -u http://target.com/login.php -d "username=FUZZ&password=123456" -w users.txt --hh 1500
```

***

***5. Fuzzing de headers***

```bash
wfuzz -u http://target.com -H "X-Forwarded-For: FUZZ" -w ips.txt
```

* *Útil para bypass de IP restrictions o WAF.*

***

#### 🧰 *Algunos parámetros útiles*

| Opción          | Descripción                                   |
| --------------- | --------------------------------------------- |
| `-u`            | URL objetivo con el marcador `FUZZ`           |
| `-w`            | Wordlist a usar                               |
| `--hc <code>`   | Oculta respuestas con cierto código HTTP      |
| `--hh <size>`   | Oculta respuestas con cierto tamaño en bytes  |
| `--hs <string>` | Oculta respuestas que contienen cierto string |
| `-d`            | Datos POST                                    |
| `-H`            | Añadir headers personalizados                 |
| `--follow`      | Seguir redirecciones                          |
| `-t`            | Número de hilos (paralelismo, por defecto 5)  |
