バグバウンティやASM(Attack Surface Management)で使えそうなツール


1. 始めに

免責事項

本文の内容は、セキュリティに関する知識を広く共有する目的で書かれており、悪意のある行為を奨励するものではありません。

注意点

紹介されるツールの中には、ファジング(総当たり)による列挙や検証を行うものが含まれています。

総当たりを行うツールは、対象に負荷をかけたり、悪影響を与える可能性があるため、注意が必要です。

もし総当たりを行うツールを利用する場合は、対象の規約(スキャンツールの使用、レート制限など)をよく確認し、規約に従って慎重に実行してください。

ツールを実行する対象が「本番環境」であることを忘れずに、倫理的な観点を持って脆弱性を探しましょう。

2. Tools

ffuf

ffuf は、Web アプリケーションに対して使える高速なファジングツールです。

これにより、サブドメインやディレクトリ、パラメーターなどをワードリストを使って総当たりで列挙することができます。

ワードリストには、SecLists や Auto_Wordlists などを使うのが一般的かと思います。

例) ffuf でディレクトリパスを列挙する場合

$ ffuf -w SecLists/Discovery/Web-Content/raft-large-directories.txt -u https://<Domain>/FUZZ

注意点として、ffuf は総当たりによる列挙のため、十分に注意して利用してください。


subfinder

subfinder は、指定したドメインのサブドメインを列挙するツールです。

subfinder のロジックは「パッシブサブドメイン列挙 (Passive Subdomain Enumeration)」で、外部のサービスから DNS をベースに列挙します。

これにより、バグバウンティの対象が「*.example.com」のようにサブドメインも含まれる場合は、サブドメインを列挙して調査対象のドメインを列挙することができます。

例) subfinder でサブドメインを列挙する場合

$ subfinder -d <Domain> -all

nuclei

nuclei は、シンプルなYAML のテンプレートをベースに対象を脆弱性スキャンするツールです。

YAML のテンプレートは、nuclei-templates にあり、自分で簡単にカスタムすることもできます。

これにより、対象のドメインを簡単に脆弱性スキャンをすることができます。

例) nuclei で脆弱性スキャンする場合

$ nuclei -u https://<Domain>

注意点として、nuclei は総当たりによるスキャンツールのため、十分に注意して利用してください。

naabu

naabu は、Go でできた高速なポートスキャンをするツールです。

これにより、対象の開いているポート番号を手軽に列挙することができます。

例) naabu でポートスキャンする場合

$ naabu -host <Domain>


getallurls (gau)

getallurls (gau) は、Wayback Machine などから既知の URL をパラメーター付きで列挙するツールです。

これにより、対象のドメインの URL を手軽に列挙することができ、どういうディレクトリやパラメーターがあるかを、対象の機能のイメージしやすい形で URL を取得することができます。

例) gau による URL を列挙する場合

$ gau <Domain>


xnLinkFinder

xnLinkFinder は、クローリングによって対象のエンドポイントやパラメーターを列挙するツールです。

これにより、対象のドメインにあるエンドポイントを列挙して、各機能のパスや API のエンドポイントを確認することができます。

例) xnLinkFinder でエンドポイントを列挙する場合

$ python3 xnLinkFinder.py -i <Domain> -sp https://<Domain> -sf <Domain> -v

注意点として、xnLinkFinder はクロールによるスキャンツールのため、十分に注意して利用してください。

dirseaech

dirseaech は、Web アプリケーションのディレクトリを列挙するツールです。

これにより、対象のドメインのディレクトリを列挙して、公開を意図していないディレクトリやファイルを確認することができます。

ちなみに、-e で拡張子リストを指定して実行することもできます。(例: -e js,php,jsp,asp)

例) dirseaech でディレクトリパスを列挙する場合

$ python3 dirsearch.py -u https://<Domain>

注意点として、dirseaech は総当たりによる列挙のため、十分に注意して利用してください。

Arjun

Arjun は、指定した URL 上にあるパラメーターを列挙するツールです。

これにより、対象のドメインのディレクトリで、非公開なパラメーターを列挙して、Reflected XSS や SQL Injection などができるか検証することができます。

例) Arjun でパラメーターを列挙する場合

$ arjun -u "https://<Domain>/<Path>"

注意点として、Arjun は総当たりによる列挙のため、十分に注意して利用してください。

byp4xx

byp4xx は、「403 Forbidden」などを回避できるかを検証するツールです。

これにより、閲覧禁止のディレクトリやファイルに対して、アクセス制限の回避ができるか手軽に検証することができます。

例) byp4xx で 403 な URL を回避できるか検証する場合

$ byp4xx https://<Domain>/<Path>

注意点として、byp4xx は総当たりによる検証のため、十分に注意して利用してください。


3. その他

Google Dorks

Google Dorks (Google Hacking)とは、Google 検索のオプションである高度な検索演算子を使用して、特定の条件で情報を効率よく取得する手法です。