hacktricks/pentesting-web/web-tool-wfuzz.md
Translator workflow 35c6b081d2 Translated to Greek
2024-02-10 22:40:18 +00:00

26 KiB
Raw Blame History

Εργαλείο Web - WFuzz

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Ένα εργαλείο για FUZZ web εφαρμογές οπουδήποτε.

Wfuzz έχει δημιουργηθεί για να διευκολύνει την εργασία στις αξιολογήσεις των web εφαρμογών και βασίζεται σε ένα απλό συμπέρασμα: αντικαθιστά οποιαδήποτε αναφορά στη λέξη-κλειδί FUZZ με την τιμή ενός δεδομένου payload.

Εγκατάσταση

Εγκατεστημένο στο Kali

Github: https://github.com/xmendez/wfuzz

pip install wfuzz

Επιλογές φιλτραρίσματος

The wfuzz tool provides several filtering options that can be used to narrow down the results of a web application fuzzing attack. These options allow the user to specify specific criteria that the response must meet in order to be considered valid.

Status code filtering

The --hc option can be used to filter the responses based on their HTTP status code. For example, --hc 200 will only display the responses with a status code of 200 (OK).

Content length filtering

The --cl option allows the user to filter the responses based on their content length. This can be useful when looking for specific patterns or anomalies in the response size. For example, --cl 1024 will only display the responses with a content length of 1024 bytes.

Word filtering

The --hw option can be used to filter the responses based on the presence or absence of specific words. For example, --hw "error" will only display the responses that contain the word "error".

Regex filtering

The --hr option allows the user to filter the responses using regular expressions. This provides more advanced filtering capabilities, allowing for complex pattern matching. For example, --hr "^[0-9]{3}$" will only display the responses with a three-digit numeric value.

Size filtering

The --sf option can be used to filter the responses based on their size. This can be useful when looking for responses that are larger or smaller than a certain threshold. For example, --sf 100-200 will only display the responses with a size between 100 and 200 bytes.

Time filtering

The --tf option allows the user to filter the responses based on their response time. This can be useful when looking for slow or fast responses. For example, --tf 0-1 will only display the responses with a response time between 0 and 1 second.

These filtering options can be combined to create more specific filters. For example, --hc 200 --hw "error" will only display the responses with a status code of 200 and that contain the word "error".

--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

Επιλογές εξόδου

The wfuzz tool provides several options for displaying the output of its scans. These options can be used to customize the format and level of detail in the output.

-o, --output <file>

Specifies the output file where the results will be saved. This option allows you to redirect the output to a file instead of displaying it on the screen.

--output-format <format>

Specifies the format of the output file. The supported formats include json, xml, html, csv, and raw. You can choose the format that best suits your needs.

--output-delimiter <delimiter>

Specifies the delimiter to be used in the output file when using the csv format. By default, a comma (,) is used as the delimiter, but you can specify a different character if needed.

--output-columns <columns>

Specifies the columns to be included in the output file when using the csv format. You can specify a comma-separated list of column names to customize the information displayed in the output.

--output-filter <filter>

Specifies a filter to be applied to the output. This allows you to selectively display only the results that match certain criteria. The filter can be based on status codes, response lengths, or any other relevant information.

--output-sort <sort>

Specifies the sorting order for the output. You can choose to sort the results based on various criteria, such as status codes, response lengths, or any other relevant information.

By using these output options, you can tailor the wfuzz tool to meet your specific requirements and easily analyze the results of your scans.

wfuzz -e printers #Prints the available output formats
-f /tmp/output,csv #Saves the output in that location in csv format

Επιλογές κωδικοποίησης

There are several options available for encoding data in web applications. These options can be used to bypass security measures and manipulate input fields. Some commonly used encoders include:

  • URL Encoding: This encoder replaces special characters with their corresponding hexadecimal representation preceded by a percent sign (%). For example, the space character is encoded as "%20".

  • HTML Encoding: This encoder replaces special characters with their corresponding HTML entity. For example, the less than symbol (<) is encoded as "<".

  • Base64 Encoding: This encoder converts binary data into a string of ASCII characters. It is commonly used to encode sensitive information such as passwords or session tokens.

  • Unicode Encoding: This encoder represents characters using their Unicode code point. It can be used to bypass filters that only allow ASCII characters.

  • Double URL Encoding: This encoder applies URL encoding twice to bypass security filters that decode the input before processing it.

  • Mixed Encoding: This encoder combines different encoding techniques to bypass security measures. For example, it can use URL encoding followed by HTML encoding.

