ハッカーはwfuzzでWebサーバー内の非公開情報や隠されたコンテンツを調査(Kali Linuxツール説明)

ホワイトハッカーの知識Kali Linuxツール,wfuzz,座学

Webサーバー内の非公開情報や隠されたコンテンツを調査するツールを理解するためにまとめてみました。
このwfuzzの動作確認は自分のドメインでテストを行っています。

wfuzzとは

Wfuzzは、Webサーバー内の非公開情報や、ディレクトリ、パラメータ、ページなどの隠されたコンテンツを調査するツールです。
辞書を使って攻撃するため、使用する辞書により大きく結果がかわります。

機能

  • 複数の辞書によるマルチインジェクションポイント機能
  • 再帰(ディレクトリブルートフォースを行う場合)
  • ポスト、ヘッダー、認証データのブルートフォース
  • HTMLへの出力
  • 色付き出力
  • リターンコード、単語番号、行番号、正規表現による結果の隠蔽
  • クッキーのファジング
  • マルチスレッディング
  • プロキシのサポート
  • SOCKサポート
  • リクエスト間の時間遅延
  • 認証のサポート(NTLM, Basic)
  • 全パラメータのブルートフォース(POSTおよびGET)
  • ペイロードごとの複数のエンコーダー
  • ペイロードとイテレータの組み合わせ
  • ベースラインリクエスト(結果のフィルタリング用)
  • HTTPメソッドのブルートフォース
  • 複数のプロキシをサポート(リクエストごとに異なるプロキシを使用)
  • HEADスキャン (リソース発見のための高速化)
  • 既知のアプリケーションに合わせた辞書(Weblogic、Iplanet、Tomcat、Domino、Oracle 9i、Vignette、Coldfusionなど多数)

ツールの場所

[Applications]→[03-Web Application Analysis]→[Web Crawlers & Directory Bruteforce]→[wfuzz]

ツールと使用方法

wfuzz [options] -z payload,params <url>

FUZZ, …, FUZnZ wherever you put these keywords wfuzz will replace them with the values of the specified payload.
FUZZ{baseline_value} FUZZ will be replaced by baseline_value. It will be the first request performed and could be used as a base for filtering.
FUZZ, …, FUZnZ これらのキーワードをどこに置いても、wfuzzはそれらを指定されたペイロードの値で置き換えます。
FUZZ{baseline_value} FUZZはbaseline_valueで置き換えられます。これは最初に実行されたリクエストとなり、フィルタリングのベースとして使用されます。

例 wfuzz -w /usr/share/wordlists/wfuzz/general/common.txt http://******.com/FUZZ

【実行イメージ】少し端折って整形しています。

┌──(kali__kali)-[~]
└─$ wfuzz -w /usr/share/wordlists/wfuzz/general/common.txt http://******.com/FUZZ
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************

Target: http://******/FUZZ
Total requests: 951

=====================================================================
ID Response Lines Word Chars Payload
=====================================================================

000000005: 404 7 L 11 W 153 Ch "03"
000000008: 404 7 L 11 W 153 Ch "100" 000000006: 404 7 L 11 W 153 Ch "1"
000000003: 404 7 L 11 W 153 Ch "01"
000000011: 404 7 L 11 W 153 Ch "2"
:
000000035: 301 7 L 11 W 169 Ch "admin"
:
000000202: 404 7 L 11 W 153 Ch "constants"
000000209: 404 7 L 11 W 153 Ch "controlpanel"
000000947: 404 7 L 11 W 153 Ch "xyz"
Total time: 0
Processed Requests: 951
Filtered Requests: 0
Requests/sec.: 0

オプション(Options)

-h

This help.
このヘルプです。

–help

Advanced help.
上級者向けのヘルプです。

–version

Wfuzz version details.
Wfuzzバージョンの詳細です。

-e <type>

List of available encoders/payloads/iterators/printers/scripts.
利用可能なエンコーダー/ペイロード/イテレーター/プリンター/スクリプトの一覧です。

-c

Output with colors.
カラーで出力する。

-v

Verbose information.
Verbose情報。

–interact

(beta) If selected,all key presses are captured. This allows you to interact with the program.
選択すると、すべてのキー操作がキャプチャされます。これにより、プログラムとの対話が可能になります。

-p addr

Use Proxy in format ip:port:type. Repeat option for using various proxies.
Where type could be SOCKS4,SOCKS5 or HTTP if omitted.
ip:port:typeの形式でプロキシを使用します。様々なプロキシを使用するための繰り返しオプションです。
typeにはSOCKS4,SOCKS5,HTTPが指定されます。

-t N

Specify the number of concurrent connections. (10 default)
同時接続数を指定します。(10 デフォルト)

-s N

Specify time delay between requests. (0 default)
リクエスト間の遅延時間を指定します。(0 デフォルト)

-R depth

Recursive path discovery being depth the maximum recursion level. (0 default)
再帰的経路探索の深さを最大再帰レベルとします。(0 デフォルト)

-D depth

Maximum link depth level. (4 default)
最大のリンク深度レベル。(4 デフォルト)

-L, –follow

Follow HTTP redirections.
HTTPリダイレクトに従う。

-u url

Specify a URL for the request.
リクエスト用のURLを指定します。

-z payload

Specify a payload for each FUZZ keyword used in the form of type,parameters,encoder.
A list of encoders can be used, ie. md5-sha1. Encoders can be chained, ie. md5@sha1.
Encoders category can be used. ie. url Use help as a payload to show payload plugin’s details. (you can filter using –slice)
type,parameters,encorderの形式で使用される各FUZZキーワードにペイロードを指定します。
md5-sha1のように、エンコーダーのリストを使用することができます。md5@sha1のようにエンコーダーを連鎖させることができます。
使用できるエンコーダーのカテゴリー(例:url) ペイロードとして help を使用すると、ペイロードプラグインの詳細が表示されます。(–sliceでフィルタリングできます)

-w wordlist

Specify a wordlist file. (alias for -z file,wordlist)
ワードリストファイルを指定します。(-z ファイル,ワードリストのエイリアス)

-V alltype

All parameters bruteforcing (allvars and allpost) No need for FUZZ keyword.
全パラメータのブルートフォース(allvars、allpost) FUZZキーワードが不要になりました。

-X method

Specify an HTTP method for the request, ie. HEAD or FUZZ.
リクエストに使用するHTTPメソッドを指定します(例:HEADまたはFUZZ)。

-b cookie

Specify a cookie for the requests.
リクエストにクッキーを指定します。

-d postdata

Use post data. (ex: “id=FUZZ&catalogue=1")
ポストデータを使用します。(例:"id=FUZZ&catalogue=1″)

-H header

Use header. (ex:"Cookie:id=1312321&user=FUZZ")
ヘッダーを使用します。(ex:"Cookie:id=1312321&user=FUZZ")

–basic/ntlm/digest auth

in format “user:pass" or “FUZZ:FUZZ" or “domain\FUZ2Z:FUZZ".
“user:pass"、"FUZZ:FUZZ"、"domain\FUZ2Z:FUZZ “のいずれかの形式で入力してください。

–hc/hl/hw/hh N[,N]+

Hide responses with the specified code/lines/words/chars. (Use BBB for taking values from baseline)
指定されたコード/行/単語/文字を持つ回答を非表示にします。ベースラインから値を取る場合はBBBを使用してください

–sc/sl/sw/sh N[,N]+

Show responses with the specified code/lines/words/chars. (Use BBB for taking values from baseline)
指定されたコード/行/語/文字の回答を表示します。ベースラインから値を取る場合はBBBを使用します。

–ss/hs regex

Show/Hide responses with the specified regex within the content.
指定した正規表現をコンテンツ内に含む回答を表示/非表示にします。

wfuzzツールのまとめ

辞書つかってwebサーバをなめていくのですね。
Webサーバー内の非公開情報や隠されたコンテンツブラックハットハッカーの蜜なのでしょうか。

wfuzzを調べてみたら、「ファジング」も関係があるようすなので説明いたします。

「ファジング」とは、検査対象のソフトウェア製品に「ファズ(英名:fuzz)」と呼ばれる問題を引き起こしそうなデータを大量に送り込み、その応答や挙動を監視することで脆弱性を検出する検査手法です。例えば、あるソフトウェア製品に極端に長い文字列や通常用いないような制御コードなどを送り込み、状態を観察します。その結果、予期せぬ異常動作や異常終了、再起動などが発生した場合、このソフトウェア製品の処理に何らかの問題がある可能性が高いと判断できます。このように、ソフトウェア製品(の製品開発者)が想定していないデータを入力し、その挙動から脆弱性を見つけ出す検査手法を「ファジング」と言います。
情報処理推進機構 https://www.ipa.go.jp/files/000057652.pdf より