feroxbuster
es una herramienta diseñada para realizar Forced Browsing.
La navegación forzada es un ataque en el que el objetivo es enumerar y acceder a recursos que no están referenciados por la aplicación web, pero que siguen siendo accesibles para un atacante.
feroxbuster
utiliza la fuerza bruta combinada con una lista de palabras para buscar contenido no vinculado en los directorios de destino. Estos recursos pueden almacenar información sensible sobre aplicaciones web y sistemas operativos, como el código fuente, las credenciales, el direccionamiento de la red interna, etc.
Este ataque también se conoce como Localización Predecible de Recursos, Enumeración de Archivos, Enumeración de Directorios y Enumeración de Recursos.
Instalación
Descargue una versión
Las versiones para múltiples arquitecturas se pueden encontrar en la sección Releases. La última versión para cada uno de los siguientes sistemas puede descargarse y ejecutarse como se muestra a continuación.
Linux (32 and 64-bit) & MacOS
curl -sL https://raw.githubusercontent.com/epi052/feroxbuster/master/install-nix.sh | bash
Windows x86
https://github.com/epi052/feroxbuster/releases/latest/download/x86-windows-feroxbuster.exe.zip
Expand-Archive .\feroxbuster.zip
.\feroxbuster\feroxbuster.exe -V
Windows x86_64
Invoke-WebRequest https://github.com/epi052/feroxbuster/releases/latest/download/x86_64-windows-feroxbuster.exe.zip -OutFile feroxbuster.zip
Expand-Archive .\feroxbuster.zip
.\feroxbuster\feroxbuster.exe -V
Instalación Snap
También puedes instalarlo utilizando snap
sudo snap install feroxbuster
Lo único que se obtiene aquí es que el paquete de instantáneas sólo puede leer listas de palabras de unos pocos lugares específicos. Hay unas cuantas soluciones posibles, de las cuales dos se muestran a continuación.
Si la wordlist está en la misma partición que tu directorio principal, puede ser enlazada a ~/snap/feroxbuster/common
ln /path/to/the/wordlist ~/snap/feroxbuster/common
./feroxbuster -u http://localhost -w ~/snap/feroxbuster/common/wordlist
Si la wordlist está en una partición separada, el enlace (simbólico) duro no funcionará. Necesitarás copiarlo en el directorio snap.
cp /path/to/the/wordlist ~/snap/feroxbuster/common
./feroxbuster -u http://localhost -w ~/snap/feroxbuster/common/wordlist
Homebrew en MacOS y Linux
Instalar usando Homebrew a través de tap
MacOS
brew tap tgotwig/feroxbuster
brew install feroxbuster
Linux
brew tap tgotwig/linux-feroxbuster
brew install feroxbuster
Configuración
Valores por defecto
La configuración comienza con los siguientes valores predeterminados incorporados en el binario:
- timeout:
7
seconds (segundos) - follow redirects:
false
- wordlist:
/usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
- threads:
50
- verbosity:
0
(no logging enabled) - scan_limit:
0
(no limit imposed on concurrent scans) - status_codes:
200 204 301 302 307 308 401 403 405
- user_agent:
feroxbuster/VERSION
- recursion depth:
4
- auto-filter wildcards –
true
- output:
stdout
- save_state:
true
(create a state file in cwd whenCtrl+C
is received)
Análisis de línea de mando
Finalmente, después de analizar el archivo de configuración disponible, cualquier opción/argumento dado en la línea de comandos anulará cualquier valor que se haya establecido como valor incorporado o del archivo de configuración.
USAGE:
feroxbuster [FLAGS] [OPTIONS] --url <URL>...
FLAGS:
-f, --add-slash Append / to each request
-D, --dont-filter Don't auto-filter wildcard responses
-e, --extract-links Extract links from response body (html, javascript, etc...); make new requests based on
findings (default: false)
-h, --help Prints help information
-k, --insecure Disables TLS certificate validation
--json Emit JSON logs to --output and --debug-log instead of normal text
-n, --no-recursion Do not scan recursively
-q, --quiet Only print URLs; Don't print status codes, response size, running config, etc...
-r, --redirects Follow redirects
--stdin Read url(s) from STDIN
-V, --version Prints version information
-v, --verbosity Increase verbosity level (use -vv or more for greater effect. [CAUTION] 4 -v's is probably
too much)
OPTIONS:
--debug-log <FILE> Output file to write log entries (use w/ --json for JSON entries)
-d, --depth <RECURSION_DEPTH> Maximum recursion depth, a depth of 0 is infinite recursion (default: 4)
-x, --extensions <FILE_EXTENSION>... File extension(s) to search for (ex: -x php -x pdf js)
-N, --filter-lines <LINES>... Filter out messages of a particular line count (ex: -N 20 -N 31,30)
-X, --filter-regex <REGEX>... Filter out messages via regular expression matching on the response's body
(ex: -X '^ignore me$')
-S, --filter-size <SIZE>... Filter out messages of a particular size (ex: -S 5120 -S 4927,1970)
-C, --filter-status <STATUS_CODE>... Filter out status codes (deny list) (ex: -C 200 -C 401)
-W, --filter-words <WORDS>... Filter out messages of a particular word count (ex: -W 312 -W 91,82)
-H, --headers <HEADER>... Specify HTTP headers (ex: -H Header:val 'stuff: things')
-o, --output <FILE> Output file to write results to (use w/ --json for JSON entries)
-p, --proxy <PROXY> Proxy to use for requests (ex: http(s)://host:port, socks5(h)://host:port)
-Q, --query <QUERY>... Specify URL query parameters (ex: -Q token=stuff -Q secret=key)
-R, --replay-codes <REPLAY_CODE>... Status Codes to send through a Replay Proxy when found (default: --status-
codes value)
-P, --replay-proxy <REPLAY_PROXY> Send only unfiltered requests through a Replay Proxy, instead of all
requests
--resume-from <STATE_FILE> State file from which to resume a partially complete scan (ex. --resume-from
ferox-1606586780.state)
-L, --scan-limit <SCAN_LIMIT> Limit total number of concurrent scans (default: 0, i.e. no limit)
-s, --status-codes <STATUS_CODE>... Status Codes to include (allow list) (default: 200 204 301 302 307 308 401
403 405)
-t, --threads <THREADS> Number of concurrent threads (default: 50)
--time-limit <TIME_SPEC> Limit total run time of all scans (ex: --time-limit 10m)
-T, --timeout <SECONDS> Number of seconds before a request times out (default: 7)
-u, --url <URL>... The target URL(s) (required, unless --stdin used)
-a, --user-agent <USER_AGENT> Sets the User-Agent (default: feroxbuster/VERSION)
-w, --wordlist <FILE> Path to the wordlist
Explicación de la pantalla del escáner
feroxbuster
intenta ser intuitivo y fácil de entender, sin embargo, si te preguntas acerca de cualquiera de los resultados del escaneo y lo que significa, esta es la sección indicada!
Recurso descubierto
Cuando feroxbuster
encuentra una respuesta que no ha sido filtrada, se reporta por encima de las barras de progreso y se ve similar a lo que se muestra abajo.
El número de líneas, palabras y bytes mostrados aquí pueden ser usados para filtrar esas respuestas
Barra de progreso del escaneo general
La barra de progreso superior, de color amarillo, registra el estado general del escaneo. Sus campos se describen en la imagen de abajo.
Barra de progreso del escaneo del directorio
Todas las demás barras de progreso, de color cian, representan un escaneo de un directorio en particular y se verán similares a las de abajo.
Ejemplo de uso
Múltiples valores
Las opciones que toman múltiples valores son muy flexibles. Considera las siguientes formas de especificar las extensiones:
./feroxbuster -u http://127.1 -x pdf -x js,html -x php txt json,docx
El comando de arriba añade .pdf, .js, .html, .php, .txt, .json, y .docx a cada url
Todos los métodos anteriores (flags múltiples, separación de espacios, separación de comas, etc…) son válidos e intercambiables. Lo mismo ocurre con las url, los encabezados, los códigos de estado, las consultas y los filtros de tamaño.
Incluir encabezados
./feroxbuster -u http://127.1 -H Accept:application/json "Authorization: Bearer {token}"
IPv6, escaneo no recursivo con registro de nivel de información habilitado
./feroxbuster -u http://[::1] --no-recursion -vv
Leer los urls desde STDIN; canalizar sólo urls resultantes hacia otra herramienta
cat targets | ./feroxbuster --stdin --quiet -s 200 301 302 --redirects -x js | fff -s 200 -o js-files
Tráfico de proxy a través de Burp
./feroxbuster -u http://127.1 --insecure --proxy http://127.0.0.1:8080
Tráfico de proxy a través de un proxy SOCKS (incluyendo búsquedas de DNS)
./feroxbuster -u http://127.1 --proxy socks5h://127.0.0.1:9050
Extraer enlaces del cuerpo de respuesta
Busca en el cuerpo de respuestas válidas (html, javascript, etc…) para encontrar puntos finales adicionales para escanear. Esto convierte a feroxbuster
en un híbrido que busca tanto contenido vinculado como no vinculado.
./feroxbuster -u http://127.1 --extract-links
Limitar número total de escaneos simultáneos
Limitar el número de escaneos permitidos en un momento dado. La recursividad seguirá identificando nuevos directorios, pero los directorios recién descubiertos sólo pueden empezar a escanear cuando el número total de escaneos activos caiga por debajo del valor pasado a --scan-limit
.
./feroxbuster -u http://127.1 --scan-limit 2
Detener y reanudar los escaneos
La versión 1.9.0 añade algunas características que permiten detener completamente un escaneo y reanudar ese mismo escaneo desde un archivo en el disco.
Un simple Ctrl+C durante un escaneo creará un archivo que contiene información sobre el escaneo que fue cancelado.
Aplicar un límite de tiempo para ecaneo
La versión 1.10.0 añade la capacidad de establecer un tiempo máximo de ejecución, o límite de tiempo, en tu escaneo. El uso es bastante simple: un número seguido directamente por un solo carácter que representa los segundos, minutos, horas o días. feroxbuster
se refiere a esta combinación como un time_spec.
Ejemplos de posibles time_specs:
30s
– 30 segundos20m
– 20 minutos1h
– 1 hora1d
– 1 día (por qué??)
Se puede pasar un time_spec válido a --time-limit
para forzar un cierre después de que el tiempo dado haya transcurrido.
Comparación con herramientas similares
Hay bastantes herramientas similares para la navegación forzada/descubrimiento de contenidos. Burp Suite Pro, Dirb, Dirbuster, etc… Sin embargo, en mi opinión, hay dos que marcan la pauta: gobuster y ffuf. Ambas son herramientas maduras, ricas en características y con un uso increíble.
Entonces, ¿por qué querrías usar feroxbuster en lugar de ffuf/gobuster? En la mayoría de los casos, probablemente no lo harás. ffuf en particular puede hacer la gran mayoría de las cosas que feroxbuster puede hacer, mientras que aún ofrece más funcionalidad. Aquí hay algunos de los casos de uso en los que feroxbuster puede encajar mejor:
- Quieres una experiencia de uso de la herramienta simple
- Quieres escanear a través de un proxy SOCKS
- Quieres el auto-filtrado de las respuestas de los comodines por defecto
- Quiere un extractor de enlaces / analizador robots.txt integrado para aumentar los puntos finales descubiertos
- Quieres la recursión junto con alguna otra cosa mencionada anteriormente (ffuf también hace la recursión)
- Quieres una opción de archivo de configuración para anular los valores por defecto incorporados en tus escaneos
. | feroxbuster | gobuster | ffuf |
---|---|---|---|
rápido | ✔ | ✔ | ✔ |
fácil de usar | ✔ | ✔ | |
permite la recursividad | ✔ | ✔ | |
puede especificar parámetros de consulta | ✔ | ✔ | |
soporta proxy SOCKS | ✔ | ||
escaneo de objetivos múltiples (via stdin o multiple -u) | ✔ | ✔ | |
archivo de configuración para el valor default override | ✔ | ✔ | |
puede aceptar urls a través de STDIN como parte de pipeline | ✔ | ✔ | |
puede aceptar listas de palabras a través de STDIN | ✔ | ✔ | |
filtro basado en tamaño de respuesta, recuento de palabras y recuento de líneas | ✔ | ✔ | |
respuestas con comodines de filtro automático | ✔ | ✔ | |
realiza otros escaneos (vhost, dns, etc) | ✔ | ✔ | |
retraso en el tiempo / limitación de la tasa | ✔ | ✔ | |
extrae enlaces del body de respuesta para aumentar la cobertura de escaneo (v1.1.0 ) | ✔ | ||
limita el número de exploraciones recursivas simultáneas (v1.2.0 ) | ✔ | ||
filtra las respuestas por código de estado (v1.3.0 ) | ✔ | ✔ | ✔ |
pausa interactiva y reanudación del escaneo activo (v1.4.0 ) | ✔ | ||
reproduce sólo las solicitudes coincidentes con un proxy (v1.5.0 ) | ✔ | ✔ | |
filtrar las respuestas por línea y conteo de palabra (v1.6.0 ) | ✔ | ✔ | |
salida jso (ffuf también soporta otros formatos) (v1.7.0 ) | ✔ | ✔ | |
filtrar las respuestas por expresión regular (v1.8.0 ) | ✔ | ✔ | |
guarda el estado del escaneo en disco (puede retomar donde lo dejó) (v1.9.0 ) | ✔ | ||
límite máximo de tiempo de ejecución (v1.10.0 ) | ✔ | ✔ | |
usa robots.txt para aumentar la cobertura del escaneo (v1.10.2 ) | ✔ | ||
utilizar la respuesta de la página de ejemplo para filtrar fuzzy páginas similares (v1.11.0 ) | ✔ | ||
cancelar un escaneo recursivo interactivamente (v1.12.0 ) | ✔ | ||
un gran número de otras opciones | ✔ |
En el caso de que vea un error similar a
error trying to connect: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1913: (self signed certificate)
YSólo tienes que añadir la bandera -k|--insecure
a tu comando.
feroxbuster
rechaza por defecto los certificados autofirmados y otros certificados/configuraciones de sitios “inseguros”. Puedes elegir escanear estos servicios de todos modos diciéndole a feroxbuster
que ignore los certificados de servidores inseguros.
feroxbuster (este enlace se abre en una nueva ventana) por epi052 (este enlace se abre en una nueva ventana)
A fast, simple, recursive content discovery tool written in Rust.