バグバウンティなどの Web アプリケーションを対象とした脆弱性調査でよく使われる、おすすめのツールを10個紹介します。
免責事項
本稿の内容は、セキュリティに関する知見を広く共有する目的であり、悪用行為を推奨するものではありません。
注意点
紹介するツールの中には、ファジング(総当たり)による列挙や検証を行うものが含まれています。
総当たりを行うツールは、対象に負荷をかけたり、悪影響を与えるリクエストを送る可能性があるため、使用には十分な注意が必要です。
総当たりツールを利用する場合は、対象の規約(スキャンツールの利用やレート制限など)を十分に確認し、規約に従って慎重に実行してください。
Burp Suiteは、Webアプリケーションのセキュリティテストを行うための統合ツールです。サイバーセキュリティの専門家や開発者が、アプリケーションの脆弱性を発見し、修正するのに役立ちます。
主な機能は以下の通りです:
- プロキシ:ブラウザとサーバー間の通信をインターセプトし、編集、再送信が可能です。
- スキャナー:自動でWebアプリケーションの脆弱性を検出します。
- インジェクター:SQLインジェクションやクロスサイトスクリプティング(XSS)などの攻撃をシミュレーションします。
- リピーター:特定のリクエストを何度も送り、挙動を確認します。
- シーケンサー:トークンの乱数性や一意性を分析します。
これらのツールを使うことで、セキュリティの弱点を効率的に発見し、改善することができます。Burp Suiteは、プロフェッショナル版と無料版があり、プロフェッショナル版ではより高度な機能が利用できます。
ffuf
ffuf (Fuzz Faster U Fool) は、Webアプリケーションのディレクトリやファイルの強制探索を行うためのツールです。セキュリティテストやペネトレーションテストにおいて、隠れたコンテンツを発見するのに役立ちます。ffufは高速で柔軟性があり、カスタムワードリストを使用したり、さまざまなプロトコルをサポートするなど、多くの機能を備えています。
主な特徴:
- 高速な探索:高いパフォーマンスで多くのリクエストを迅速に処理。
- 柔軟な出力形式:JSON、CSV、HTMLなど、さまざまな形式で結果を出力可能。
- カスタマイズ可能なリクエスト:ヘッダーやパラメータを自由に設定。
実行例:
以下は、ffufを使ってターゲットサイト(例:www.example.com)のディレクトリを探索する簡単なコマンド例です。
ffuf -u http://www.example.com/FUZZ -w /path/to/wordlist.txt
解説:
- -u:ターゲットURLを指定。FUZZ はワードリストのエントリが置換される部分。
- -w:使用するワードリストのパスを指定。
例えば、以下のようなワードリスト(wordlist.txt)があった場合:
このワードリストを使用して実行すると、以下のURLに対してリクエストが送信されます:
- http://www.example.com/admin
- http://www.example.com/login
- http://www.example.com/test
このようにして、ffufを用いることで、Webアプリケーションの隠れたディレクトリやファイルを効率的に見つけることができます。
※ffuf は総当たりによる列挙のため、十分に注意して利用してください。
subfinder
subfinderは、サブドメインの探索に特化した高速で効率的なツールです。セキュリティテストや脆弱性評価の際に、ターゲットドメインのサブドメインをリストアップするのに役立ちます。subfinderは、複数のデータソースから情報を収集し、潜在的なサブドメインを検出するための強力な機能を備えています。
主な特徴:
- 高速かつ効率的:多くのサブドメインを迅速に探索可能。
- 多様なデータソース:DNSデータベース、API、パッシブDNSサービスなど、複数のソースから情報を収集。
- 簡単な使用方法:コマンドラインインターフェースを介してシンプルに操作。
実行例:
以下は、subfinderを使ってターゲットドメイン(例:example.com)のサブドメインを探索する簡単なコマンド例です。
解説:
このコマンドを実行すると、subfinderは指定されたドメインに関連するサブドメインを検索し、結果を標準出力に表示します。例えば、以下のような結果が得られます:
www.example.com
mail.example.com
blog.example.com
このように、subfinderを用いることで、ターゲットドメインのサブドメインを迅速かつ効果的に発見することができます。
nuclei
Nucleiは、セキュリティテストや脆弱性スキャンを自動化するための高速でカスタマイズ可能なツールです。テンプレートベースのアプローチを採用しており、さまざまなタイプの脆弱性に対するテストを簡単に実行できます。セキュリティ研究者やペネトレーションテスターにとって、Nucleiは効果的で柔軟なスキャンツールです。
主な特徴:
- テンプレートベース:再利用可能なテンプレートを使用して多様な脆弱性を検出。
- 高いパフォーマンス:大量のターゲットに対して迅速にスキャンを実行。
- カスタマイズ可能:ユーザーが独自のテンプレートを作成可能。
実行例:
以下は、Nucleiを使ってターゲットサイト(例:www.example.com)をスキャンする簡単なコマンド例です。
nuclei -u http://www.example.com -t /path/to/templates
解説:
- -u:スキャン対象のURLを指定。
- -t:使用するテンプレートのディレクトリパスを指定。
例えば、次のようなテンプレートがある場合:
id: example-vuln
info:
name: Example Vulnerability
author: yourname
severity: medium
requests:
- method: GET
path:
- "{{BaseURL}}/vulnerable-path"
matchers:
- type: word
words:
- "vulnerable"
このテンプレートを使って実行すると、指定したURLの「/vulnerable-path」にアクセスし、レスポンスに「vulnerable」という単語が含まれているかをチェックします。
テンプレートを指定して実行するコマンド例:
nuclei -u http://www.example.com -t /path/to/templates/example-vuln.yaml
このように、Nucleiを用いることで、多様な脆弱性に対するスキャンを効率的に実行し、潜在的なセキュリティリスクを発見することができます。
naabu
Naabuは、高速で効率的なポートスキャナーです。特定のホストやネットワーク内の開いているポートを迅速にスキャンし、潜在的なセキュリティリスクを特定するのに役立ちます。Naabuは、ネットワークのペネトレーションテストやセキュリティ監査の際に利用され、単一のホストから大規模なネットワークまで対応できます。
主な特徴:
- 高速スキャン:多くのポートを短時間でスキャン可能。
- カスタマイズ可能:特定のポートや範囲を指定してスキャンを実行。
- 柔軟な出力形式:結果を標準出力やファイルに出力可能。
実行例:
以下は、Naabuを使ってターゲットホスト(例:192.168.1.1)の開いているポートをスキャンする簡単なコマンド例です。
naabu -host 192.168.1.1 -p 1-1000
解説:
- -p:スキャンするポートの範囲を指定。ここでは1番から1000番ポートまでを指定。
結果をファイルに出力する例:
naabu -host 192.168.1.1 -o results.txt
解説:
- -o:スキャン結果を指定したファイルに出力。ここではresults.txtに保存。
このように、Naabuを用いることで、ネットワーク内の開いているポートを迅速に特定し、潜在的なセキュリティリスクを評価することができます。
getallurls (gau)
getallurls (gau) は、特定のドメインから利用可能なすべてのURLを収集するためのツールです。ペネトレーションテストやセキュリティリサーチの際に、Webアプリケーション内のすべてのエンドポイントやリソースをリストアップするのに役立ちます。gauは、複数のデータソースを利用して効率的にURLを収集します。
主な特徴:
- 複数のデータソース:Wayback Machine、Common Crawl、URLScanなどからURLを収集。
- シンプルなインターフェース:簡単なコマンドで実行可能。
- 効率的な収集:高速で多数のURLを収集。
実行例:
以下は、gauを使って特定のドメイン(例:example.com)のURLを収集する簡単なコマンド例です。
解説:
- このコマンドは、example.com ドメインに関連するすべてのURLを収集します。
特定のデータソースを指定する場合の例:
gau --providers wayback,commoncrawl example.com
解説:
- --providers:使用するデータソースを指定。ここではwaybackとcommoncrawlを指定しています。
結果をファイルに保存する例:
gau example.com -o urls.txt
解説:
- -o:収集したURLを指定したファイルに保存。ここではurls.txtに出力します。
このように、gauを用いることで、Webアプリケーション内のすべてのエンドポイントを効率的に収集し、潜在的なセキュリティリスクを評価するための情報を得ることができます。
xnLinkFinder
xnLinkFinderは、WebアプリケーションのJavaScriptファイルからエンドポイントやURLを抽出するためのツールです。セキュリティリサーチャーやペネトレーションテスターにとって、アプリケーション内の隠れたエンドポイントを見つけ出し、脆弱性を評価するのに役立ちます。xnLinkFinderは、静的解析を行い、JavaScriptファイルに埋め込まれたURLやAPIエンドポイントを効率的に抽出します。
主な特徴:
- JavaScript解析:JavaScriptファイル内のURLやAPIエンドポイントを抽出。
- 簡単な使用方法:シンプルなコマンドラインインターフェース。
- 効果的な検出:埋め込まれたリソースや隠れたエンドポイントを効果的に発見。
実行例:
以下は、xnLinkFinderを使って特定のURL(例:http://example.com/script.js)のJavaScriptファイルからエンドポイントを抽出する簡単なコマンド例です。
python3 xnLinkFinder.py -i http://example.com/script.js -o results.txt
解説:
- -i:解析するJavaScriptファイルのURLを指定。
- -o:抽出結果を保存するファイル名を指定。ここではresults.txtに出力。
特定のディレクトリ内のすべてのJavaScriptファイルを解析する場合の例:
python3 xnLinkFinder.py -i /path/to/javascript/files/ -o results.txt
解説:
- -i:解析するJavaScriptファイルが格納されたディレクトリを指定。
- -o:抽出結果を保存するファイル名を指定。ここではresults.txtに出力。
特定のパターンにマッチするエンドポイントのみを抽出する場合の例:
nuclei -u http://www.example.com -t /path/to/templates/example-vuln.yaml
解説:
- -p:抽出するエンドポイントのパターンを指定。ここでは/api/を含むURLのみを抽出。
このように、xnLinkFinderを用いることで、Webアプリケーション内のJavaScriptファイルから隠れたエンドポイントを効率的に抽出し、セキュリティ評価を行うための情報を得ることができます。
dirseaech
Dirsearchは、Webアプリケーションのディレクトリやファイルを強制探索(ブルートフォース)するためのコマンドラインツールです。セキュリティテストやペネトレーションテストにおいて、隠れたコンテンツや管理ページ、バックアップファイルなどを発見するのに役立ちます。Dirsearchは、多言語対応でカスタマイズ可能なワードリストを使用し、効率的に探索を行います。
主な特徴:
- 高速探索:高いパフォーマンスで多数のディレクトリやファイルを迅速にスキャン。
- カスタマイズ可能:特定のファイル拡張子やディレクトリを指定可能。
- 多言語対応:Pythonで書かれ、さまざまなオプションで柔軟に対応。
実行例:
以下は、Dirsearchを使って特定のターゲットサイト(例:http://example.com)のディレクトリを探索する簡単なコマンド例です。
dirsearch -u http://example.com -w /path/to/wordlist.txt
解説:
- -u:ターゲットURLを指定。
- -w:使用するワードリストのパスを指定。
特定の拡張子を探索する場合の例:
dirsearch -u http://example.com -w /path/to/wordlist.txt -e php,html,js
解説:
- -e:探索するファイルの拡張子を指定。ここではphp、html、jsファイルを指定。
結果をファイルに保存する場合の例:
dirsearch -u http://example.com -w /path/to/wordlist.txt -o results.txt
解説:
- -o:探索結果を指定したファイルに保存。ここではresults.txtに出力。
複数のスレッドを使用して探索を高速化する場合の例:
dirsearch -u http://example.com -w /path/to/wordlist.txt -t 50
解説:
- -t:使用するスレッド数を指定。ここでは50スレッドを使用。
このように、Dirsearchを用いることで、Webアプリケーション内の隠れたディレクトリやファイルを効率的に探索し、潜在的なセキュリティリスクを発見することができます。
※dirseaech は総当たりによる列挙のため、十分に注意して利用してください。
Arjun
Arjunは、WebアプリケーションのエンドポイントからGETおよびPOSTリクエストに使用される隠れたパラメータを探し出すためのツールです。セキュリティテストやペネトレーションテストにおいて、アプリケーションの動作を深く理解し、潜在的なセキュリティリスクを評価するのに役立ちます。Arjunは、高速で効率的に作動し、数秒以内に数百のパラメータを検出することができます。
主な特徴:
- 高速スキャン:数秒で数百のパラメータを発見。
- 対応プロトコル:HTTPおよびHTTPSプロトコルに対応。
- カスタマイズ可能:リクエスト方法やパラメータの指定が柔軟。
実行例:
以下は、Arjunを使って特定のURL(例:http://example.com/search)のGETリクエストパラメータを探索する簡単なコマンド例です。
arjun -u http://example.com/search
解説:
POSTリクエストのパラメータを探索する場合の例:
arjun -u http://example.com/login -m POST
解説:
- -m:リクエストメソッドを指定。ここではPOSTを指定。
特定のパラメータリストを使用する場合の例:
arjun -u http://example.com/search --get-params /path/to/params.txt
解説:
- --get-params:使用するパラメータリストのパスを指定。
結果をファイルに保存する場合の例:
arjun -u http://example.com/search -o results.json
解説:
- -o:探索結果を指定したファイルに保存。ここではresults.jsonに出力。
このように、Arjunを用いることで、Webアプリケーション内の隠れたGETおよびPOSTパラメータを効率的に探索し、セキュリティ評価を行うための情報を得ることができます。
byp4xx
byp4xxは、Webアプリケーションのセキュリティテストにおいて、HTTPステータスコードに基づいて検証を行うツールです。特に、セキュリティヘッダーの欠落や誤った設定、アクセス制御の不備などを検出するために設計されています。このツールは、ブルートフォース攻撃を使用して、潜在的な攻撃手法を実行するために利用されます。
主な特徴:
- HTTPステータスコードに基づく攻撃:さまざまなステータスコードを用いた攻撃を実行。
- セキュリティヘッダーの検証:セキュリティヘッダーの設定ミスを発見。
- ブルートフォース攻撃:アクセス制御の回避やディレクトリの発見に役立つ攻撃を実行。
実行例:
以下は、byp4xxを使って特定のURL(例:http://example.com/login)に対して攻撃を行う簡単なコマンド例です。
byp4xx -u http://example.com/login
byp4xx -u http://example.com/admin -c 403,401,500
解説:
- -c:攻撃で使用するステータスコードをカンマ区切りで指定。ここでは403 Forbidden、401 Unauthorized、500 Internal Server Errorを試す。
攻撃対象のパラメータを指定する場合の例:
byp4xx -u http://example.com/search -p "query=test"
解説:
- -p:攻撃対象のパラメータを指定。ここではquery=testを使用。
結果をファイルに保存する場合の例:
byp4xx -u http://example.com/login -o results.txt
解説:
- -o:攻撃の結果を指定したファイルに保存。ここではresults.txtに出力。
byp4xxを使用することで、Webアプリケーションのセキュリティ強化に寄与する可能性がありますが、実行は適切な許可を得て行ってください。