23 KiB
Webwerf - WFuzz
Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslagplekke.
'n Gereedskap om webtoepassings enige plek te FUZZ.
Wfuzz is geskep om die taak in webtoepassingsassesserings te vergemaklik en dit is gebaseer op 'n eenvoudige konsep: dit vervang enige verwysing na die FUZZ-sleutelwoord met die waarde van 'n gegewe lading.
Installasie
Geïnstalleer in Kali
Github: https://github.com/xmendez/wfuzz
pip install wfuzz
Filtrering opsies
-c, --code
Filter op HTTP status kode
-w, --wordlist
Filter op basis van 'n woordelys
-r, --regex
Filter op basis van 'n regulêre uitdrukking
-s, --size
Filter op basis van grootte van die inhoud
-e, --exclude
Sluit sekere patrone uit
-z, --zero
Sluit nulinhoud uit
-x, --hex
Filter op basis van heksadesimale waarde
-b, --byte
Filter op basis van byte-waarde
-d, --dict
Filter op basis van 'n woordelys
-t, --time
Filter op basis van responstyd
-l, --length
Filter op basis van lengte van die inhoud
-m, --mime
Filter op basis van MIME-tipe
-h, --header
Filter op basis van 'n spesifieke HTTP-kop
-f, --follow
Volg omleidings
-i, --ignore
Ignoreer sekere HTTP-foute
-n, --null
Filter op nulwaarde
-g, --grep
Filter op basis van 'n spesifieke teks
-u, --url
Filter op basis van URL
-p, --proxy
Deurloop 'n HTTP-proxy
-a, --auth
Voeg outentiseringsinligting by
-k, --cookie
Voeg koekie-inligting by
-y, --proxy-auth
Voeg outentiseringsinligting vir die HTTP-proxy by
-v, --verbose
Gedetailleerde uitvoer weergee
-q, --quiet
Stilmodus, toon slegs resultate
-o, --output
Stoor resultate in 'n lêer
-A, --agent
Stel 'n spesifieke gebruikersagent in
-H, --host
Stel 'n spesifieke gasheer in
-P, --port
Stel 'n spesifieke poort in
-T, --timeout
Stel 'n spesifieke tydlimiet in
-U, --user-agent
Stel 'n spesifieke gebruikersagent in
-X, --method
Stel 'n spesifieke HTTP-metode in
-C, --cookie-jar
Stoor koekies in 'n lêer
-D, --data
Stuur data in 'n POST-aanvraag
-E, --referer
Stel 'n spesifieke verwysings-URL in
-F, --follow-redirects
Volg omleidings
-G, --get
Stuur 'n GET-aanvraag
-I, --head
Stuur 'n HEAD-aanvraag
-J, --json
Stuur 'n JSON-aanvraag
-K, --insecure
Ignoreer SSL-sertifikaatfoute
-L, --location
Volg omleidings
-M, --multipart
Stuur 'n multipart/form-data-aanvraag
-N, --no-follow
Moenie omleidings volg nie
-O, --output-format
Stel die uitvoerformaat in
-Q, --query
Stuur 'n aanvraag met 'n vraagteken
-R, --referer
Stel 'n spesifieke verwysings-URL in
-S, --silent
Stilmodus, toon geen resultate nie
-V, --version
Toon die weergawe-inligting
-W, --write
Stoor resultate in 'n lêer
-Y, --proxy-auth
Voeg outentiseringsinligting vir die HTTP-proxy by
-Z, --null
Filter op nulwaarde
--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
Uitsetopsies
Wfuzz bied verskeie uitsetopsies vir die resultate van 'n fuzzing-aanval. Hier is 'n oorsig van die beskikbare opsies:
- -o, --output: Hierdie opsie stel die uitsetlêer in waarin die resultate van die aanval gestoor moet word. Byvoorbeeld:
-o resultate.txt
. - -f, --format: Hierdie opsie stel die uitsetformaat in vir die resultate. Die beskikbare opsies sluit in
json
,html
,csv
,xml
,yaml
,pickle
,raw
enconsole
. Byvoorbeeld:-f json
. - -s, --save: Hierdie opsie stel die uitsetlêer in waarin die resultate van die aanval gestoor moet word, sonder om dit na die skerm te vertoon nie. Byvoorbeeld:
-s resultate.txt
. - -d, --dump: Hierdie opsie stel die uitsetlêer in waarin die volledige HTTP-verkeer van die aanval gestoor moet word. Byvoorbeeld:
-d http_traffic.txt
. - -w, --watch: Hierdie opsie stel die uitsetlêer in waarin die resultate van die aanval gestoor moet word, en dit word outomaties opgedateer as nuwe resultate ontvang word. Byvoorbeeld:
-w resultate.txt
. - -v, --verbose: Hierdie opsie stel die uitsetlêer in waarin die volledige HTTP-verkeer van die aanval gestoor moet word, tesame met die resultate. Byvoorbeeld:
-v http_traffic.txt
.
Dit is belangrik om die regte uitsetopsies te kies om die resultate van 'n fuzzing-aanval effektief te bestuur en te analiseer.
wfuzz -e printers #Prints the available output formats
-f /tmp/output,csv #Saves the output in that location in csv format
Koderingsopsies
Wfuzz supports various encoding options that can be used during the fuzzing process. These options allow you to manipulate the input data and test different scenarios. The available encoding options are:
-
URL Encoding: This option encodes special characters in the URL using percent encoding. For example, the space character is encoded as
%20
. -
HTML Encoding: This option encodes special characters in HTML entities. For example, the less than symbol
<
is encoded as<
. -
Base64 Encoding: This option encodes the input data using Base64 encoding. It is commonly used to encode binary data.
-
Hex Encoding: This option encodes the input data using hexadecimal representation. Each byte is represented by two hexadecimal digits.
-
Unicode Encoding: This option encodes the input data using Unicode characters. It can be useful for testing applications that handle Unicode input.
-
UTF-8 Encoding: This option encodes the input data using UTF-8 encoding. It is commonly used for internationalization testing.
-
Double URL Encoding: This option applies URL encoding twice to the input data. It can be useful for bypassing certain security filters.
-
Mixed Encoding: This option applies a combination of different encodings to the input data. It can be useful for testing complex scenarios.
To use these encoding options in Wfuzz, you can specify the desired encoding using the --encoding
parameter followed by the encoding type. For example, to use URL encoding, you can use the command --encoding url
.
wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode
Om 'n enkoder te gebruik, moet jy dit aandui in die "-w" of "-z" opsie.
Voorbeelde:
-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
Spiekbriefie
Aantekeningsvorm-bruteforce
POST, Enkele lys, filter string (versteek)
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 lys, filter kode (wys)
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 lys, filter string (wys), proxy, koekies
Wfuzz er en fleksibel værktøj til webapplikationstestning, der kan bruges til at udføre forskellige angreb som fuzzer, brute force og ordlisteangreb. Det understøtter GET-anmodninger, og du kan bruge det til at teste webapplikationer ved at manipulere URL-parametre.
For at bruge Wfuzz skal du angive en URL og en liste over værdier, der skal fuzzes. Du kan også angive en filterstreng for at filtrere de ønskede resultater. Wfuzz understøtter også proxy og cookies, så du kan teste webapplikationer, der kræver autentificering eller er bag en firewall.
Her er et eksempel på, hvordan du kan bruge Wfuzz til at teste en webapplikation:
wfuzz -c -z file,wordlist.txt --filter "Length: 15" -u "http://example.com/?param=FUZZ"
I dette eksempel bruger vi Wfuzz til at fuzz værdien af parameteren "param" i URL'en "http://example.com/". Vi bruger en ordliste fra filen "wordlist.txt" og filtrerer resultaterne for at vise kun dem med en længde på 15 tegn. Vi bruger også cookies og en proxy ved hjælp af flagene "-c" og "-z".
Wfuzz er et kraftfuldt værktøj til webapplikationstestning, der kan hjælpe dig med at identificere sårbarheder og sikkerhedsproblemer i dine webapplikationer. Ved at bruge forskellige fuzzing-teknikker kan du udsætte potentielle svagheder og forbedre sikkerheden i dine applikationer.
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 Gids/RESTful bruteforce
wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ
Padparameters BF
Padparameters BF is 'n tegniek wat gebruik word om padparameters te raai. Padparameters is dinamiese waardes wat in die URL voorkom, soos byvoorbeeld https://example.com/user/123
. Die waarde 123
is 'n padparameter.
Met die Padparameters BF-tegniek kan 'n aanvaller verskillende waardes vir die padparameter raai om te sien of daar enige sensitiewe inligting of funksionaliteit is wat toeganklik is deur die verandering van die padparameterwaarde. Dit kan nuttig wees om verborge bladsye, API-eindpunte of ander funksionaliteit te ontdek wat nie bedoel is om toeganklik te wees nie.
Die Padparameters BF-tegniek kan uitgevoer word met behulp van hulpmiddels soos WFuzz, wat 'n webtoepassingstoetsingshulpmiddel is wat spesifiek ontwerp is vir die raai van padparameters. WFuzz kan gebruik word om 'n lys moontlike waardes vir die padparameter te verskaf en dit te toets teen die teikenwebwerf om te sien of enige van die waardes toegang tot verborge funksionaliteit bied.
Dit is belangrik om te onthou dat die Padparameters BF-tegniek 'n vorm van aanval is en slegs gebruik moet word met toestemming van die eienaar van die teikenwebwerf.
wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'
Koptekstige Verifikasie
Basies, 2 lys, filter string (wys), 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 lys, filter string (wys), proxy
NTLM is 'n outentifikasieprotokol wat gebruik word in Windows-omgewings. Dit maak gebruik van 'n uitruilproses waar die kliënt en bediener uitruilings van uitdagings en antwoorde doen om die identiteit van die kliënt te bevestig.
Wanneer dit kom by die gebruik van WFuzz om NTLM-gebaseerde aanvalle uit te voer, kan jy twee lyste gebruik: een vir gebruikersname en een vir wagwoorde. Hierdie lyste sal gebruik word om verskillende kombinasies van gebruikersname en wagwoord te probeer om toegang tot 'n stelsel te verkry.
Jy kan ook 'n filterstring spesifiseer om slegs sekere resultate te wys. Hierdie filterstring kan gebruik word om spesifieke patrone of sleutelwoorde in die resultate te soek en slegs die relevante resultate te vertoon.
As jy 'n proxy gebruik, kan jy WFuzz konfigureer om deur die proxy te loop. Dit kan nuttig wees as jy 'n spesifieke proxy wil gebruik vir jou aanvalle of as jy deur 'n sekuriteitsinfrastruktuur moet loop wat 'n proxy vereis.
Hier is 'n voorbeeld van hoe jy WFuzz kan gebruik om NTLM-gebaseerde aanvalle uit te voer met behulp van twee lyste, 'n filterstring en 'n proxy:
wfuzz -c -z file,users.txt -z file,passwords.txt --ntlm -F "filterstring" -p 127.0.0.1:8080 http://target.com/login.php
Hierdie bevel sal WFuzz konfigureer om die gebruikersname- en wagwoordlyste te gebruik, NTLM-verifikasie te gebruik, die filterstring toe te pas en deur die proxy by 127.0.0.1:8080 te loop. Dit sal die aanval uitvoer teen die doelwit-webwerf se login.php-bladsy.
Onthou om hierdie tegnieke slegs te gebruik vir wettige doeleindes en met toestemming van die eienaar van die teikenstelsel.
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"
Koekie/Header bruteforce (vhost brute)
Koekie, filter kode (wys), 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"
Gebruiker-Agent, filter kode (versteek), proxy
Wanneer je webapplicaties aan het testen bent, kan het handig zijn om verschillende User-Agent headers te gebruiken om te zien hoe de applicatie reageert op verschillende browsers en apparaten. Dit kan je helpen om eventuele kwetsbaarheden of fouten in de applicatie te identificeren.
Een handige tool om User-Agent headers te testen is wfuzz. Met wfuzz kun je eenvoudig verschillende User-Agent headers uitproberen en de reactie van de applicatie observeren. Hier is een voorbeeld van hoe je wfuzz kunt gebruiken om User-Agent headers te testen:
wfuzz -c -z file,/path/to/useragents.txt --hc 404 http://example.com/FUZZ
In dit voorbeeld gebruiken we een lijst met User-Agent headers die zijn opgeslagen in het bestand /path/to/useragents.txt
. Wfuzz zal elke User-Agent header uit de lijst proberen en de reactie van de applicatie observeren. De optie --hc 404
zorgt ervoor dat wfuzz alleen de headers weergeeft waarbij de statuscode 404 is.
Het is ook mogelijk om wfuzz te gebruiken in combinatie met een proxy. Dit kan handig zijn als je de verkeersstroom tussen je machine en de applicatie wilt observeren en manipuleren. Om wfuzz met een proxy te gebruiken, kun je de volgende optie toevoegen:
wfuzz -c -z file,/path/to/useragents.txt --hc 404 --proxy http://localhost:8080 http://example.com/FUZZ
In dit voorbeeld gebruiken we een proxy die op localhost
draait op poort 8080
. Wfuzz zal het verkeer via deze proxy sturen, zodat je het kunt observeren en manipuleren met behulp van een tool zoals Burp Suite.
Het gebruik van User-Agent headers, het filteren van code en het gebruik van een proxy zijn allemaal nuttige technieken bij het testen van webapplicaties. Door deze technieken te combineren met andere pentesting-tools en -methoden, kun je kwetsbaarheden en fouten in de applicatie identificeren en helpen bij het verbeteren van de beveiliging ervan.
wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ" "http://example.com/index.php"
Gasheer
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
Metode vir HTTP Verbs (metodes) bruteforce
Met behulp van 'n lêer
Om HTTP-verbindingsmetodes te bruteforce, kan jy 'n lêer gebruik wat 'n lys van moontlike metodes bevat. Hier is 'n voorbeeld van hoe jy dit kan doen met wfuzz:
wfuzz -c -z file,methods.txt http://example.com/FUZZ
In hierdie voorbeeld sal wfuzz die lêer "methods.txt" gebruik om die moontlike metodes te lewer. Die FUZZ-teken sal vervang word deur elke metode in die lêer terwyl dit die aanvrae uitvoer. Die "-c" vlag sal die responskodes van die webbediener vertoon.
Jy kan jou eie lêer met metodes skep deur elke metode op 'n nuwe lyn te plaas. Byvoorbeeld:
GET
POST
PUT
DELETE
Hierdie tegniek kan nuttig wees om te bepaal of 'n webbediener onverwagte of ongedokumenteerde metodes ondersteun.
wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.com/index.php"
Gebruik van inline-lys
Sometimes, when you are fuzzing a web application, you may need to provide a list of values as input to a specific parameter. This can be done using the --list
option in wfuzz
. However, if you have a small list of values, you can use the inline list feature of wfuzz
to provide the values directly in the command line.
Soms, wanneer jy 'n webtoepassing fuzz, mag jy 'n lys waardes as insette vir 'n spesifieke parameter moet voorsien. Dit kan gedoen word deur die --list
opsie in wfuzz
te gebruik. As jy egter 'n klein lys waardes het, kan jy die inline-lysfunksie van wfuzz
gebruik om die waardes direk in die opdraglyn te voorsien.
To use the inline list feature, you need to enclose the list of values in curly braces {}
and separate each value with a comma. For example, if you want to fuzz the id
parameter with the values 1
, 2
, and 3
, you can use the following command:
Om die inline-lysfunksie te gebruik, moet jy die lys waardes in krulhakies {}
insluit en elke waarde met 'n komma skei. Byvoorbeeld, as jy die id
parameter met die waardes 1
, 2
, en 3
wil fuzz, kan jy die volgende opdrag gebruik:
wfuzz -u http://example.com/?id=FUZZ -z {1,2,3}
In this example, FUZZ
is a placeholder that will be replaced by each value in the inline list. The -z
option is used to specify the inline list.
In hierdie voorbeeld is FUZZ
'n plasinghouer wat deur elke waarde in die inline-lys vervang sal word. Die -z
opsie word gebruik om die inline-lys te spesifiseer.
You can also use the inline list feature with multiple parameters. Simply enclose each parameter's list of values in curly braces and separate them with a comma. For example:
Jy kan ook die inline-lysfunksie met meervoudige parameters gebruik. Sluit eenvoudig elke parameter se lys waardes in krulhakies in en skei hulle met 'n komma. Byvoorbeeld:
wfuzz -u http://example.com/?id=FUZZ&name=FUZ2Z -z {1,2,3},{a,b,c}
In this example, the id
parameter will be fuzzed with the values 1
, 2
, and 3
, while the name
parameter will be fuzzed with the values a
, b
, and c
.
In hierdie voorbeeld sal die id
parameter gefuzz word met die waardes 1
, 2
, en 3
, terwyl die name
parameter gefuzz word met die waardes a
, b
, en c
.
$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
Gids & Lêers Bruteforce
Wat is 'n Bruteforce-aanval?
'n Bruteforce-aanval is 'n metode wat gebruik word deur aanvallers om toegang te verkry tot 'n stelsel of rekening deur herhaaldelik verskillende kombinasies van gebruikersname en wagwoorde te probeer totdat die regte kombinasie gevind word. Dit is 'n baie tydrowende proses, maar dit kan effektief wees as die regte kombinasie uiteindelik gevind word.
WFuzz
WFuzz is 'n kragtige webtoepassingstoetsinstrument wat gebruik kan word vir gids- en lêersbruteforce-aanvalle. Dit maak gebruik van 'n woordelys van moontlike gids- en lêernaamkombinasies om te probeer om toegang te verkry tot verborge of onbekende gids- en lêers op 'n webwerf.
Hoe om WFuzz te gebruik vir gids- en lêersbruteforce
Om WFuzz te gebruik vir gids- en lêersbruteforce, moet jy 'n woordelys hê wat moontlike gids- en lêernaamkombinasies bevat. Hier is die basiese sintaksis vir die gebruik van WFuzz:
wfuzz -c -z file,<wordlist> -u <target_url>/FUZZ
- Die
-c
vlag vertel WFuzz om die HTTP-statuskode te toon vir elke versoek. - Die
-z file,<wordlist>
vlag vertel WFuzz om die woordelys te gebruik vir die FUZZ-parameter. - Die
-u <target_url>/FUZZ
vlag vertel WFuzz om die FUZZ-parameter te vervang met elke gids- en lêernaamkombinasie in die woordelys.
Voorbeeld
Hier is 'n voorbeeld van hoe jy WFuzz kan gebruik om gids- en lêersbruteforce uit te voer:
wfuzz -c -z file,wordlist.txt -u http://example.com/FUZZ
In hierdie voorbeeld sal WFuzz elke gids- en lêernaamkombinasie in die wordlist.txt
-woordelys probeer deur dit te vervang met die FUZZ-parameter in die URL http://example.com/FUZZ
. Die -c
-vlag sal die HTTP-statuskode vir elke versoek toon.
Gevolgtrekking
Gids- en lêersbruteforce is 'n nuttige tegniek wat gebruik kan word om verborge of onbekende gids- en lêers op 'n webwerf te vind. WFuzz is 'n kragtige instrument wat jou kan help om hierdie aanval uit te voer deur 'n woordelys van moontlike kombinasies te gebruik. Onthou egter dat die gebruik van hierdie tegniek sonder toestemming van die eienaar van die webwerf onwettig is en streng bestraf kan word.
#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
Gereedskap om Webs te omseil
https://github.com/carlospolop/fuzzhttpbypass
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai, kyk na die SUBSCRIPTION PLANS!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek The PEASS Family, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou hacktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslagplekke.