18 KiB
Outil Web - WFuzz
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
-
Découvrez The PEASS Family, notre collection exclusive de NFTs
-
Obtenez le swag officiel PEASS & HackTricks
-
Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
-
Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Un outil pour FUZZ les applications web n'importe où.
Wfuzz a été créé pour faciliter la tâche dans les évaluations des applications web et il est basé sur un concept simple : il remplace toute référence au mot-clé FUZZ par la valeur d'une charge utile donnée.
Installation
Installé dans Kali
Github : https://github.com/xmendez/wfuzz
pip install wfuzz
Options de filtrage
--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
Options de sortie
wfuzz -e printers #Prints the available output formats
-f /tmp/output,csv #Saves the output in that location in csv format
Options d'encodeurs
Les encodeurs sont utilisés pour modifier les caractères d'une requête afin de contourner les filtres de sécurité. Voici les options d'encodeurs disponibles dans wfuzz :
- URL encodeur (URL) : Encode les caractères spéciaux en utilisant le format d'encodage d'URL (%XX).
- HTML encodeur (HTML) : Encode les caractères spéciaux en utilisant le format d'encodage HTML (&#xXX;).
- Base64 encodeur (B64) : Encode les données en utilisant l'algorithme Base64.
- Quoted Printable encodeur (QP) : Encode les données en utilisant l'algorithme Quoted Printable.
- Hexadecimal encodeur (HEX) : Encode les données en utilisant l'algorithme Hexadecimal.
- ASCII encodeur (ASCII) : Encode les données en utilisant l'algorithme ASCII.
Il est important de noter que l'utilisation d'encodeurs peut augmenter le temps de traitement de la requête.
wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode
Pour utiliser un encodeur, vous devez l'indiquer dans l'option "-w" ou "-z".
Exemples :
-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
Fiche de référence
Bruteforce de formulaire de connexion
POST, Liste unique, filtre de chaîne (caché)
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 listes, code de filtre (montrer)
Dans cette section, nous allons voir comment utiliser wfuzz pour envoyer une requête POST avec deux listes et filtrer le code de réponse.
La syntaxe de base est la suivante :
wfuzz -c -z file,<list1> -z file,<list2> --hs <response_code> <url> -d "<post_data>"
Explications :
-c
: affiche la sortie en couleurs-z file,<list1>
: spécifie que la liste 1 est un fichier-z file,<list2>
: spécifie que la liste 2 est un fichier--hs <response_code>
: spécifie le code de réponse à filtrer<url>
: l'URL cible-d "<post_data>"
: les données POST à envoyer
Exemple :
wfuzz -c -z file,users.txt -z file,passwords.txt --hs 200 http://example.com/login.php -d "username=FUZZ&password=FUZ2Z"
Dans cet exemple, nous envoyons une requête POST à l'URL http://example.com/login.php
avec les données POST username=FUZZ&password=FUZ2Z
. Les valeurs FUZZ
et FUZ2Z
seront remplacées par les éléments des listes users.txt
et passwords.txt
, respectivement.
Nous filtrons également le code de réponse 200
pour ne voir que les réponses réussies.
Notez que les fichiers users.txt
et passwords.txt
doivent être dans le même répertoire que le fichier de commande wfuzz.
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 listes, filtre de chaîne (show), proxy, cookies
Dans cette section, nous allons utiliser wfuzz pour envoyer des requêtes GET avec deux listes différentes et filtrer les résultats en utilisant une chaîne spécifique. Nous allons également utiliser un proxy et des cookies pour simuler une session authentifiée.
La commande suivante envoie des requêtes GET à l'URL spécifiée en utilisant deux listes différentes pour les paramètres "id" et "category". Nous filtrons ensuite les résultats pour n'afficher que ceux qui contiennent la chaîne "admin".
wfuzz -c -z file,/path/to/ids.txt -z file,/path/to/categories.txt -u "http://example.com/product.php?id=FUZZ&category=FUZ2Z" --hl 0 --hc 404 -H "Cookie: session=123456" -x http://localhost:8080 -s "admin"
-c
: affiche les résultats en couleur-z file
: spécifie que nous utilisons une liste de fichiers pour les valeurs de paramètres-u
: spécifie l'URL cible avec les paramètres FUZZ et FUZ2Z qui seront remplacés par les valeurs des listes--hl 0
: désactive l'affichage de la ligne d'en-tête--hc 404
: ignore les réponses avec un code d'état 404-H
: spécifie les cookies de session-x
: spécifie le proxy à utiliser-s
: filtre les résultats pour n'afficher que ceux qui contiennent la chaîne "admin"
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"
Bruteforce de répertoires/Bruteforce RESTful
Liste de mots de passe de paramètres Arjun
wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ
Brute-Force des Paramètres de Chemin
Les paramètres de chemin sont des variables qui font partie de l'URL et qui sont utilisées pour identifier une ressource spécifique sur le serveur. Les attaquants peuvent utiliser des techniques de brute-force pour deviner les valeurs de ces paramètres et accéder à des ressources non autorisées.
Wfuzz peut être utilisé pour effectuer une attaque de brute-force sur les paramètres de chemin en utilisant la syntaxe suivante :
wfuzz -c -z file,/path/to/wordlist.txt http://example.com/FUZZ
Dans cet exemple, Wfuzz va remplacer le mot-clé FUZZ
par chaque mot du fichier de liste de mots spécifié dans le chemin de l'URL. L'option -c
est utilisée pour afficher les codes de réponse HTTP pour chaque requête.
Il est important de noter que l'utilisation de cette technique peut être détectée par les systèmes de détection d'intrusion et peut entraîner un blocage de l'adresse IP de l'attaquant. Il est donc recommandé d'utiliser des listes de mots spécifiques à la cible et de limiter le nombre de tentatives pour éviter d'être détecté.
wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'
Authentification d'en-tête
Basique, 2 listes, chaîne de filtre (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 listes, chaîne de filtre (show), proxy
NTLM est un protocole d'authentification utilisé par les systèmes d'exploitation Windows. Il est souvent utilisé pour l'authentification des utilisateurs dans les environnements Active Directory.
Lors de l'utilisation de WFuzz avec NTLM, il est possible d'utiliser deux listes de mots de passe différentes pour les tentatives d'authentification. Cela peut être fait en utilisant l'option --ntlm-file
pour spécifier le chemin d'accès à la liste de mots de passe NTLM et l'option --pw-list
pour spécifier le chemin d'accès à la liste de mots de passe standard.
Il est également possible de filtrer les résultats de WFuzz en utilisant une chaîne de filtre. Cela peut être fait en utilisant l'option --filter
suivie de la chaîne de filtre. Par exemple, --filter='show="401"'
affichera uniquement les résultats avec un code de réponse 401.
Enfin, si vous utilisez un proxy pour vous connecter à la cible, vous pouvez spécifier l'adresse du proxy en utilisant l'option --proxy
. Par exemple, --proxy=http://127.0.0.1:8080
spécifiera un proxy sur le port 8080 de l'adresse IP 127.0.0.1.
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"
Bruteforce de Cookie/Header (brute vhost)
Cookie, code de filtre (afficher), proxy
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, code de filtre (masquer), proxy
Le header User-Agent est utilisé pour identifier le client HTTP utilisé pour effectuer une requête. Il est souvent utilisé pour différencier les requêtes provenant de navigateurs web et celles provenant d'outils automatisés tels que les scripts de fuzzing. Il est possible de modifier le User-Agent pour masquer l'outil utilisé et éviter d'être détecté.
Il est également possible de filtrer le code source de la réponse pour masquer les erreurs et les informations sensibles. Cela peut être fait en utilisant des outils tels que grep ou awk.
L'utilisation d'un proxy peut également aider à masquer l'adresse IP de l'attaquant et à éviter d'être détecté. Les proxies peuvent être configurés pour rediriger le trafic à travers des serveurs distants, ce qui rend plus difficile la détection de l'origine de la requête.
wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ" "http://example.com/index.php"
Hôte
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
Utilisation de fichier
Description
Lorsque vous utilisez l'option --hc
pour spécifier le code de réponse attendu, vous pouvez utiliser l'option --hc-r
pour spécifier une réponse différente pour chaque méthode HTTP. Cela peut être utile pour détecter les méthodes HTTP autorisées sur une cible.
Syntaxe
wfuzz -c -z file,<http_methods_file> --hc <response_code> --hc-r <http_method>:<response_code> <url>
Exemple
wfuzz -c -z file,/usr/share/wfuzz/wordlist/http_methods.txt --hc 200 --hc-r PUT:403 http://example.com/FUZZ
Dans cet exemple, wfuzz utilise le fichier http_methods.txt
pour bruteforcer les méthodes HTTP sur l'URL http://example.com/FUZZ
. Si wfuzz reçoit une réponse 200
, il considère que la méthode HTTP est autorisée. Si wfuzz reçoit une réponse 403
pour la méthode HTTP PUT
, il considère que la méthode HTTP PUT
est interdite.
wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.com/index.php"
Utilisation de la liste en ligne
The inline list is a very useful feature of wfuzz that allows you to specify a list of values for a parameter in a single line. This is particularly useful when you have a small list of values that you want to test.
La liste en ligne est une fonctionnalité très utile de wfuzz qui vous permet de spécifier une liste de valeurs pour un paramètre en une seule ligne. Cela est particulièrement utile lorsque vous avez une petite liste de valeurs que vous souhaitez tester.
To use the inline list, you simply need to specify the parameter name followed by the list of values enclosed in curly braces {} and separated by commas. For example, to test the parameter "id" with the values 1, 2, and 3, you would use the following syntax:
Pour utiliser la liste en ligne, vous devez simplement spécifier le nom du paramètre suivi de la liste de valeurs entre accolades {} et séparées par des virgules. Par exemple, pour tester le paramètre "id" avec les valeurs 1, 2 et 3, vous utiliseriez la syntaxe suivante :
wfuzz -u http://example.com/index.php?id={1,2,3}
This will send requests to the URL http://example.com/index.php?id=1, http://example.com/index.php?id=2, and http://example.com/index.php?id=3.
Cela enverra des requêtes aux URL http://example.com/index.php?id=1, http://example.com/index.php?id=2 et http://example.com/index.php?id=3.
$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
Bruteforce de répertoires et de fichiers
WFuzz
WFuzz est un outil de bruteforce très puissant qui peut être utilisé pour tester la sécurité des applications web. Il est capable de tester des répertoires et des fichiers en utilisant des listes de mots personnalisées pour trouver des pages cachées ou des fichiers sensibles.
Pour utiliser WFuzz, vous devez spécifier l'URL de la cible et la liste de mots à utiliser pour la bruteforce. WFuzz peut également être utilisé pour tester des paramètres de requête en utilisant des listes de valeurs personnalisées.
Voici un exemple de commande WFuzz pour tester les répertoires et les fichiers sur une cible :
wfuzz -c -z file,/path/to/wordlist.txt --hc 404 http://target.com/FUZZ
Dans cet exemple, WFuzz utilise le fichier /path/to/wordlist.txt
pour tester les répertoires et les fichiers sur la cible http://target.com/
. L'option --hc 404
indique à WFuzz d'ignorer les réponses HTTP avec le code d'erreur 404.
WFuzz peut également être utilisé pour tester les paramètres de requête en utilisant l'option -d
pour spécifier les données de requête et l'option -z
pour spécifier les listes de valeurs à tester.
DirBuster
DirBuster est un autre outil de bruteforce de répertoires et de fichiers qui peut être utilisé pour tester la sécurité des applications web. Il est capable de tester des répertoires et des fichiers en utilisant des listes de mots personnalisées pour trouver des pages cachées ou des fichiers sensibles.
Pour utiliser DirBuster, vous devez spécifier l'URL de la cible et la liste de mots à utiliser pour la bruteforce. DirBuster peut également être utilisé pour tester des paramètres de requête en utilisant des listes de valeurs personnalisées.
Voici un exemple de configuration DirBuster pour tester les répertoires et les fichiers sur une cible :
Dans cet exemple, DirBuster utilise le fichier /path/to/wordlist.txt
pour tester les répertoires et les fichiers sur la cible http://target.com/
. L'option Follow Redirects
indique à DirBuster de suivre les redirections HTTP.
DirBuster peut également être utilisé pour tester les paramètres de requête en utilisant l'option Injection String
pour spécifier les listes de valeurs à tester.
#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
Outil pour contourner les sites Web
https://github.com/carlospolop/fuzzhttpbypass
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
-
Découvrez The PEASS Family, notre collection exclusive de NFTs
-
Obtenez le swag officiel PEASS & HackTricks
-
Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
-
Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.