Web Tool - WFuzz

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

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 &lt;.

  • 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

Arjun lista reči za parametre

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 testirate

  • FUZZ je oznaka koju wfuzz 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:

Last updated