
極めて大規模なウェブサイトのディレクトリおよびファイルのブルートフォース攻撃。
CritHit は、1つのワードリスト項目を取得し、多数のホストに対して1つずつテストしてから、次のワードリスト項目に移ります。この方法でブルートフォースを行う目的は、低い制限の Web Application Firewall(WAF)による禁止を回避し、通常1つのホストに対して複数の同時リクエストを送信する場合よりも高速にブルートフォースを実行できるようにすることです。
CritHit は、プロキシリストを使用して結果を複数回検証したり、Web サイトのベースラインを取ることでノイズを除去したりできます。さらに、多数の Web サイトで特定の項目を探す場合(脆弱性をより多くのホスト間でクロス比較するなど)、--signatures をビルドして使用し、特定のデータポイントを含むホストのみを出力ファイルに書き込むことができます。
CritHit の最良の結果は、小さな(100個の重要な項目)ワードリスト、非常に大きなターゲットリストを使用して素早く「最初のパス」として使用し、その後、結果が見つかった場所で ffuf などのプロジェクトを使用してより直接的に深堀りすることで得られます。
EdOverflows の Megplus および TomNomNom の meg プロジェクトに触発されました。これらは同じアイデアに取り組んでいます。
また、コアアイデアを洗練し、励まし、テストしてくれた Hakluke と sml555_ に感謝します。
デフォルト設定では、これは非常に高速に動作します。共有WAFが適用されたドメイン上のターゲットを扱う場合、すぐに禁止される可能性があります。必要に応じて -n(タイムアウト)および -c(スレッド)を調整してください。
依存関係をインストールします。
/dep/ には Unix ビルドの Boost が含まれています。他の環境でビルドするには、これを置き換える必要があります。BOOST_ROOT を、展開したライブラリのルートに設定します。/usr/lib ディレクトリに libcrypto.so.1.1 と libssl.so.1.1 が必要です。これらはこのリポジトリの dep/ ディレクトリに含まれています。次に:
sudo apt-get install libssl-dev
CMake ファイルを作成します(/codingo/opt 内の場合はオプション)。
cmake -G "Unix Makefiles"
ソリューションを作成します。
make
または、以下の内容をターゲット環境に合わせて変更してください。
wget "https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz"
tar -xvzf boost_1_70_0.tar.gz
export BOOST_ROOT="/home/boost_1_70_0"
cd crithit/crithit
cmake -G "Unix Makefiles"
make
./crithit -w _wordlist_ -t _hostnames_
cd crithit/crithit
docker build -t crithit .
docker run -v $(pwd):/input -t crithit -w /input/_wordlist_ -t /input/_hostnames_
このリポジトリに適切なドキュメントが追加されるまでは、入力パラメータを確認することを推奨します。
USAGE:
./crithit [--os <filename>] [--signatures <filename>] [-e <filename>]
[-n <integer>] [--read-for <integer>] [-p <filename>]
[--max-sockets <integer>] [-V <integer>] [-r] [-b <string>]
[-s <string>] [-c <integer>] [-t <filename>] [-T <domain
name>] [--verbose] -w <filename> [-o <filename>] [--]
[--version] [-h]
Where:
--os <filename>
if --signatures is specified, this specifies the output file to write
result to
--signatures <filename>
file containing list of signatures to look out for in top-level
domains
-e <filename>, --exceptions <filename>
filename containing words...
-n <integer>, --wait-for <integer>
wait N seconds to connect/send data to server(default: 5secs)
--read-for <integer>
wait N seconds to receive data from server(default: 10secs)
-p <filename>, --proxy <filename>
a filename containing list of proxy names and port(IP:port)
--max-sockets <integer>
Number of sockets to use
-V <integer>, --verify <integer>
verify successful results with different proxies
-r, --randomize-agent
use random user agents for requests
-b <string>, --statuscodesblacklist <string>
Negative status codes (will override statuscodes if set)
-s <string>, --statuscodes <string>
Positive status codes (will be overwritten with statuscodesblacklist
if set)(default 200,204,301,302,307,401,403,408)
-c <integer>, --threads <integer>
Number of threads to use(default: 12)
-t <filename>, --target-list <filename>
a filename containing the list of targets
-T <domain name>, --target <domain name>
the target
--verbose
be verbose with output
-w <filename>, --word-list <filename>
(required) a filename containing list of words to use
-o <filename>, --output <filename>
output result to (default: stdout)
--, --ignore_rest
Ignores the rest of the labeled arguments following this flag.
--version
Displays version information and exits.
-h, --help
Displays usage information and exits.