Hashtag-Fuzz est un outil de fuzzing conçu pour tester et contourner les WAF et les CDN. En tirant parti des fonctionnalités avancées telles que l'agent utilisateur aléatoire et la valeur de l'en-tête, les retards aléatoires, la gestion multi-threading et le groupe sélectif des listes de mots et la rotation de proxy de la ronde pour chaque morceau, il offre une solution robuste pour les professionnels de la sécurité visant à identifier les vulnérabilités dans les applications Web. Cet outil se distingue comme le presque premier et le meilleur de sa classe pour les tests WAF sur le taux et les limites.
Autorisez l'application à l'accès global dans le système d'exploitation, si je ne veux pas global de mettre le même dossier avec ce script, alors:
git clone https://github.com/Hashtag-AMIN/hashtag-fuzz.git
cd ./hashtag-fuzz
chmod +x ./hashtag-fuzz
./hashtag-fuzzToute la bibliothèque utilisée est la bibliothèque Python intégrée, pas besoin de pip;)
cp ./hashtag-fuzz /usr/local/sbin/L'outil prend en charge quatre modes WAF, chacun avec des configurations spécifiques:
| Modes WAF | Description |
|---|---|
| entrée | Profil WAF de base avec des mécanismes de protection minimaux. Convient pour les tests initiaux. |
| commun | Profil WAF standard avec mécanismes de protection courants. Convient pour les tests à usage général. |
| pro | Profil de WAF avancé avec des mécanismes de protection plus sophistiqués. Convient pour les tests contre les WAF de qualité professionnelle. |
| prime | Profil WAF premium avec le plus haut niveau de protection. Convient pour les tests contre les WAF de qualité d'entreprise. |
Hashtag-Fuzz prend en charge quatre modes WAF, chacun offrant des fonctionnalités et des configurations uniques:
| Mode | Contrôle des fils de fuzzing | Contrôler le retard aléatoire | Agent utilisateur aléatoire et en-têtes | Cunck Taille de Wordliost séparé |
|---|---|---|---|---|
| entrée | Contrôle de base du thread, 20 threads limités | Retard minimal, retards aléatoires entre 0,1 et 0,2 s | Agent utilisateur aléatoire et randomisation 3 en-têtes supérieurs pour simuler le réseau interne | Worlist divisé à 250 morceaux |
| commun | Amélioration de la gestion des threads, 10 threads limités | Introduit des retards aléatoires entre 0,2-0,5 s | Agent utilisateur aléatoire, randomisation 6 en-têtes supérieurs avec IP local / privé aléatoire | Worlist divisé à 200 morceaux |
| pro | Contrôle de filetage avancé, 5 threads limités | retards aléatoires entre les demandes de 0,5-1 | En-têtes aléatoires d'agent utilisateur et de randomisation avec gamme locale / privée | Worlist divisé à 100 morceaux |
| prime | Contrôle du thread maximum, 1 fils limités | Délai maximum, retards aléatoires entre 1-2 | Les en-têtes les plus utiles randomisation et agent utilisateur aléatoire | Worlist divisé à 50 morceaux |
└─# ./hashtag-fuzz -h
__ __ __ ___
/ / / __ /'___
___ __ ___ ___ ,_ __ __ / __/ __ __ ____ ____
_ ` /'__` /',__ _ ` / /'__` /'_ `_____ ,__/ / /_ ,`/_ ,`
/ L._/__,/` _/ L._/ L _____ _ _ /_/ //_/ /_
_ _ __/._/____/ _ _ __ __/._ ____ ____/ _ ____/ /_/__/_/___
/_//_//__//_//___/ /_//_//__//__//_//___L /_/ /___/ /____//____/
/____/
_/__/
The wrapper of ffuf
The nightmare of WAFs & CDNs
https://github.com/Hashtag-AMIN/hashtag-fuzz
usage: hashtag-fuzz [-h] [-u URL] [-U URLS] [-request REQUEST_RAW]
[-H HEADER] [-b COOKIE] [-d DATA] [-X METHOD] -w WORDLIST
[-waf {entry,common,pro,prime}]
[-cs chunk_SIZE] [-t THREAD] [-p RANDOM_DELAY]
[-x [PROXY]] [-xf PROXY_FILE] [-tor [TOR]]
[-o OUTPUT] [-of {txt,csv}]
[-a ADDITIONAL_CMD] [-v]
hashtag-fuzz wrapper for FFUF.
options:
-h --help show this help message and exit
-u --url URL Target URL
-U --urls URLS File include List of Target URLs
-request --request-raw REQUEST_RAW
File Path to raw request [-request-proto is default: https,
if need to change with -a command: -a="-request-proto http"]
-H --header HEADER Custom headers to add to requests
-b --cookie COOKIE Cookies to add to requests
-d --data DATA Data to send with the request for POST/PUT/PATCH methods
-X --method METHOD HTTP method to use (e.g., GET, POST, PUT)
-w --wordlist WORDLIST
Path to wordlist
-waf --waf-mode {ENTRY,COMMON,PRO,PRIME}
WAF or CDN behavior mode: entry, common, pro, or prime
-cs --chunk-size chunk_SIZE
Split each wordlist with Chunk size, (default=300)
-t --thread THREAD threads use in ffuf (default=[select in waf mode])
-p --random-delay RANDOM_DELAY
random delay range use in ffuf (default=[select in waf mode])
-x --proxy PROXY Proxy server|servers to use (c)
-xf --proxy-file PROXY_FILE
Proxy servers file to use
-tor --tor TOR use Tor proxy with unique(dynamic) IP address for each chunk of wordlist
(default=socks5://127.0.0.1:9050)
-o --output OUTPUT Output file name of FFUF result
-of --output-format {TXT,CSV}
Output of FFUF brief and useful mode: txt, csv
-a --additional-cmd ADDITIONAL_CMD
Additional FFUF commands
-v --verbose verbose mode default: False
./hashtag-fuzz -u http://site.tld/FUZZ -w ./wordlist.txt -waf entry
./hashtag-fuzz -u http://site.tld/FUZZ -w ./wordlist.txt -waf pro -cs 10./hashtag-fuzz -request ./raw-req.txt -w ./wordlist.txt -waf common./hashtag-fuzz -U ./urls.txt -w ./wordlist.txt -waf entry -cs 50 -H " X-header: header-val "
./hashtag-fuzz -U ./urls.txt -w ./wordlist.txt -waf pro -H ' Authorization: value_token ' echo ' http://site.tld ' | ./hashtag-fuzz -w ./wordlist.txt -waf common -cs 15 -d " var1=FUZZ&var2=val2 " -X " PUT "
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf prime -cs 60 " X-header: FUZZ " -p ' 2-2.5 '
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf pro -b ' cookie=value_session ' Default = http://127.0.0.1:8080 avec use -x (pour burp), également le fichier multi-valeur et proxy avec des URL valides.
echo ' http://site.tld/FUZZ ' | ./hashtag-fuzz -w ./wordlist.txt -waf prime -cs 15 -t 50 -x
echo ' http://site.tld/FUZZ ' | ./hashtag-fuzz -w ./wordlist.txt -waf entry -x ' http://proxy1.com '
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf common -cs 15 " header: header-val " -x ' http://proxy1.com ' -x ' http://proxy2.com '
echo ' http://site.tld/FUZZ ' | ./hashtag-fuzz -w ./wordlist.txt -waf pro -cs 100 -xf ./proxy.txtChaque fois que chaque morceau envoyé à Target, le service TOR est redémarré et la nouvelle IP en prise, il faut donc ajouter Tor comme service dans le système d'exploitation
Default = socks5: //127.0.0.1: 9050 avec use -tor (pour l'adresse locale par défaut tor)
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf prime -cs 15 " header: header-val " -tor
echo ' http://test.it/FUZZ ' | ./hashtag-fuzz -w ./wordlist.txt -waf common -cs 80 -tor socks5://proxy1.tor:8000Aide et documents pour ajouter Tor comme service dans n'importe quel système d'exploitation
Si vous avez besoin d'ajouter une commande dans FFUF, vous pouvez l'écrire sous forme de chaîne dans -a / - argument supplémentaire-CMD
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf common -d " data-var=FUZZ " -X " PUT " -a= " -mr '.*test' "
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf prime -cs 15 -tor -a= ' -ac ' Si vous voulez du fuzz mais un bloc WAF ou CDN en taux élevé sur demande, utilisez ces techniques ensemble
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf prime -cs 20 -tor
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf prime -cs 30 -xf ./proxy.txtDélai aléatoire par défaut en mode Prime entre 1-2, mais il faut parfois personnaliser:
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf prime -cs 10 -tor -p ' 2-2.5 'Par défaut, la gestion des threads, mais peut également le contorler:
cat ./urls.txt | ./hashtag-fuzz -w ./wordlist.txt -waf pro -cs 5 -tor -p ' 2.5-3 ' -t 1Une suite utile pour utiliser cette fonctionnalité, utilisez WIRH PARAMSpider ou Paramspider
" urls_come_form_ParamSpider_with_FUZZ_keyword " | ./hashtag-fuzz -w ./wordlist.txt -waf pro -cs 50 -tor