Wfuzz

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Fuzzer / brute forcer web
Cibles URL, paramètres GET/POST, cookies, en-têtes
Alternative à Burp Intruder
GUI WebSlayer
Voir aussi Webscarab · Dirb

Wfuzz est un fuzzer orienté web qui permet de brute forcer des URL. C'est une alternative à Burp Intruder. Il peut brute forcer : paramètres GET/POST, cookies, formulaires, répertoires, fichiers et en-têtes HTTP.

Fonctionnalités : récursion (répertoires non liés), brute force GET/POST, sortie HTML et couleur, encodage d'URL, gestion des cookies, multithreading, support des proxys, dictionnaires taillés pour des applications connues (WebLogic, iPlanet, Tomcat, Domino, Oracle 9i, Vignette, ColdFusion...).

wfuzz.py -v -z range,1-1000 http://www.target.example/index.php?id=FUZZ

Concepts

  • payloads : la liste des données envoyées au serveur ;
  • encoders : encodage du payload (URL, base64, unicode, md5, sha1, encodages multiples...) ;
  • iterators : énumèrent les payloads (product, zip, chain) ;
  • plugins : étendent les fonctionnalités ;
  • printers : mise en forme des résultats (magictree, html...).
wfuzz.py -e payloads     # afficher les payloads
wfuzz.py -e encodings    # afficher les encoders
wfuzz.py -e iterators    # afficher les iterators

Méthodes d'itération :

  • product (défaut) : toutes les combinaisons des deux listes ;
  • zip : associe les valeurs de même rang des deux listes ;
  • chain : concatène les deux listes en une seule plus grande.

Usage

Le mot-clé FUZZ indique l'emplacement de la variable (FUZ2Z, FUZ3Z... pour les suivantes) :

# énumération de pages
wfuzz -c -z file,/usr/share/wfuzz/wordlist/general/common.txt http://site-cible.example/FUZZ
# brute force avec deux variables
wfuzz -c -z file,user.txt -z file,password.txt \
  http://192.168.1.35/login.php?user=FUZZ&password=FUZ2Z
# baseline : compare chaque résultat à une valeur par défaut
wfuzz.py -c -z range,1-10 --hc=BBB http://www.site.example/FUZZ{something}
# plage d'hôtes contenant un répertoire donné
wfuzz.py -c -z file,hosts.txt -z list,admin-webmanager-test FUZZ/FUZ2Z
# scan à travers un proxy SOCKS4/5
wfuzz.py -x 192.168.1.2:8080 -c -z range,1-254 -z list,admin-webmanager \
  http://192.168.1.FUZZ/FUZ2Z

Options courantes :

--hc 404   masquer les réponses 404
-c         sortie en couleur
-R 2       récursivité sur deux niveaux
-f         fichier de tests
-d         données POST à tester
--html     réponse au format HTML
-X         scan de méthodes HTTP

Discrétion

Wfuzz n'est pas discret : sa signature d'agent (PyCURL) est affichée, et peut être bloquée côté Apache. Pour la contourner, forcer un User-Agent :

wfuzz -c -z file,rep_list.txt -H "User-Agent: Mozilla" http://192.168.1.35/FUZZ

GUI

Voir aussi