It is important to understand the different encoding options and their implications in order to effectively exploit vulnerabilities in web applications.

wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode

Για να χρησιμοποιήσετε έναν κωδικοποιητή, πρέπει να τον υποδείξετε στην επιλογή "-w" ή "-z".

Παραδείγματα:

-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

Οδηγός

Επίθεση με bruteforce σε φόρμα σύνδεσης

POST, Μονή λίστα, φίλτρο συμβολοσειράς (απόκρυψη)

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 λίστες, κώδικας φίλτρου (εμφάνιση)

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 λίστες, φίλτρο συμβολοσειράς (εμφάνιση), διακομιστής proxy, cookies

Αυτή η ενότητα παρέχει πληροφορίες σχετικά με τη χρήση του εργαλείου wfuzz για εκτέλεση επιθέσεων σε ιστοσελίδες. Το wfuzz είναι ένα εργαλείο που χρησιμοποιείται για την εύρεση ευπαθειών σε ιστοσελίδες μέσω επιθέσεων brute force.

Για να εκτελέσετε μια επίθεση GET με το wfuzz, μπορείτε να χρησιμοποιήσετε την εξής εντολή:

wfuzz -c -z file,<wordlist> --hc <status_code> -u <target_url>

Σε αυτήν την εντολή, θα πρέπει να αντικαταστήσετε τα εξής:

  • <wordlist>: Το αρχείο που περιέχει τις λέξεις που θα χρησιμοποιηθούν για την επίθεση brute force.
  • <status_code>: Ο κωδικός κατάστασης που θα χρησιμοποιηθεί για το φιλτράρισμα των αποτελεσμάτων.
  • <target_url>: Η διεύθυνση URL του στόχου.

Επιπλέον, μπορείτε να χρησιμοποιήσετε τις παρακάτω επιλογές για να προσαρμόσετε την επίθεση:

  • -c: Εμφανίζει μόνο τις επιτυχημένες αποτυπώσεις.
  • -z file,<wordlist>: Ορίζει το αρχείο λέξεων που θα χρησιμοποιηθεί για την επίθεση.
  • --hc <status_code>: Φιλτράρει τα αποτελέσματα με βάση τον κωδικό κατάστασης.
  • -u <target_url>: Ορίζει τη διεύθυνση URL του στόχου.

Επιπλέον, μπορείτε να χρησιμοποιήσετε διακομιστή proxy και cookies για να προσαρμόσετε περαιτέρω την επίθεση. Για παράδειγμα:

wfuzz -c -z file,<wordlist> --hc <status_code> -u <target_url> --proxy <proxy_address> --cookies <cookies_file>

Σε αυτήν την εντολή, θα πρέπει να αντικαταστήσετε τα εξής:

  • <proxy_address>: Η διεύθυνση του διακομιστή proxy που θα χρησιμοποιηθεί.
  • <cookies_file>: Το αρχείο που περιέχει τα cookies που θα χρησιμοποιηθούν για την επίθεση.

Με αυτές τις εντολές και επιλογές, μπορείτε να εκτελέσετε επιθέσεις GET με το wfuzz και να προσαρμόσετε την επίθεση σύμφωνα με τις ανάγκες σας.

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"

Βίαιη Δοκιμή Καταλόγου/Βίαιη Δοκιμή RESTful

Λίστα λέξεων παραμέτρων του Arjun

wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ

Επίθεση με χρήση Path Parameters

Η επίθεση με χρήση Path Parameters είναι μια τεχνική που χρησιμοποιείται για να εκτελέσει επιθέσεις σε μια ιστοσελίδα. Κατά τη διάρκεια αυτής της επίθεσης, ο επιτιθέμενος προσπαθεί να εκμεταλλευτεί την αδυναμία του συστήματος να επεξεργαστεί σωστά τις παραμέτρους που περνούν μέσω του URL.

Ο επιτιθέμενος χρησιμοποιεί το εργαλείο wfuzz για να αναζητήσει πιθανές τιμές για τις παραμέτρους του URL. Το wfuzz είναι ένα εργαλείο ανοικτού κώδικα που χρησιμοποιείται για την εύρεση αδυναμιών σε ιστοσελίδες.

