
Prend un élément unique d'une liste de mots et le teste un par un sur une grande collection de sites Web avant de passer au suivant. Créez des signatures pour recouper les vulnérabilités sur plusieurs hôtes.
Bruteforce de répertoires et fichiers de sites web à échelle extrême.
CritHit prend un élément d'une wordlist et le teste un par un sur une grande collection d'hôtes avant de passer à l'élément suivant. L'intention du bruteforce de cette manière est d'éviter les bannissements des pare-feu d'applications Web (WAF) à faible limite et de permettre au bruteforce de s'exécuter plus rapidement que normalement lorsqu'on approche un seul hôte avec plusieurs requêtes simultanées.
CritHit peut effectuer plusieurs vérifications des résultats à l'aide de listes de proxies, ainsi que filtrer le bruit en établissant une ligne de base des sites Web. De plus, si vous recherchez un élément spécifique sur un grand nombre de sites Web (pour comparer une vulnérabilité sur plusieurs hôtes), vous pouvez créer et utiliser --signatures pour écrire uniquement les hôtes contenant des points de données spécifiques dans un fichier de sortie.
Les meilleurs résultats peuvent être obtenus avec CritHit en l'utilisant comme un rapide "premier passage" avec une petite wordlist (100 éléments critiques), une très grande liste de cibles, puis en plongeant plus directement avec un projet tel que ffuf là où des résultats sont trouvés.
Inspiré par les projets Megplus d'EdOverflow et meg de TomNomNom qui ont abordé la même idée.
Merci également à Hakluke et sml555_ pour avoir affiné l'idée centrale, les encouragements et les tests.
Ceci tourne incroyablement vite avec les paramètres par défaut. Si vous travaillez sur une cible avec un WAF partagé sur des domaines, vous serez rapidement banni. Ajustez -n (timeout) et -c (threads) selon vos besoins.
Installer les dépendances :
/dep/ de ce dépôt, qui devra être remplacée pour compiler sur d'autres environnements.BOOST_ROOT sur la racine de la bibliothèque extraite.libcrypto.so.1.1 et libssl.so.1.1 dans votre répertoire /usr/lib, qui sont inclus dans le répertoire dep/ de ce dépôt.Puis :
sudo apt-get install libssl-dev
Générer les fichiers CMake (optionnel si dans /codingo/opt)
cmake -G "Unix Makefiles"
Compiler la solution
make
Alternativement, modifiez ce qui suit pour votre environnement cible :
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_
Il est recommandé de passer en revue les paramètres d'entrée jusqu'à ce qu'une documentation appropriée soit ajoutée à ce dépôt.
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.