
하나의 단어 목록 항목을 가져와 다음 항목으로 넘어가기 전에 대규모 웹사이트 컬렉션에서 하나씩 테스트합니다. 여러 호스트에서 취약점을 교차 확인하기 위해 서명을 생성합니다.
웹사이트 디렉토리 및 파일 무차별 대입 공격을 극한의 규모로 수행합니다.
CritHit은 단일 단어 목록 항목을 가져와 대규모 호스트 컬렉션에 대해 하나씩 테스트한 후 다음 단어 목록 항목으로 넘어갑니다. 이러한 방식으로 무차별 대입 공격을 수행하는 목적은 낮은 제한의 웹 애플리케이션 방화벽(WAF) 차단을 피하고, 여러 동시 요청을 단일 호스트에 접근할 때보다 더 빠르게 실행할 수 있도록 하는 것입니다.
CritHit은 프록시 목록을 사용하여 결과를 여러 번 확인하고, 웹사이트를 기준으로 삼아 노이즈를 필터링할 수 있습니다. 또한, 많은 수의 웹사이트에서 특정 항목을 찾는 경우(더 많은 호스트에서 취약점을 교차 비교하기 위해) --signatures를 빌드하여 사용하면 특정 데이터 포인트가 포함된 호스트만 출력 파일에 기록할 수 있습니다.
CritHit는 작은(100개 중요 항목) 단어 목록과 매우 큰 대상 목록을 사용하여 빠른 "첫 번째 패스"로 사용하고, 결과가 발견된 프로젝트(예: ffuf)로 보다 직접적으로 심층 분석하는 것이 가장 좋습니다.
EdOverflow의 Megplus와 TomNomNom의 meg 프로젝트에서 영감을 받았습니다. 이 프로젝트들은 동일한 아이디어를 접근했습니다.
또한 핵심 아이디어를 개선하고, 격려하며, 테스트해 준 Hakluke와 sml555_에게 감사드립니다.
이 도구는 기본 설정으로 엄청나게 빠르게 실행됩니다. 공유 WAF가 있는 도메인을 대상으로 작업하면 빠르게 차단에 직면하게 됩니다. 필요에 따라 -n(타임아웃) 및 -c(스레드)를 조정하세요.
의존성 설치:
/dep/에 Unix용 Boost 빌드가 있으며, 다른 환경에서 빌드하려면 이를 교체해야 합니다.BOOST_ROOT를 추출된 라이브러리의 루트로 설정합니다.dep/ 디렉토리에 포함된 libcrypto.so.1.1과 libssl.so.1.1이 /usr/lib 디렉토리에 있어야 합니다.그런 다음:
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>
서버에 연결/데이터 전송을 위해 대기할 시간(초)(기본값: 5초)
--read-for <integer>
서버로부터 데이터를 수신하기 위해 대기할 시간(초)(기본값: 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
사용법 정보를 표시하고 종료합니다.