Ο επιτιθέμενος χρησιμοποιεί το wfuzz για να δοκιμάσει διάφορες τιμές για τις παραμέτρους του URL, προσπαθώντας να βρει μια τιμή που θα οδηγήσει σε ευπάθεια του συστήματος. Αυτό μπορεί να περιλαμβάνει δοκιμή διάφορων συνδυασμών χαρακτήρων, λέξεων-κλειδιών ή ακόμα και αριθμητικών τιμών.

Η επίθεση με χρήση Path Parameters μπορεί να αποκαλύψει ευπάθειες στο σύστημα και να επιτρέψει στον επιτιθέμενο να αποκτήσει μη εξουσιοδοτημένη πρόσβαση ή να εκτελέσει κακόβουλες ενέργειες. Είναι σημαντικό για τους διαχειριστές ιστοσελίδων να είναι ενήμεροι για αυτήν την επίθεση και να λάβουν τα κατάλληλα μέτρα ασφαλείας για την προστασία του συστήματός τους.

wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'

Επαλήθευση Κεφαλίδας

Βασική, 2 λίστες, φίλτρο συμβολοσειράς (εμφάνιση), διαμεσολαβητής

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 λίστες, φίλτρο συμβολοσειράς (εμφάνιση), διακομιστής proxy


NTLM

Ο NTLM (New Technology LAN Manager) είναι ένα πρωτόκολλο αυθεντικοποίησης που χρησιμοποιείται σε περιβάλλοντα Windows. Μπορεί να χρησιμοποιηθεί για να επιτεθεί σε συστήματα που χρησιμοποιούν αυτό το πρωτόκολλο, εκμεταλλευόμενος τυχόν αδυναμίες στην υλοποίησή του.

2 λίστες

Ο όρος "2 λίστες" αναφέρεται στη χρήση δύο διαφορετικών λιστών για να εκτελεστεί μια επίθεση. Συνήθως, η πρώτη λίστα περιέχει μια λίστα με κανονικές λέξεις ή συνθηματικές φράσεις, ενώ η δεύτερη λίστα περιέχει μια λίστα με χρήστες ή ονόματα χρηστών. Η επίθεση εκτελείται δοκιμάζοντας κάθε συνδυασμό από μια λέξη από την πρώτη λίστα και έναν χρήστη από τη δεύτερη λίστα.

Φίλτρο συμβολοσειράς (εμφάνιση)

Το φίλτρο συμβολοσειράς (εμφάνιση) είναι μια τεχνική που χρησιμοποιείται για να περιοριστεί η έξοδος των αποτελεσμάτων μιας επίθεσης. Με τη χρήση ενός φίλτρου συμβολοσειράς, μπορείτε να επιλέξετε να εμφανίζονται μόνο τα αποτελέσματα που περιέχουν μια συγκεκριμένη συμβολοσειρά. Αυτό μπορεί να είναι χρήσιμο για να περιορίσετε την έξοδο και να εστιάσετε μόνο στα αποτελέσματα που σας ενδιαφέρουν.

Διακομιστής proxy

Ένας διακομιστής proxy είναι ένας διακομιστής που λειτουργεί ως ενδιάμεσος ανάμεσα στον χρήστη και τον προορισμό του. Ο διακομιστής proxy μπορεί να χρησιμοποιηθεί για να αποκρύψει την πραγματική διεύθυνση IP του χρήστη, να παρέχει ασφάλεια και ανωνυμία, και να ελέγχει την πρόσβαση σε πόρους στο διαδίκτυο. Οι διακομιστές proxy μπορούν επίσης να χρησιμοποιηθούν για να παρακολουθήσουν και να καταγράψουν την κίνηση των χρηστών.

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"
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, κωδικός φίλτρου (απόκρυψη), proxy

wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ"  "http://example.com/index.php"

Κεντρικός Υπολογιστής

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

Χρήση αρχείου

Η τεχνική αυτή εμπλέκει τη χρήση ενός αρχείου για να εκτελέσει μια επίθεση brute force στους HTTP ρήματα (μέθοδους). Το αρχείο περιέχει μια λίστα με διάφορες μεθόδους HTTP που θα δοκιμαστούν από το εργαλείο wfuzz.

