hacktricks/pentesting-web/web-tool-wfuzz.md
carlospolop 63bd9641c0 f
2023-06-05 20:33:24 +02:00

15 KiB

Herramienta Web - WFuzz

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Una herramienta para FUZZear aplicaciones web en cualquier lugar.

Wfuzz ha sido creada para facilitar la tarea en las evaluaciones de aplicaciones web y se basa en un concepto simple: reemplaza cualquier referencia a la palabra clave FUZZ por el valor de una carga útil dada.

Instalación

Instalado en Kali

Github: https://github.com/xmendez/wfuzz

pip install wfuzz

Opciones de filtrado

--hs/ss "regex" #Hide/Show
#Simple example, match a string: "Invalid username"
#Regex example: "Invalid *"

--hc/sc CODE #Hide/Show by code in response
--hl/sl NUM #Hide/Show by number of lines in response
--hw/sw NUM #Hide/Show by number of words in response
--hh/sh NUM #Hide/Show by number of chars in response
--hc/sc NUM #Hide/Show by response code

Opciones de salida

wfuzz -e printers #Prints the available output formats
-f /tmp/output,csv #Saves the output in that location in csv format

Opciones de codificadores

URL Encoding

Codificación de URL

This is the most common encoding used in web applications. It replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits. For example, the space character is replaced with "%20".

Esta es la codificación más común utilizada en aplicaciones web. Reemplaza los caracteres ASCII inseguros con un "%" seguido de dos dígitos hexadecimales. Por ejemplo, el espacio se reemplaza con "%20".

HTML Encoding

Codificación HTML

This encoding replaces unsafe characters with their corresponding HTML entities. For example, the less-than sign "<" is replaced with "<".

Esta codificación reemplaza los caracteres inseguros con sus entidades HTML correspondientes. Por ejemplo, el signo menor que "<" se reemplaza con "<".

Base64 Encoding

Codificación Base64

This encoding converts binary data into a string of ASCII characters. It is commonly used to transmit data over protocols that can only handle ASCII characters. It is not a form of encryption and can be easily decoded.

Esta codificación convierte datos binarios en una cadena de caracteres ASCII. Se utiliza comúnmente para transmitir datos sobre protocolos que solo pueden manejar caracteres ASCII. No es una forma de cifrado y puede ser fácilmente decodificada.

Hex Encoding

Codificación hexadecimal

This encoding converts binary data into a string of hexadecimal digits. It is commonly used in computing and networking to represent binary data in a human-readable format.

Esta codificación convierte datos binarios en una cadena de dígitos hexadecimales. Se utiliza comúnmente en informática y redes para representar datos binarios en un formato legible por humanos.

wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode

Para utilizar un codificador, debes indicarlo en la opción "-w" o "-z".

Ejemplos:

-z file,/path/to/file,md5 #Will use a list inside the file, and will transform each value into its md5 hash before sending it
-w /path/to/file,base64 #Will use a list, and transform to base64
-z list,each-element-here,hexlify #Inline list and to hex before sending values

Hoja de trucos

Fuerza bruta en formularios de inicio de sesión

POST, lista única, filtro de cadena (ocultar)

wfuzz -c -w users.txt --hs "Login name" -d "name=FUZZ&password=FUZZ&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php
#Here we have filtered by line

POST, 2 listas, código de filtro (mostrar)

wfuzz.py -c -z file,users.txt -z file,pass.txt --sc 200 -d "name=FUZZ&password=FUZ2Z&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php
#Here we have filtered by code

GET, 2 listas, filtro de cadena (show), proxy, cookies

En esta sección, se utilizará la herramienta wfuzz para realizar una solicitud GET a una URL y filtrar la respuesta utilizando una cadena específica. También se utilizarán dos listas para realizar la solicitud y se configurará un proxy y cookies para la solicitud.

El siguiente comando muestra cómo se puede utilizar wfuzz para realizar una solicitud GET a una URL y filtrar la respuesta utilizando la cadena "show":

wfuzz -c -z file,/path/to/wordlist.txt -z file,/path/to/second_wordlist.txt --hs="show" -p 127.0.0.1:8080 --cookies "cookie1=value1; cookie2=value2" http://example.com/FUZZ

En este comando, -c indica que se deben mostrar los resultados de la solicitud, -z file indica que se utilizarán dos listas para realizar la solicitud, --hs="show" indica que se filtrará la respuesta utilizando la cadena "show", -p 127.0.0.1:8080 indica que se utilizará un proxy en la dirección IP y puerto especificados, y --cookies "cookie1=value1; cookie2=value2" indica que se utilizarán cookies en la solicitud.

La URL se especifica como http://example.com/FUZZ, donde FUZZ es el marcador de posición que se reemplazará con los valores de las listas especificadas.

Este comando es útil para encontrar información específica en la respuesta de una solicitud GET y para configurar un proxy y cookies para la solicitud.

wfuzz -c -w users.txt -w pass.txt --ss "Welcome " -p 127.0.0.1:8080:HTTP -b "PHPSESSIONID=1234567890abcdef;customcookie=hey" "http://example.com/index.php?username=FUZZ&password=FUZ2Z&action=sign+in"

Fuerza bruta de directorios/ Fuerza bruta RESTful

Lista de palabras clave de parámetros de Arjun

wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ

Fuerza Bruta en Parámetros de Ruta

wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'

Autenticación de cabecera

Básica, 2 listas, cadena de filtro (show), proxy

wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --basic FUZZ:FUZ2Z "http://example.com/index.php"

NTLM, 2 listas, cadena de filtro (show), proxy

En algunos casos, es posible que necesitemos usar NTLM para autenticarnos en el objetivo. En este caso, podemos usar dos listas de palabras diferentes para intentar autenticarnos con diferentes usuarios y contraseñas. Podemos hacer esto usando la opción -w seguida del nombre del archivo que contiene la lista de palabras para usuarios y la opción -W seguida del nombre del archivo que contiene la lista de palabras para contraseñas.

Además, podemos usar la opción --filter o -f seguida de una cadena de filtro para mostrar solo las respuestas que contienen la cadena de filtro. Esto puede ser útil para reducir el ruido en la salida y centrarse en las respuestas relevantes.

Finalmente, si estamos detrás de un proxy, podemos usar la opción --proxy seguida de la dirección del proxy para enrutar todas las solicitudes a través del proxy.

wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --ntlm 'domain\FUZZ:FUZ2Z' "http://example.com/index.php"
wfuzz -c -w users.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "Cookie:id=1312321&user=FUZZ"  "http://example.com/index.php"

User-Agent, código de filtro (ocultar), proxy

El User-Agent es una cadena de texto que identifica al navegador o aplicación que se está utilizando para realizar una petición HTTP. En algunos casos, el servidor puede filtrar las peticiones en función del User-Agent, por lo que es importante configurarlo correctamente para evitar ser bloqueado.

El código de filtro se utiliza para ocultar ciertos resultados de la respuesta del servidor. Por ejemplo, si se está buscando una vulnerabilidad en un formulario de login, se puede utilizar un código de filtro para ocultar los resultados que indican que el login ha sido exitoso.

El uso de un proxy puede ayudar a ocultar la dirección IP del atacante y evitar ser detectado. Además, algunos proxies pueden modificar el User-Agent de las peticiones para evitar ser bloqueados por el servidor.

wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ"  "http://example.com/index.php"

Anfitrión

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

Verbos HTTP (métodos) por fuerza bruta

Usando archivo

wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.com/index.php"

Usando lista en línea

Puede usar una lista en línea para especificar valores para un parámetro. Por ejemplo, si desea probar diferentes valores para el parámetro id, puede usar una lista en línea como esta:

wfuzz -c -z list,1-10 --hs "Invalid id" http://example.com?id=FUZZ

En este ejemplo, list,1-10 especifica una lista en línea que contiene los valores 1 a 10. El parámetro --hs se utiliza para especificar una cadena de texto que indica que el valor del parámetro id es inválido. FUZZ es una palabra clave especial que se utiliza para indicar dónde se insertará cada valor de la lista en línea.

$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/

Fuerza bruta de directorios y archivos


WFuzz

WFuzz es una herramienta de fuerza bruta que se utiliza para encontrar vulnerabilidades en aplicaciones web. Es capaz de buscar directorios y archivos ocultos, así como también puede realizar ataques de inyección de parámetros y de fuerza bruta de contraseñas.

Para buscar directorios y archivos ocultos, se puede utilizar la opción -w para especificar una lista de palabras que se utilizarán para realizar la búsqueda. Por ejemplo:

wfuzz -c -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://example.com/FUZZ

En este ejemplo, WFuzz utilizará la lista de palabras directory-list-2.3-medium.txt para buscar directorios y archivos ocultos en http://example.com/. La opción -c indica que WFuzz debe mostrar sólo los códigos de respuesta HTTP, mientras que FUZZ es la cadena que se sustituirá por cada palabra de la lista.

También se pueden utilizar otras opciones para personalizar la búsqueda, como -t para especificar el número de hilos que se utilizarán, -p para especificar una lista de parámetros que se inyectarán en la URL, y -H para especificar encabezados HTTP personalizados.

Dirb

Dirb es otra herramienta de fuerza bruta que se utiliza para buscar directorios y archivos ocultos en aplicaciones web. Es capaz de buscar en una lista de palabras predefinida o en una lista personalizada, y puede mostrar los códigos de respuesta HTTP y los tamaños de los archivos encontrados.

Para buscar directorios y archivos ocultos con Dirb, se puede utilizar el siguiente comando:

dirb http://example.com /usr/share/wordlists/dirb/common.txt

En este ejemplo, Dirb utilizará la lista de palabras common.txt para buscar directorios y archivos ocultos en http://example.com/. Dirb mostrará los códigos de respuesta HTTP y los tamaños de los archivos encontrados.

También se pueden utilizar otras opciones para personalizar la búsqueda, como -r para seguir las redirecciones, -o para guardar los resultados en un archivo y -x para especificar una extensión de archivo específica que se buscará.

#Filter by whitelisting codes
wfuzz -c -z file,/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --sc 200,202,204,301,302,307,403 http://example.com/uploads/FUZZ

Herramienta para evadir Webs

https://github.com/carlospolop/fuzzhttpbypass

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