
Pega um item de wordlist e o testa um por um em uma grande coleção de sites antes de passar para o próximo. Cria assinaturas para verificar vulnerabilidades em vários hosts.
Força bruta de diretórios e arquivos de sites em escala extrema.
CritHit pega um único item da wordlist e o testa um por um sobre uma grande coleção de hosts antes de passar para o próximo item da wordlist. A intenção de fazer força bruta dessa maneira é evitar banimentos de Web Application Firewall (WAF) com limites baixos e permitir que a força bruta seja executada mais rapidamente do que normalmente seria ao abordar qualquer host único com múltiplas requisições simultâneas.
CritHit pode realizar múltiplas verificações de resultados usando listas de proxies, além de filtrar ruídos ao estabelecer uma linha de base dos sites. Além disso, se estiver procurando por um item específico em um grande número de sites (para comparar uma vulnerabilidade em mais hosts), você pode construir e usar --signatures para escrever apenas hosts contendo pontos de dados específicos em um arquivo de saída.
Os melhores resultados podem ser obtidos do CritHit usando-o como um rápido "primeiro passe" com uma wordlist menor (100 itens críticos), uma lista de alvos muito grande, e então mergulhando mais diretamente com um projeto como ffuf onde os resultados são encontrados.
Inspirado pelos projetos Megplus do EdOverflow e meg do TomNomNom, que abordaram a mesma ideia.
Também agradecimentos a Hakluke e sml555_ por refinarem a ideia central, incentivo e testes.
Isso é executado incrivelmente rápido usando as configurações padrão. Se você trabalhar em um alvo com um waf compartilhado entre domínios, enfrentará rapidamente um banimento. Ajuste -n (timeout) e -c (threads) conforme necessário.
Instale as dependências:
/dep/ deste repositório, isso precisará ser substituído para compilar em outros ambientes.BOOST_ROOT para a raiz da biblioteca extraída.libcrypto.so.1.1 e libssl.so.1.1 no seu diretório /usr/lib, que estão incluídos no diretório dep/ deste repositório.Então:
sudo apt-get install libssl-dev
Crie os arquivos CMake (opcional se estiver em /codingo/opt)
cmake -G "Unix Makefiles"
Compilar a solução
make
Alternativamente, modifique o abaixo para o seu ambiente alvo:
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_
Revisar os parâmetros de entrada é recomendado até que a documentação adequada seja adicionada a este repositório.
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>
se --signatures for especificado, isso especifica o arquivo de saída para escrever o resultado
--signatures <filename>
arquivo contendo lista de assinaturas para procurar em domínios de topo
-e <filename>, --exceptions <filename>
nome do arquivo contendo palavras...
-n <integer>, --wait-for <integer>
aguardar N segundos para conectar/enviar dados ao servidor (padrão: 5 segundos)
--read-for <integer>
aguardar N segundos para receber dados do servidor (padrão: 10 segundos)
-p <filename>, --proxy <filename>
um nome de arquivo contendo lista de nomes de proxy e porta(IP:porta)
--max-sockets <integer>
Número de sockets a usar
-V <integer>, --verify <integer>
verificar resultados bem-sucedidos com diferentes proxies
-r, --randomize-agent
usar user agents aleatórios para requisições
-b <string>, --statuscodesblacklist <string>
Códigos de status negativos (substituirá statuscodes se definido)
-s <string>, --statuscodes <string>
Códigos de status positivos (serão sobrescritos com statuscodesblacklist se definido)(padrão 200,204,301,302,307,401,403,408)
-c <integer>, --threads <integer>
Número de threads a usar (padrão: 12)
-t <filename>, --target-list <filename>
um nome de arquivo contendo a lista de alvos
-T <domain name>, --target <domain name>
o alvo
--verbose
ser verbose com a saída
-w <filename>, --word-list <filename>
(obrigatório) um nome de arquivo contendo lista de palavras a usar
-o <filename>, --output <filename>
saída do resultado para (padrão: stdout)
--, --ignore_rest
Ignora o resto dos argumentos rotulados após esta flag.
--version
Exibe informações de versão e sai.
-h, --help
Exibe informações de uso e sai.