Για να χρησιμοποιήσετε αυτήν τη μέθοδο, ακολουθήστε τα παρακάτω βήματα:

  1. Δημιουργήστε ένα αρχείο κειμένου με τις μεθόδους HTTP που θέλετε να δοκιμάσετε. Κάθε μέθοδος πρέπει να βρίσκεται σε ξεχωριστή γραμμή.
  2. Ανοίξτε το εργαλείο wfuzz και χρησιμοποιήστε την επιλογή -w για να καθορίσετε το αρχείο που δημιουργήσατε στο προηγούμενο βήμα.
  3. Εκτελέστε το wfuzz και παρακολουθήστε τα αποτελέσματα για ενδείξεις επιτυχίας.

Η χρήση αυτής της τεχνικής μπορεί να αποκαλύψει ευπάθειες στην ασφάλεια του συστήματος, όπως ανεπιθύμητη πρόσβαση σε μη εξουσιοδοτημένες μεθόδους HTTP. Είναι σημαντικό να χρησιμοποιείτε αυτήν τη μέθοδο μόνο για νόμιμους σκοπούς και με την άδεια του ιδιοκτήτη του συστήματος που ελέγχετε.

wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.com/index.php"

Χρήση ενσωματωμένης λίστας

The wfuzz tool allows you to use an inline list to fuzz parameters. This is useful when you have a small number of values to test.

To use an inline list, you need to enclose the values in curly braces {} and separate them with commas. For example, if you want to fuzz the id parameter with the values 1, 2, and 3, you can use the following syntax:

wfuzz -u http://example.com/?id={1,2,3}

This will send requests to the target URL with each value in the list substituted for the id parameter.

You can also use ranges in an inline list. For example, if you want to fuzz the id parameter with values from 1 to 10, you can use the following syntax:

wfuzz -u http://example.com/?id={1..10}

This will send requests with each value in the range substituted for the id parameter.

Using an inline list can save you time and effort when fuzzing parameters with a small number of values.

$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/

Βίαιη Δοκιμή Καταλόγων και Αρχείων

Η βίαιη δοκιμή καταλόγων και αρχείων είναι μια τεχνική που χρησιμοποιείται στον χώρο του χάκινγκ για να ανακαλύψει κρυφές διαδρομές και αρχεία σε έναν ιστότοπο. Αυτή η τεχνική εκμεταλλεύεται την αδυναμία των ιστοσελίδων να προστατεύσουν πλήρως τους καταλόγους και τα αρχεία τους από την πρόσβαση των χρηστών.

Για να εκτελεστεί αυτή η τεχνική, χρησιμοποιείται ένα εργαλείο όπως το wfuzz, το οποίο αναλαμβάνει να δοκιμάσει διάφορες πιθανές διαδρομές και ονόματα αρχείων σε έναν ιστότοπο. Το wfuzz χρησιμοποιεί μια λίστα λέξεων (wordlist) για να δοκιμάσει διάφορες πιθανές τιμές και να εντοπίσει τυχόν καταλόγους ή αρχεία που δεν είναι προσβάσιμα από το κοινό.

Η βίαιη δοκιμή καταλόγων και αρχείων μπορεί να αποκαλύψει ευαίσθητες πληροφορίες, όπως αρχεία διαμόρφωσης, αρχεία καταγραφής, αρχεία παραμετροποίησης και άλλα. Αυτές οι πληροφορίες μπορούν να χρησιμοποιηθούν από έναν επιτιθέμενο για να αποκτήσει πρόσβαση σε ευαίσθητα δεδομένα ή να εκτελέσει επιθέσεις όπως SQL injection ή remote code execution.

Για να προστατευθείτε από αυτήν την επίθεση, είναι σημαντικό να ελέγχετε την πρόσβαση στους καταλόγους και τα αρχεία του ιστότοπου σας και να εφαρμόζετε τις κατάλληλες πολιτικές ασφαλείας. Επίσης, μπορείτε να χρησιμοποιήσετε εργαλεία όπως το wfuzz για να εκτελέσετε τη δική σας βίαιη δοκιμή καταλόγων και αρχείων, προκειμένου να εντοπίσετε πιθανές ευπάθειες στον ιστότοπό σας και να τις διορθώσετε πριν εκμεταλλευτείτε από κάποιον επιτιθέμενο.

#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

Εργαλείο για παράκαμψη ιστοσελίδων

https://github.com/carlospolop/fuzzhttpbypass

Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks: