网站目录和文件暴力破解,极致规模。
CritHit 逐个取一个字典项,然后在大量主机上逐个测试,再移到下一个字典项。这种暴力破解方式的目的是规避低阈值的 Web 应用防火墙(WAF)封禁,并使得暴力破解能够比通常同时向单个主机发送多个请求的方式运行得更快。
CritHit 可以使用代理列表对结果进行多次验证,并通过基线化网站来过滤噪声。此外,如果要在大量网站中查找特定项目(以便在更多主机上交叉比较漏洞),你可以构建并使用 --signatures 将仅包含特定数据点的主机写入输出文件。
CritHit 的最佳用法是作为一个快速的“第一遍”,使用较小的字典(100 个关键项)和一个非常大的目标列表,然后在发现结果的地方使用 ffuf 等项目进行深入探测。
灵感来源于 EdOverflow 的 Megplus 和 TomNomNom 的 meg 项目,它们实现了相同的思路。
同时感谢 Hakluke 和 sml555_ 对核心思路的完善、鼓励和测试。
此工具在默认设置下运行极快。如果你在共享 WAF 的域上工作,将很快面临封禁。根据需要调整 -n(超时)和 -c(线程数)。
安装依赖:
/dep/ 目录下提供了 Boost 的 Unix 构建版本,如需在其他环境下构建,则需要替换该目录。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>
如果指定了 --signatures,则此参数指定将结果写入的输出文件
--signatures <filename>
包含要在顶级域名中查找的签名列表的文件
-e <filename>, --exceptions <filename>
包含单词的文件...
-n <integer>, --wait-for <integer>
等待 N 秒以连接/发送数据到服务器(默认:5 秒)
--read-for <integer>
等待 N 秒以从服务器接收数据(默认:10 秒)
-p <filename>, --proxy <filename>
包含代理名称和端口(IP:port)列表的文件
--max-sockets <integer>
要使用的套接字数量
-V <integer>, --verify <integer>
使用不同的代理验证成功的结果
-r, --randomize-agent
对请求使用随机的用户代理
-b <string>, --statuscodesblacklist <string>
负向状态码(如果设置,将覆盖 statuscodes)
-s <string>, --statuscodes <string>
正向状态码(如果设置了 statuscodesblacklist,则会被覆盖)(默认:200,204,301,302,307,401,403,408)
-c <integer>, --threads <integer>
要使用的线程数(默认:12)
-t <filename>, --target-list <filename>
包含目标列表的文件
-T <domain name>, --target <domain name>
目标
--verbose
输出详细信息
-w <filename>, --word-list <filename>
(必需)包含要使用的单词列表的文件
-o <filename>, --output <filename>
将结果输出到(默认:stdout)
--, --ignore_rest
忽略此标志之后的所有带标签参数。
--version
显示版本信息并退出。
-h, --help
显示用法信息并退出。