
Toma un solo elemento de una lista de palabras y lo prueba uno por uno sobre una gran colección de sitios web antes de pasar al siguiente. Crea firmas para verificar vulnerabilidades de forma cruzada en múltiples hosts.
Fuerza bruta de directorios y archivos web a escala extrema.
CritHit toma un elemento de una lista de palabras y lo prueba uno por uno sobre una gran colección de hosts antes de pasar al siguiente elemento. La intención de realizar fuerza bruta de esta manera es evitar bloqueos por límites bajos de un Cortafuegos de Aplicaciones Web (WAF) y permitir que la fuerza bruta se ejecute más rápido de lo normal cuando se aborda un solo host con múltiples solicitudes simultáneas.
CritHit puede realizar múltiples verificaciones de resultados utilizando listas de proxies, así como filtrar ruido mediante la línea base de los sitios web. Además, si se busca un elemento específico en una gran cantidad de sitios web (para comparar una vulnerabilidad en más hosts), se pueden construir y usar --signatures para escribir solo los hosts que contengan puntos de datos específicos en un archivo de salida.
Los mejores resultados se pueden obtener de CritHit usándolo como un "primer pase" rápido con una lista de palabras pequeña (100 elementos críticos), una lista de objetivos muy grande, y luego profundizando de manera más directa con un proyecto como ffuf donde se encuentren resultados.
Inspirado por los proyectos de EdOverflow Megplus y de TomNomNom , los cuales han abordado la misma idea.
También agradecimientos a Hakluke y sml555_ por refinar la idea central, por el ánimo y las pruebas.
Esto se ejecuta increíblemente rápido en la configuración predeterminada. Si trabajas con un objetivo que tiene un WAF compartido entre dominios, rápidamente te enfrentarás a un bloqueo. Ajusta -n (tiempo de espera) y -c (hilos) según sea necesario.
Instala las dependencias:
/dep/ de este repositorio hay una compilación de Boost para Unix, que deberá ser reemplazada para compilar en otros entornos.BOOST_ROOT apuntando a la raíz de la librería extraída.libcrypto.so.1.1 y libssl.so.1.1 en tu directorio /usr/lib, los cuales están incluidos en el directorio dep/ de este repositorio.Luego:
sudo apt-get install libssl-dev
Crea los archivos CMake (opcional si estás en /codingo/opt)
cmake -G "Unix Makefiles"
Genera la solución
make
Alternativamente, modifica lo siguiente para tu entorno objetivo:
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_
Se recomienda revisar los parámetros de entrada hasta que la documentación adecuada se haya agregado a este repositorio.
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.