20 KiB
Web alatka - WFuzz
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Alatka za FUZZ-ovanje web aplikacija bilo gde.
Wfuzz je napravljen da olakša zadatak u proceni web aplikacija i zasniva se na jednostavnom konceptu: zamenjuje svako pojavljivanje ključne reči FUZZ vrednošću zadatog payload-a.
Instalacija
Instalirano na Kali
Github: https://github.com/xmendez/wfuzz
pip install wfuzz
Opcije filtriranja
Code
Kod
This option allows you to filter the response based on the HTTP status code. You can specify a single code or a range of codes using the syntax code
or code1-code2
. For example, to filter for all responses with a status code of 200, you would use --filter-code 200
. To filter for all responses with status codes between 400 and 500, you would use --filter-code 400-500
.
Ova opcija vam omogućava filtriranje odgovora na osnovu HTTP statusnog koda. Možete specificirati jedan kod ili opseg kodova koristeći sintaksu kod
ili kod1-kod2
. Na primer, da biste filtrirali sve odgovore sa statusnim kodom 200, koristili biste --filter-code 200
. Da biste filtrirali sve odgovore sa statusnim kodovima između 400 i 500, koristili biste --filter-code 400-500
.
Size
Veličina
This option allows you to filter the response based on the size of the response body. You can specify a single size or a range of sizes using the syntax size
or size1-size2
. For example, to filter for all responses with a body size of 100 bytes, you would use --filter-size 100
. To filter for all responses with body sizes between 200 and 500 bytes, you would use --filter-size 200-500
.
Ova opcija vam omogućava filtriranje odgovora na osnovu veličine tela odgovora. Možete specificirati jednu veličinu ili opseg veličina koristeći sintaksu veličina
ili veličina1-veličina2
. Na primer, da biste filtrirali sve odgovore sa veličinom tela od 100 bajtova, koristili biste --filter-size 100
. Da biste filtrirali sve odgovore sa veličinama tela između 200 i 500 bajtova, koristili biste --filter-size 200-500
.
Words
Reči
This option allows you to filter the response based on the presence or absence of specific words in the response body. You can specify one or more words to include or exclude using the syntax +word1,+word2
or -word1,-word2
. For example, to filter for all responses that contain the words "password" and "admin", you would use --filter-words +password,+admin
. To filter for all responses that do not contain the words "error" and "invalid", you would use --filter-words -error,-invalid
.
Ova opcija vam omogućava filtriranje odgovora na osnovu prisustva ili odsustva određenih reči u telu odgovora. Možete specificirati jednu ili više reči za uključivanje ili isključivanje koristeći sintaksu +reč1,+reč2
ili -reč1,-reč2
. Na primer, da biste filtrirali sve odgovore koji sadrže reči "password" i "admin", koristili biste --filter-words +password,+admin
. Da biste filtrirali sve odgovore koji ne sadrže reči "error" i "invalid", koristili biste --filter-words -error,-invalid
.
--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
Opcije izlaza
Wfuzz provides several options for displaying the output of the scan. These options can be used to customize the format and level of detail in the output.
Standard output
By default, Wfuzz displays the output on the standard output (stdout). This is the most common way to view the results of a scan. The output includes information such as the request URL, response status code, and any discovered vulnerabilities.
Output to a file
Wfuzz also allows you to redirect the output to a file using the -o
or --output
option followed by the desired file name. This can be useful for saving the results of a scan for later analysis or sharing with others.
Example:
wfuzz -c -z file,wordlist/general/common.txt --hc 404 http://example.com/FUZZ -o output.txt
In this example, the output of the scan will be saved to a file named output.txt
.
Output to a workspace
Wfuzz supports integration with cloud/SaaS platforms such as Workspace, AWS, and GCP. This allows you to send the output of a scan directly to a workspace or cloud storage for further analysis or collaboration.
To use this feature, you need to configure the appropriate settings in Wfuzz and provide the necessary credentials for the cloud/SaaS platform.
Output to a database
Wfuzz also supports storing the output of a scan in a database. This can be useful for managing and querying large amounts of scan data.
To enable database output, you need to configure the database settings in Wfuzz and provide the necessary credentials and connection details.
Custom output format
If none of the built-in output options meet your needs, Wfuzz allows you to define a custom output format using the --output-format
option. This option accepts a string that specifies the desired format.
Example:
wfuzz -c -z file,wordlist/general/common.txt --hc 404 http://example.com/FUZZ --output-format "URL: {url}, Status: {status_code}"
In this example, the output will be customized to display only the URL and status code for each request.
wfuzz -e printers #Prints the available output formats
-f /tmp/output,csv #Saves the output in that location in csv format
Opcije enkodera
The wfuzz
tool provides several options for encoding payloads. These options can be used to modify the format of the payloads sent during the fuzzing process. Here are some of the available encoder options:
-
URL Encoding: This option (
-z url
) encodes special characters in the payload using URL encoding. For example, the space character is encoded as%20
. -
HTML Encoding: This option (
-z html
) encodes special characters in the payload using HTML encoding. For example, the less than symbol<
is encoded as<
. -
Base64 Encoding: This option (
-z b64
) encodes the payload using Base64 encoding. This can be useful when dealing with binary data. -
Hex Encoding: This option (
-z hex
) encodes the payload using hexadecimal encoding. Each byte of the payload is represented by two hexadecimal digits. -
Unicode Encoding: This option (
-z unicode
) encodes the payload using Unicode encoding. Each character of the payload is represented by its Unicode code point.
These encoding options can be combined with other wfuzz
options to customize the fuzzing process and increase the chances of finding vulnerabilities in web applications.
wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode
Da biste koristili enkoder, morate ga naznačiti u opciji "-w" ili "-z".
Primeri:
-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
CheetSheet
Brute force napad na login formu
POST, Jedna lista, filter string (sakrij)
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 liste, filter kod (prikaži)
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 liste, filter string (prikaži), proxy, kolačići
GET, 2 листе, филтер стринг (прикажи), прокси, колачићи
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"
Brute force direktorijuma/RESTful brute force
wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ
BF putanja parametara
BF (Brute Force) napad je tehnika koja se koristi za otkrivanje validnih vrednosti putanja parametara. Ova tehnika se koristi kada je potrebno pronaći tačne vrednosti parametara kako bi se izvršio određeni zahtev.
Da biste izvršili BF napad na putanju parametara, možete koristiti alat kao što je wfuzz
. Ovaj alat će automatski generisati različite kombinacije vrednosti parametara i poslati ih na ciljani URL. Kada se pronađe validna vrednost parametra, to znači da je putanja parametara otkrivena.
Da biste izvršili BF napad na putanju parametara koristeći wfuzz
, možete koristiti sledeću sintaksu:
wfuzz -c -z file,<wordlist> --hc <response_code> <url>?<param>=FUZZ
Gde:
-c
opcija se koristi za prikazivanje samo uspešnih zahteva-z file,<wordlist>
opcija se koristi za učitavanje liste reči iz datoteke--hc <response_code>
opcija se koristi za filtriranje odgovora sa određenim HTTP statusnim kodom<url>
predstavlja ciljani URL<param>
predstavlja ime parametra koji želite da testirateFUZZ
je oznaka kojuwfuzz
koristi za zamenjivanje vrednosti parametra iz liste reči
Na primer, ako želite da izvršite BF napad na putanju parametara sa parametrom id
na URL-u http://example.com
, koristeći listu reči wordlist.txt
, možete koristiti sledeću komandu:
wfuzz -c -z file,wordlist.txt --hc 200 http://example.com?id=FUZZ
Ova komanda će automatski generisati različite kombinacije vrednosti parametra id
iz liste reči wordlist.txt
i poslati ih na URL http://example.com
. Samo uspešni zahtevi sa HTTP statusnim kodom 200 će biti prikazani.
BF napad na putanju parametara može biti veoma koristan za otkrivanje validnih vrednosti parametara i pronalaženje ranjivosti u ciljanoj aplikaciji.
wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'
Header Autentifikacija
Osnovno, 2 liste, filter string (prikaži), 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 liste, filter string (prikaži), proxy
NTLM
NTLM (New Technology LAN Manager) je autentifikacioni protokol koji se koristi u Windows mrežama. WFuzz podržava NTLM autentifikaciju i može se koristiti za testiranje sigurnosti sistema koji koriste ovaj protokol.
2 liste
WFuzz omogućava korišćenje 2 liste za napade. Prva lista se koristi za generisanje URL-ova, dok se druga lista koristi za generisanje payload-a. Ovo je korisno kada želite da testirate više kombinacija URL-ova i payload-a.
Filter string (prikaži)
Filter string (prikaži) je opcija koja vam omogućava filtriranje rezultata napada na osnovu određenog stringa. Možete koristiti ovu opciju da biste prikazali samo one rezultate koji sadrže određeni string, što vam pomaže da se fokusirate samo na relevantne informacije.
Proxy
Proxy je posrednik između vašeg računara i ciljnog servera. WFuzz podržava korišćenje proxy servera za anonimno izvršavanje napada. Možete konfigurisati proxy postavke u WFuzz-u kako biste sakrili svoj identitet tokom napada.
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"
Brute forceovanje kolačića/zaglavlja (brute vhost)
Kolačić, filter koda (prikaži), 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, filter kod (sakrij), proxy
User-Agent je HTTP zaglavlje koje se koristi za identifikaciju klijentskog softvera koji šalje zahtev serveru. Može se koristiti za prikrivanje identiteta ili za lažno predstavljanje kao drugi klijentski softver.
Filter kod se koristi za filtriranje rezultata pretrage kako bi se prikazali samo određeni rezultati koji ispunjavaju određene uslove. Može se koristiti za sužavanje obima pretrage i fokusiranje na relevantne rezultate.
Proxy je posrednik između klijenta i servera koji omogućava anonimnost i zaštitu identiteta. Proxy server može se koristiti za sakrivanje IP adrese klijenta i zaobilaženje ograničenja pristupa od strane servera.
wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ" "http://example.com/index.php"
Host
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
Korišćenje fajla
Ova tehnika se koristi za izvršavanje brute force napada na HTTP metode (verbs) koristeći listu metoda iz fajla.
Da biste koristili ovu tehniku, prvo morate kreirati fajl koji sadrži listu HTTP metoda koje želite da isprobate. Svaka metoda treba biti navedena u zasebnom redu.
Na primer, možete kreirati fajl methods.txt
sa sledećim sadržajem:
GET
POST
PUT
DELETE
Zatim možete koristiti wfuzz
alat za izvršavanje brute force napada na HTTP metode koristeći ovaj fajl. Evo primera komande:
wfuzz -w methods.txt http://example.com/FUZZ
Ovde FUZZ
predstavlja rezervisanu reč koju wfuzz
koristi za zamenjivanje sa svakom metodom iz fajla.
Nakon izvršavanja komande, wfuzz
će automatski zameniti FUZZ
sa svakom metodom iz fajla i poslati HTTP zahtev na odgovarajuću putanju na ciljnom veb serveru.
Ova tehnika je korisna za otkrivanje potencijalno ranjivih HTTP metoda na ciljnom veb serveru.
wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.com/index.php"
Korišćenje inline liste
Inline lista je tehnika koja se koristi u alatu wfuzz kako bi se brzo i efikasno testirali različiti parametri. Ova tehnika omogućava da se vrednosti parametara iz liste ubace direktno u URL zahteva, umesto da se koristi fajl sa listom vrednosti.
Da biste koristili inline listu, potrebno je da definišete listu vrednosti u formatu {vrednost1,vrednost2,vrednost3}
. Zatim, umesto da koristite opciju -z
za učitavanje fajla sa listom, koristite opciju -Z
i navodite inline listu kao vrednost.
Na primer, ako želite da testirate različite vrednosti za parametar id
, možete koristiti inline listu na sledeći način:
wfuzz -c -z list.txt http://example.com/?id=FUZZ
Ovde list.txt
predstavlja fajl sa listom vrednosti, dok FUZZ
predstavlja oznaku koja će biti zamenjena sa svakom vrednošću iz liste.
Sa inline listom, isti rezultat možete postići na sledeći način:
wfuzz -c -Z {1,2,3} http://example.com/?id=FUZZ
Ovde se inline lista {1,2,3}
direktno ubacuje u URL zahteva, umesto da se koristi fajl sa listom.
Korišćenje inline liste može biti veoma korisno kada želite brzo da testirate različite vrednosti parametara i izbegnete upotrebu dodatnih fajlova.
$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
Brute force napad na direktorijume i fajlove
Brute force napad je tehnika koja se koristi za otkrivanje direktorijuma i fajlova na ciljnom veb serveru. Ova tehnika se zasniva na pokušaju svih mogućih kombinacija putanja ili imena fajlova kako bi se pronašli oni koji su dostupni.
Upotreba alata Wfuzz
Wfuzz je popularan alat za izvršavanje brute force napada na direktorijume i fajlove. Ovaj alat omogućava korisnicima da definišu listu putanja ili imena fajlova koje žele da testiraju. Wfuzz zatim automatski generiše sve moguće kombinacije i šalje zahteve serveru.
Instalacija Wfuzz-a
Da biste instalirali Wfuzz, možete koristiti sledeću komandu:
sudo apt-get install wfuzz
Osnovna upotreba Wfuzz-a
Osnovna sintaksa za upotrebu Wfuzz-a je:
wfuzz -c -z file,<wordlist> -u <target_url> -t <num_threads> -H <headers>
-c
opcija omogućava prikazivanje samo uspešnih odgovora-z file,<wordlist>
opcija definiše da se koristi lista reči iz datoteke za generisanje putanja ili imena fajlova-u <target_url>
opcija definiše ciljnu URL adresu-t <num_threads>
opcija definiše broj niti koje će se koristiti za izvršavanje napada-H <headers>
opcija definiše dodatne zaglavlja koja će se poslati sa zahtevima
Primer upotrebe Wfuzz-a
Evo primera kako možete koristiti Wfuzz za brute force napad na direktorijume i fajlove:
wfuzz -c -z file,wordlist.txt -u http://example.com/FUZZ -t 10 -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
U ovom primeru, Wfuzz će koristiti listu reči iz datoteke "wordlist.txt" za generisanje putanja koje će biti testirane na URL adresi "http://example.com/FUZZ". Napad će se izvršavati sa 10 niti, a dodatno će se poslati zaglavlje "User-Agent" sa svakim zahtevom.
Napredne opcije Wfuzz-a
Wfuzz takođe pruža napredne opcije koje omogućavaju korisnicima da prilagode napad prema svojim potrebama. Ove opcije uključuju podešavanje vremenskog ograničenja, podešavanje HTTP metoda, podešavanje autentifikacije i još mnogo toga.
Za više informacija o naprednim opcijama Wfuzz-a, možete pogledati zvaničnu dokumentaciju alata.
#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
Alat za zaobilaženje veb stranica
https://github.com/carlospolop/fuzzhttpbypass
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju oglašenu na HackTricks-u ili preuzmete HackTricks u PDF formatu, proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.