1. 始めに
こんにちは、morioka12 です。
本稿では、バグバウンティなどの Web アプリケーションを対象とした脆弱性調査でよく使われる、おすすめのツールを10個紹介します。
免責事項
本稿の内容は、セキュリティに関する知見を広く共有する目的で執筆されており、悪用行為を推奨するものではありません。
想定読者
- セキュリティ初学者・学生
- 特に Web Security の学習をしている方
- バグバウンティに興味がある方
- (脆弱性調査をしている方)
注意点
紹介するツールの中には、ファジング(総当たり)による列挙や検証を行うツールが含まれています。
総当たりを行うツールは、対象に負荷がかかったり、悪影響を与えるリクエストを投げる可能性があるため、十分に注意する必要があります。
もし、総当たりを行うツールを利用する場合は、対象の規約(スキャンツールの利用, レート制限など)を十分に確認して、規約に従った上で慎重に実行してください。
ツールを実行する対象が「本番環境」ということを忘れずに、倫理観を持って脆弱性を探しましょう。
2. Tools
2.1 Burp Suite
Burp Suite は、PortSwigger 社が提供するローカルプロキシツールです。
これにより、Web アプリケーションのリクエスト・レスポンスを取得・編集などして、脆弱性の検証を行うことができます。
ちなみに、Community 版(無料)と Professional 版(有料)がありますが、無料版でも使って脆弱性を探すことは問題なくできます。
おすすめの Burp Extensions 10選
また、Burp には拡張機能があり、以下でおすすめの Extensions を紹介しています。
2.2 ffuf
ffuf は、Web アプリケーションに対して使える高速なファジングツールです。
これにより、サブドメインやディレクトリ、パラメーターなどをワードリストを使って総当たりで列挙することができます。
ワードリストには、SecLists や Auto_Wordlists などを使うのが一般的かと思います。
例) ffuf でディレクトリパスを列挙する場合
$ ffuf -w SecLists/Discovery/Web-Content/raft-large-directories.txt -u https://<Domain>/FUZZ
注意点として、ffuf は総当たりによる列挙のため、十分に注意して利用してください。
2.3 subfinder
subfinder は、指定したドメインのサブドメインを列挙するツールです。
subfinder のロジックは「パッシブサブドメイン列挙 (Passive Subdomain Enumeration)」で、外部のサービスから DNS をベースに列挙します。
これにより、バグバウンティの対象が「*.example.com
」のようにサブドメインも含まれる場合は、サブドメインを列挙して調査対象のドメインを列挙することができます。
例) subfinder でサブドメインを列挙する場合
$ subfinder -d <Domain> -all
2.4 nuclei
nuclei は、シンプルなYAML のテンプレートをベースに対象を脆弱性スキャンするツールです。
YAML のテンプレートは、nuclei-templates にあり、自分で簡単にカスタムすることもできます。
これにより、対象のドメインを簡単に脆弱性スキャンをすることができます。
例) nuclei で脆弱性スキャンする場合
$ nuclei -u https://<Domain>
注意点として、nuclei は総当たりによるスキャンツールのため、十分に注意して利用してください。
2.5 naabu
naabu は、Go でできた高速なポートスキャンをするツールです。
これにより、対象の開いているポート番号を手軽に列挙することができます。
例) naabu でポートスキャンする場合
$ naabu -host <Domain>
2.6 getallurls (gau)
getallurls (gau) は、Wayback Machine などから既知の URL をパラメーター付きで列挙するツールです。
これにより、対象のドメインの URL を手軽に列挙することができ、どういうディレクトリやパラメーターがあるかを、対象の機能のイメージしやすい形で URL を取得することができます。
例) gau による URL を列挙する場合
$ gau <Domain>
2.7 xnLinkFinder
xnLinkFinder は、クローリングによって対象のエンドポイントやパラメーターを列挙するツールです。
これにより、対象のドメインにあるエンドポイントを列挙して、各機能のパスや API のエンドポイントを確認することができます。
例) xnLinkFinder でエンドポイントを列挙する場合
$ python3 xnLinkFinder.py -i <Domain> -sp https://<Domain> -sf <Domain> -v
注意点として、xnLinkFinder はクロールによるスキャンツールのため、十分に注意して利用してください。
2.8 dirseaech
dirseaech は、Web アプリケーションのディレクトリを列挙するツールです。
これにより、対象のドメインのディレクトリを列挙して、公開を意図していないディレクトリやファイルを確認することができます。
ちなみに、-e
で拡張子リストを指定して実行することもできます。(例: -e js,php,jsp,asp
)
例) dirseaech でディレクトリパスを列挙する場合
$ python3 dirsearch.py -u https://<Domain>
注意点として、dirseaech は総当たりによる列挙のため、十分に注意して利用してください。
2.9 Arjun
Arjun は、指定した URL 上にあるパラメーターを列挙するツールです。
これにより、対象のドメインのディレクトリで、非公開なパラメーターを列挙して、Reflected XSS や SQL Injection などができるか検証することができます。
例) Arjun でパラメーターを列挙する場合
$ arjun -u "https://<Domain>/<Path>"
注意点として、Arjun は総当たりによる列挙のため、十分に注意して利用してください。
2.10 byp4xx
byp4xx は、「403 Forbidden」などを回避できるかを検証するツールです。
これにより、閲覧禁止のディレクトリやファイルに対して、アクセス制限の回避ができるか手軽に検証することができます。
例) byp4xx で 403 な URL を回避できるか検証する場合
$ byp4xx https://<Domain>/<Path>
注意点として、byp4xx は総当たりによる検証のため、十分に注意して利用してください。
3. その他
Google Dorks
Google Dorks (Google Hacking)とは、Google 検索のオプションである高度な検索演算子を使用して、特定の条件で情報を効率よく取得する手法です。
バグバウンティでは、よく対象の初期調査で Google Dorks を用いることがよくあります。
バグバウンティ入門(始め方)
バグバウンティの始め方については、以下のブログで紹介しているため、よければこちらもご覧ください。
参考ドキュメント・コメント
Burp with 20 extensions, ffuf , waymore , amass , httpx , naabu , Arjun , Sqlmap , shodan cli , gittools
— Godfather Orwa 🇯🇴 (@GodfatherOrwa) November 20, 2023
all this tools favorite equally for me https://t.co/OhjFPXRtxN
4.終わりに
本稿では、バグバウンティなどの脆弱性調査でよく使われる、おすすめのツールを10個紹介しました。
他にも、色々なツールがあるため、自分に合ったものを調べたり、使ってみたりしてみてください。
ここまでお読みいただきありがとうございました。