hacktricks/pentesting-web/web-tool-wfuzz.md
2024-02-11 02:07:06 +00:00

23 KiB
Raw Blame History

Webwerf - WFuzz

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

'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

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

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

  • 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

Arjun parameters woordelys

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: