
CWFFは、並行処理を活用して最高速度で特別な高品質なファジング/コンテンツ発見ワードリストを作成するツールで、@tomnomnomのWho, What, Where, When, Wordlist #NahamCon2020に強く影響を受けています。

CWFF [-h] [--threads] [--github] [--subdomains] [--recursive] [--js-libraries] [--connected-websites] [--juicy-files] [--use-filter-model] [-o] domain
positional arguments:
domain Target website(ofc)
optional arguments:
-h, --help Show this help message and exit
--threads The number of maximum concurrent threads to use (Default:1000)
--github Collect endpoints from a given github repo (ex:https://github.com/google/flax)
--subdomains Extract endpoints from subdomains also while search in the wayback machine!
--recursive Work on extracted endpoints recursively (Adds more endpoints but less accurate sometimes)!
--js-libraries Extract endpoints from JS libraries also, not just the JS written by them!
--connected-websites Include endpoints extracted from connected websites
--juicy-files Include endpoints extracted from juicy files like sitemap.xml and robots.txt
--use-filter-model Filter result endpoints with filter_model file
-o The output directory for the endpoints and parameters. (Default: website name)
基本的には、ターゲットとそのサブドメインのエンドポイントとパラメータを、いくつかのソースから収集します。以下でそれらについて説明します。
多くのツールは時間を節約するためにwaybackのトップページのみを調べますが、ここではわずかな時間ですべてのレコードを調べます。ただし、--subdomainsフラグを使用すると時間がかかります。
<script> tagCWFFは、JSライブラリとウェブサイト開発者によって実際に書かれたJSファイルを区別しようとし、JSファイル名を調べることでそれを行います。デフォルトでは、CWFFは開発者によって書かれたJSファイルからのみエンドポイントを抽出します。JSライブラリ(ほとんど役に立ちません)を使用するには、--js-librariesフラグを有効にしてください。
--juicy-filesフラグを指定すると、Sitemap.xmlやrobots.txtなどのファイルからもエンドポイントを抽出します(将来的に追加される可能性があります)。--githubフラグを使用してGitHubリポジトリを指定すると、GitHub APIを使用してそのリポジトリからパスを抽出します(APIキーは不要)。明確にしておくと、CWFFはファイルとディレクトリのパスのみを使用するため、ファイル自体の中からエンドポイントを抽出することはありません。
--connected-websitesフラグを使用すると、CWFFはbuiltwithウェブサイトAPI(キーが必要ですが無料)を使用して、関係プロファイルからターゲットに接続されたウェブサイトを抽出し、それらのウェブサイトのソースからエンドポイントを抽出します。注: APIキーはこのページから取得し、
API_keys.pyファイルに変数を設定してください。
これらのすべてのエンドポイントからエンドポイントを収集した後、--recursiveフラグを使用すると、CWFFは収集されたエンドポイントから再帰的に部分を抽出します。
parseq/javadoc/1.1.0/comのようなエンドポイントは、以下のすべてのエンドポイントになります。
parseq/javadoc/1.1.0/com
parseq/javadoc/1.1.0/
parseq/javadoc/
parseq/
javadoc/
1.1.0/
com
注: 収集されたすべてのエンドポイント/パラメータは、重複を排除して一意の結果を得るためにクリーニングおよびソートされます。
もちろん、これらすべてのソースと作業の後、重要なエンドポイントの中に多くの不要/無駄なエンドポイントが含まれます。ここでフィルタリングが時間とリソースを節約するために役立ちます。
CWFFでは、3つの方法を使用して不要なエンドポイントを検出および削除できます。
これらのフィルタオプションはすべて、filter_model.pyファイルで変数を設定し、CWFFを起動する際に--use-filter-modelフラグを使用することで指定できます。これらの変数の設定方法がわからない場合は、ファイルに残したコメントを参照してください。私が主に使用している設定で、スクリーンショットでは収集されたエンドポイントの数が26,177から3,629に減少しました。CWFFを実行中にフィルタリングを忘れても心配しないでください。対応しています😄
スクリプトfilter.pyを使用して、以下の方法でエンドポイントをフィルタリングできます。CWFFを再実行せずに自動的にfilter_model.pyファイルを読み込みます。
python filter.py wordlist.txt output.txt
python3 -m pip install -r requirements.txt
python3 cwff.py --help
私の仕事が役に立ったなら、コーヒーをおごって感謝していただいて構いません。
CWFFはペネトレーションテストを支援するために作成されており、誤用や違法目的に対する責任は負いません。
このツールからコードをコピーしたり、他のツールで使用することは、出典を明記すれば認められます:smile