29 KiB
Webツール - WFuzz
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ会社で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
-
**ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリ**にPRを提出してください。
WebアプリケーションをFUZZするためのツールです。
Wfuzzは、Webアプリケーションの評価作業を容易にするために作成されました。これは、与えられたペイロードの値でFUZZキーワードの参照を置き換えるという単純なコンセプトに基づいています。
インストール
Kaliにインストール済み
Github: https://github.com/xmendez/wfuzz
pip install wfuzz
フィルタリングオプション
Code
コード
-w <wordlist> Specify a wordlist to use for fuzzing
-w <ワードリスト> ファジングに使用するワードリストを指定します
Code
コード
--hc <code> Hide responses with the specified HTTP code
--hc <コード> 指定されたHTTPコードを持つレスポンスを非表示にします
Code
コード
--hh <string> Hide responses containing the specified string
--hh <文字列> 指定された文字列を含むレスポンスを非表示にします
Code
コード
--hs <size> Hide responses with the specified size
--hs <サイズ> 指定されたサイズを持つレスポンスを非表示にします
Code
コード
--hl <length> Hide responses with the specified length
--hl <長さ> 指定された長さを持つレスポンスを非表示にします
Code
コード
--hw <word> Hide responses containing words from the specified wordlist
--hw <ワード> 指定されたワードリストの単語を含むレスポンスを非表示にします
Code
コード
--hcw <word> Hide responses containing words from the specified wordlist in the HTTP code
--hcw <ワード> HTTPコード内の指定されたワードリストの単語を含むレスポンスを非表示にします
Code
コード
--hlw <word> Hide responses containing words from the specified wordlist in the response length
--hlw <ワード> レスポンスの長さに指定されたワードリストの単語を含むレスポンスを非表示にします
Code
コード
--hhw <word> Hide responses containing words from the specified wordlist in the response headers
--hhw <ワード> レスポンスヘッダーに指定されたワードリストの単語を含むレスポンスを非表示にします
Code
コード
--hs <status> Hide responses with the specified status
--hs <ステータス> 指定されたステータスを持つレスポンスを非表示にします
Code
コード
--hc <cookie> Hide responses with the specified cookie
--hc <クッキー> 指定されたクッキーを持つレスポンスを非表示にします
Code
コード
--hct <time> Hide responses with a response time greater than the specified time
--hct <時間> 指定された時間よりも長いレスポンス時間を持つレスポンスを非表示にします
Code
コード
--hcl <length> Hide responses with a response length greater than the specified length
--hcl <長さ> 指定された長さよりも長いレスポンス長を持つレスポンスを非表示にします
Code
コード
--hcs <size> Hide responses with a response size greater than the specified size
--hcs <サイズ> 指定されたサイズよりも大きいレスポンスサイズを持つレスポンスを非表示にします
--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
出力オプション
wfuzz offers several options for displaying the output of the fuzzing process. These options can be used to customize the format and level of detail in the output.
Quiet mode
The -q
or --quiet
option can be used to suppress all output except for the final results. This is useful when you only want to see the final output and don't need any additional information.
Verbose mode
The -v
or --verbose
option can be used to enable verbose mode, which provides more detailed output. This includes information about each request made during the fuzzing process, such as the request URL, response status code, and response headers.
Output format
The -o
or --output
option can be used to specify the format of the output. By default, wfuzz outputs the results in a table format. However, you can also choose to output the results in other formats, such as JSON or XML, by specifying the appropriate format option.
Output file
The -o
or --output
option can also be used to specify the output file. By default, wfuzz outputs the results to the console. However, you can redirect the output to a file by specifying the file path after the -o
option.
Output filtering
The -f
or --filter
option can be used to filter the output based on specific criteria. This allows you to only display the results that match the specified criteria. For example, you can filter the output to only show the results with a specific response status code or response length.
Output coloring
The --hc
or --highlight-color
option can be used to enable output coloring. This highlights specific parts of the output, such as the request URL or response status code, in different colors to make it easier to read and analyze.
These output options provide flexibility and customization in how the fuzzing results are displayed, allowing you to focus on the information that is most relevant to your needs.
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 wfuzz:
- 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 data using the Base64 algorithm. It is commonly used for encoding binary data.
- Hex encoding: This option encodes data using hexadecimal representation. Each byte is represented by two hexadecimal digits.
- Unicode encoding: This option encodes data using Unicode characters. It is useful for bypassing filters that only allow ASCII characters.
To use an encoder, you can specify it with the --encoding
option followed by the desired encoder. For example, to use URL encoding, you can use the --encoding url
option.
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
チートシート
ログインフォームのブルートフォース攻撃
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 -c -z file,wordlist/general/common.txt --hc 404 http://example.com/FUZZ
このコマンドは、POSTリクエストを使用してhttp://example.com/FUZZ
に対してwfuzzを実行します。FUZZ
は、wordlist/general/common.txt
の単語リスト内の各単語で置き換えられます。--hc 404
オプションは、404エラーコードを受け取った場合にwfuzzが停止するようにします。
wfuzz -c -z file,wordlist/general/common.txt --hc 404 --filter "code!=404" http://example.com/FUZZ
このコマンドは、--filter
オプションを使用して、404エラーコードを除外します。つまり、wfuzzは404エラーコードを受け取った場合には停止しません。
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つのリスト、フィルター文字列(表示)、プロキシ、クッキー
wfuzz is a web application brute forcer that allows you to perform complex attacks by combining different parameters. In this section, we will explore some advanced features of wfuzz.
wfuzzは、異なるパラメータを組み合わせて複雑な攻撃を実行することができるWebアプリケーションのブルートフォーサーです。このセクションでは、wfuzzのいくつかの高度な機能について調査します。
GET Requests
To perform GET requests with wfuzz, you can use the -z
option followed by the payload file. The payload file should contain a list of values to be tested for each parameter. For example:
$ wfuzz -z file,wordlist/general/common.txt http://example.com/FUZZ
This command will replace the FUZZ
keyword with each value from the common.txt
wordlist file.
wfuzzを使用してGETリクエストを実行するには、-z
オプションの後にペイロードファイルを使用します。ペイロードファイルには、各パラメータにテストする値のリストを含める必要があります。例えば:
$ wfuzz -z file,wordlist/general/common.txt http://example.com/FUZZ
このコマンドは、common.txt
ワードリストファイルの各値でFUZZ
キーワードを置き換えます。
2 Lists
wfuzz also allows you to use two lists of values for each parameter. This can be useful when you want to test combinations of different values. To use two lists, you can use the -z
option followed by the payload file, and then use the ::
separator to specify the second list. For example:
$ wfuzz -z file,wordlist/general/common.txt::wordlist/general/numbers.txt http://example.com/FUZZ
This command will replace the FUZZ
keyword with each combination of values from the common.txt
and numbers.txt
wordlist files.
wfuzzは、各パラメータに2つの値のリストを使用することもできます。これは、異なる値の組み合わせをテストしたい場合に便利です。2つのリストを使用するには、-z
オプションの後にペイロードファイルを使用し、::
セパレータを使用して2番目のリストを指定します。例えば:
$ wfuzz -z file,wordlist/general/common.txt::wordlist/general/numbers.txt http://example.com/FUZZ
このコマンドは、common.txt
およびnumbers.txt
ワードリストファイルの値の組み合わせごとにFUZZ
キーワードを置き換えます。
Filter String (Show)
The -f
option in wfuzz allows you to filter the responses based on a specific string. This can be useful when you want to focus on specific responses that contain certain keywords. For example:
$ wfuzz -z file,wordlist/general/common.txt -f "Welcome" http://example.com/FUZZ
This command will only show the responses that contain the string "Welcome".
wfuzzの-f
オプションを使用すると、特定の文字列に基づいてレスポンスをフィルタリングすることができます。これは、特定のキーワードを含む特定のレスポンスに焦点を当てたい場合に便利です。例えば:
$ wfuzz -z file,wordlist/general/common.txt -f "Welcome" http://example.com/FUZZ
このコマンドは、文字列「Welcome」を含むレスポンスのみを表示します。
Proxy
wfuzz supports proxying requests through a proxy server. You can use the --proxy
option followed by the proxy URL to specify the proxy server. For example:
$ wfuzz --proxy http://proxy.example.com:8080 http://example.com/FUZZ
This command will send the requests through the proxy server located at http://proxy.example.com:8080
.
wfuzzは、プロキシサーバーを介してリクエストをプロキシすることができます。プロキシサーバーを指定するには、--proxy
オプションの後にプロキシURLを使用します。例えば:
$ wfuzz --proxy http://proxy.example.com:8080 http://example.com/FUZZ
このコマンドは、http://proxy.example.com:8080
にあるプロキシサーバーを介してリクエストを送信します。
Cookies
wfuzz allows you to specify cookies to be included in the requests. You can use the --cookie
option followed by the cookie value to specify the cookies. For example:
$ wfuzz --cookie "session=1234567890" http://example.com/FUZZ
This command will include the cookie session=1234567890
in the requests.
wfuzzでは、リクエストに含めるクッキーを指定することができます。クッキーを指定するには、--cookie
オプションの後にクッキーの値を使用します。例えば:
$ wfuzz --cookie "session=1234567890" http://example.com/FUZZ
このコマンドは、リクエストにクッキーsession=1234567890
を含めます。
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のブルートフォース攻撃
wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ
パスパラメータのブルートフォース攻撃
パスパラメータのブルートフォース攻撃は、Webアプリケーションのセキュリティ評価中に使用される一般的なテクニックです。この攻撃では、URLのパスにあるパラメータの値を推測し、有効な値を見つけることを試みます。
攻撃者は、一連の可能な値を持つパスパラメータを作成し、それらを順番に送信してレスポンスを受け取ります。有効な値が見つかるまで、攻撃者は継続的に異なる値を試すことができます。
この攻撃は、パスパラメータがセキュリティ上の脆弱性を持つ可能性がある場合に特に有効です。例えば、パスパラメータがディレクトリの名前やファイルのIDなどの重要な情報を含んでいる場合、攻撃者はそれを利用してシステムにアクセスしたり、機密情報を取得したりすることができます。
ブルートフォース攻撃は、wfuzzなどのツールを使用して自動化することができます。これにより、大量の可能な値を効率的に試すことができます。ただし、この攻撃は合法的なテストの範囲内で行われるべきであり、許可なく実施することは違法です。
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つのリスト、フィルター文字列(表示)、プロキシ
NTLM
NTLM(NT LAN Manager)は、Windowsベースのシステムで使用される認証プロトコルです。WFuzzは、NTLM認証を使用してWebアプリケーションをテストするために使用できます。
2つのリスト
WFuzzでは、2つのリストを使用して攻撃を実行することができます。1つ目のリストは、ユーザー名のリストであり、2つ目のリストはパスワードのリストです。WFuzzは、これらのリストを組み合わせて認証の試行を行います。
フィルター文字列(表示)
WFuzzでは、フィルター文字列を使用して、特定の応答を表示することができます。フィルター文字列を指定することで、攻撃の結果を絞り込むことができます。
プロキシ
WFuzzは、プロキシを使用して攻撃を実行することもできます。プロキシを介して攻撃を行うことで、トラフィックを監視したり、攻撃の可視化を行ったりすることができます。
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"
Cookie/Headerのブルートフォース(vhostブルート)
Cookie、フィルターコード(表示)、プロキシ
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、フィルターコード(非表示)、プロキシ
User-Agentは、Webサーバーに送信されるHTTPリクエストヘッダーの一部であり、クライアントの情報を識別するために使用されます。WFuzzでは、User-Agentをカスタマイズすることができます。これにより、特定のユーザーエージェントを使用してリクエストを送信することができます。
フィルターコードは、WFuzzが使用するフィルタリング機能です。これにより、レスポンスを特定の条件に基づいてフィルタリングすることができます。フィルターコードを使用することで、不要な情報を非表示にすることができます。
プロキシは、クライアントとサーバーの間に存在する中間サーバーです。WFuzzでは、プロキシを使用してトラフィックを中継することができます。これにより、リクエストとレスポンスの内容を監視および変更することができます。
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
ファイルを使用する
wfuzz can be used to brute force HTTP verbs (methods) by specifying a file containing a list of verbs to test. This can be useful for identifying hidden or misconfigured endpoints that respond differently to different HTTP methods.
To use a file for HTTP verb brute forcing, you can create a text file with one verb per line. For example, you can create a file called verbs.txt
with the following content:
GET
POST
PUT
DELETE
Then, you can use wfuzz with the --hc
option to specify the desired response code and the --hw
option to specify a word that should be present in the response when the verb is allowed. For example, to brute force the HTTP verbs using the verbs.txt
file, you can run the following command:
wfuzz -c -z file,verbs.txt --hc 200 --hw "OK" http://example.com/FUZZ
In this command, -c
is used to display the output in a compact format, -z file,verbs.txt
specifies the file containing the list of verbs, --hc 200
specifies that the response code should be 200, and --hw "OK"
specifies that the word "OK" should be present in the response.
By replacing FUZZ
in the URL with the appropriate placeholder, wfuzz will replace it with each verb from the file and send a request to the target URL. If the response code is 200 and the word "OK" is present in the response, it means that the verb is allowed.
Using a file for HTTP verb brute forcing can help you discover hidden functionality or misconfigurations in web applications. However, it is important to note that brute forcing HTTP verbs can be time-consuming and may trigger security mechanisms, so it should be used responsibly and with proper authorization.
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 inline lists to fuzz different values in a request. This can be useful when you want to test multiple inputs or parameters at once.
To use an inline list, 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 username
parameter with a list of common usernames, you can use the following syntax:
wfuzz -u http://example.com/login.php?username=FUZZ -w /path/to/usernames.txt
In this example, the FUZZ
keyword is used to indicate the position where the values from the list will be injected. The -w
option specifies the path to the file containing the list of usernames.
You can also use multiple inline lists in a single request. For example, if you want to fuzz both the username
and password
parameters, you can use the following syntax:
wfuzz -u http://example.com/login.php?username=FUZZ&password=FUZZ2 -w /path/to/usernames.txt -w /path/to/passwords.txt
In this case, the FUZZ
keyword is used for the username
parameter, and the FUZZ2
keyword is used for the password
parameter. The -w
option is used twice to specify the paths to the files containing the lists of usernames and passwords.
Using inline lists can greatly increase the efficiency of your fuzzing process by allowing you to test multiple values in a single request.
$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
ディレクトリとファイルのブルートフォース
WFuzzは、ディレクトリとファイルのブルートフォース攻撃に使用される強力なツールです。WFuzzは、指定されたURLに対して異なるパスやファイル名を試し、存在するディレクトリやファイルを見つけることができます。
以下は、WFuzzを使用してディレクトリとファイルのブルートフォース攻撃を実行するための手順です。
-
WFuzzをインストールします。
-
WFuzzを使用して、ブルートフォース攻撃を実行する対象のURLを指定します。
wfuzz -c -z file,/path/to/wordlist.txt http://target.com/FUZZ
-c
オプションは、正常な応答のみを表示するために使用されます。-z
オプションは、ブルートフォース攻撃に使用するワードリストを指定します。/path/to/wordlist.txt
は、ワードリストファイルのパスを指定します。http://target.com/FUZZ
は、ブルートフォース攻撃を実行する対象のURLを指定します。FUZZ
は、WFuzzが置き換えるプレースホルダです。
-
WFuzzは、指定されたワードリストの各エントリを試し、存在するディレクトリやファイルを見つけます。
====================================== ID Response Lines Word ====================================== 000000001: 200 21 L 47 W "admin" 000000002: 200 21 L 47 W "backup" 000000003: 404 0 L 0 W "config" 000000004: 200 21 L 47 W "index" 000000005: 200 21 L 47 W "login" ======================================
上記の例では、
admin
、backup
、config
、index
、login
というディレクトリやファイルが存在することがわかります。 -
ブルートフォース攻撃の結果を分析し、潜在的な脆弱性やセキュリティ上の問題を特定します。
ディレクトリとファイルのブルートフォース攻撃は、ウェブアプリケーションのセキュリティ評価や侵入テストにおいて重要な手法です。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
Websをバイパスするためのツール
https://github.com/carlospolop/fuzzhttpbypass
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ会社で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループに参加するか、telegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm.
-
**ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリ**にPRを提出してください。