Gobuster tutorial
Gobuster tutorial
É até possível usar força bruta para encontrar hosts virtuais ocultos, vhosts
como sites de desenvolvimento ou portais de administração.
Instalação Gobuster
Escrito na linguagem Go, esta ferramenta enumera arquivos ocultos junto com os diretórios remotos. Usando a linha de comando, é simples instalar e executar no Ubuntu 20.04.
Para a versão 2 é tão simples quanto:
$ sudo apt install gobuster
O pacote Linux pode não ser a versão mais recente do Gobuster. Verifique Repology: o hub de empacotamento , que mostra que o pacote do Gobuster é 2.0.1 (no momento deste artigo). O repositório Github mostra uma versão mais recente V3.1.0
. https://github.com/OJ/gobuster.git
Em "Instalação fácil" na página do github, as opções de instalação são versões binárias, instalação Go e construção a partir do código-fonte. Para esta instalação, vamos brincar com a instalação do Go . Gobuster precisa que Go seja pelo menos v1.16
Configurando um ambiente Go (opcional)
Baixe a instalação do GO aqui: https://go.dev/dl/
mude para o diretório onde os downloads normalmente chegam e faça o seguinte;
--> extrair $ sudo tar xvzf go1.17.7.linux-amd64.tar.gz --> alterar permissões $ sudo chown -R root:root ./go --> mover para o diretório local $ sudo mv -v go /usr/local
Uma variável de ambiente local chamada $GOPATH precisa ser configurada. Desde o Go 1.8, isso não é essencial, embora ainda seja recomendado, pois algumas ferramentas de terceiros ainda dependem dele.
Adicione o seguinte ao .bash_profile
diretório Locate in home com ls -la
.
export GOPATH=/usr/local/go export PATH=$PATH:/usr/local/go/bin
Para verificar se tudo funcionou e se o ambiente Go está configurado:
versão $ go ir versão go1.17.7 linux/amd64
Agora com o ambiente Go confirmado. É simplesmente uma questão de usar o seguinte comando para instalar o Gobuster .
$ vá instalar github.com/OJ/gobuster/v3@latest
verifique se o Gobuster está instalado com:
$ versão gobuster 3.1.0
Como usar Gobuster
O Gobuster agora está instalado e pronto para uso. O restante do tutorial é como usar o Gobuster para força bruta para arquivos e diretórios.
Modos e bandeiras do Gobuster
O Gobuster possui uma variedade de modos/comandos para usar, conforme mostrado abaixo. Este tutorial se concentra em 3: DIR, DNS e VHOST .
Para ver uma lista geral de comandos, use: gobuster -h
Cada um desses modos possui seu próprio conjunto de sinalizadores disponíveis para diferentes usos da ferramenta.
$ gobuster -h Uso: gobuster [comando] Comandos disponíveis: dir Usa o modo de enumeração de diretório/arquivo dns Usa o modo de enumeração de subdomínio DNS fuzz Usa o modo fuzzing help Ajuda sobre qualquer comando s3 Usa o modo de enumeração de balde aws versão mostra a versão atual vhost Usa o modo de enumeração VHOST Bandeiras: --delay duration Tempo que cada thread espera entre as requisições (por exemplo, 1500ms) -h, --help ajuda para gobuster --no-error Não exibe erros -z, --no-progress Não exibe o progresso -o, --output string Arquivo de saída para gravar os resultados (o padrão é stdout) -p, --pattern string Arquivo contendo padrões de substituição -q, --quiet Não imprime o banner e outros ruídos -t, --threads int Número de threads simultâneos (padrão 10) -v, --verbose Saída detalhada (erros) -w, --wordlist string Caminho para a lista de palavras
listas de palavras
Gobuster precisa de listas de palavras. Uma das bandeiras essenciais para o gobuster é -w
. As listas de palavras podem ser obtidas em vários lugares. Dependendo da configuração individual, as listas de palavras podem ser pré-instaladas ou encontradas em outros pacotes, incluindo listas de palavras do Dirb ou Dirbuster. A fonte definitiva e "amigo dos pentesters" é SecLists - https://github.com/danielmiessler/SecLists , que é uma compilação de várias listas mantidas em um único local.
Comando Gobuster DIR
O modo DIR é usado para localizar diretórios e arquivos ocultos.
Para encontrar sinalizadores adicionais disponíveis para usogobuster dir --help
$ gobuster dir --help
Usa o modo de enumeração de diretório/arquivo Uso: gobuster dir [bandeiras] Bandeiras: -f, --add-slash Anexar / a cada solicitação -c, --cookies string Cookies a serem usados para as solicitações -d, --discover-backup Ao localizar um arquivo, procure por arquivos de backup --exclude-length ints exclui o seguinte comprimento de conteúdo (ignora completamente o status). Forneça várias vezes para excluir vários tamanhos. -e, --expanded Modo expandido, imprimir URLs completos -x, --extensions string Extensão(ões) de arquivo a serem pesquisadas -r, --follow-redirect Seguir redirecionamentos -H, --headers stringArray Especifica cabeçalhos HTTP, -H 'Header1: val1' -H 'Header2: val2' -h, --help ajuda para dir --hide-length Oculta o comprimento do corpo na saída -m, --method string Use o seguinte método HTTP (padrão "GET") -n, --no-status Não imprime códigos de status -k, --no-tls-validation Pular a verificação do certificado TLS -P, --password string Senha para autenticação básica --proxy string Proxy a ser usado para solicitações [http(s)://host:port] --random-agent Usa uma string aleatória de User-Agent -s, --status-codes string Códigos de status positivos (serão substituídos por status-codes-blacklist se definidos) -b, --status-codes-blacklist string Códigos de status negativos (substituirão os códigos de status se definidos) (padrão "404") --timeout duração HTTP Timeout (padrão 10s) -u, --url string A URL de destino -a, --useragent string Define a string User-Agent (padrão "gobuster/3.1.0") -U, --username string Nome de usuário para autenticação básica --wildcard Força a operação contínua quando o curinga é encontrado Bandeiras globais: --delay duration Tempo que cada thread espera entre as requisições (por exemplo, 1500ms) --no-error Não exibe erros -z, --no-progress Não exibe o progresso -o, --output string Arquivo de saída para gravar os resultados (o padrão é stdout) -p, --pattern string Arquivo contendo padrões de substituição -q, --quiet Não imprime o banner e outros ruídos -t, --threads int Número de threads simultâneos (padrão 10) -v, --verbose Saída detalhada (erros) -w, --wordlist string Caminho para a lista de palavras
Bandeiras
Os 2 sinalizadores necessários para executar uma verificação básica são -u
-w
. Este exemplo usa common.txt
as listas de palavras SecList.
user@matrix:$ gobuster dir -u https://example.com -w /wordlists/Discovery/Web-Content/common.txt Resultados de exemplo ==================================================== ============= Gobuster v3.1.0 por OJ Reeves (@TheColonial) e Christian Mehlmauer (@firefart) ==================================================== ============= [+] Url: https://example.com [+] Método: GET [+] Tópicos: 10 [+] Lista de palavras: /listas de palavras/Discovery/Web-Content/common.txt [+] Códigos de status negativos: 404 [+] Agente do usuário: gobuster/3.1.0 [+] Tempo limite: 10s ==================================================== ============= 01/03/2022 10:34:16 Iniciando gobuster no modo de enumeração de diretório ==================================================== ============= /ativos /css /download
Não muitos resultados e foi bastante pesado nos processos do sistema. Os resultados dependem da lista de palavras selecionada. Vale a pena descobrir qual é o melhor para o trabalho. O período de tempo depende do tamanho da lista de palavras. Também pode valer a pena criar uma lista de palavras específica para o trabalho em questão usando uma variedade de recursos.
Tópicos
O Gobuster é rápido, com centenas de solicitações sendo enviadas usando os 10 threads padrão. Essas velocidades podem criar problemas com o sistema em que está sendo executado. Pode ser benéfico reduzir para 4.
Além disso, pode ser útil usar o sinalizador --delay duration Time each thread waits between requests (e.g. 1500ms).
Por exemplo --delay 1s
, em outras palavras, se threads for definido como 4 e --delay como 1s, isso enviará 4 solicitações por segundo.
$ gobuster dir -u https://example.com -w /wordlists/Discovery/Web-Content/big.txt -t 4 --delay 1s -o results.txt
Resultados
Os resultados são mostrados no terminal ou use a -o
opção de enviar os resultados para um exemplo de arquivo-o results.txt
user@matrix:$ gobuster dir -u https://example.com -w /wordlists/Discovery/Web-Content/directory-list-2.3-small.txt -t 4 --delay 1s -o results.txt ==================================================== ============= Gobuster v3.1.0 por OJ Reeves (@TheColonial) e Christian Mehlmauer (@firefart) ==================================================== ============= [+] URL: https://example.co.uk/ [+] Método: GET [+] Tópicos: 4 [+] Atraso: 1s [+] Wordlist: /wordlists/Discovery/Web-Content/directory-list-2.3-small.txt [+] Códigos de status negativos: 404 [+] Agente do usuário: gobuster/3.1.0 [+] Tempo limite: 10s ==================================================== ============= 2022/03/08 12:12:19 Iniciando gobuster no modo de enumeração de diretório ==================================================== ============= /admin /aux ==================================================== ============= 2022/03/08 12:46:57 Concluído ==================================================== =============
Demorou um pouco, mas ao filtrar os resultados para um arquivo de saída, é fácil ver e reter para futuras enumerações o que foi localizado. . Mais alguns resultados interessantes desta vez.
Outros exemplos de sinalizadores DIR
Os resultados acima mostram os códigos de status. Para excluir códigos de status, use -n
user@matrix:$ gobuster dir -u https://example.com -w /wordlists/Discovery/Web-Content/big.txt -n -t 4 --delay 1s -o results.txt
Um exemplo de outro sinalizador a ser usado é o -x File extension(s) to search for
. Isso é para os momentos em que uma pesquisa por extensão ou extensões de arquivo específicas é especificada. Tal como, -x .php
ou outro apenas é necessário.
user@matrix:$ gobuster dir -u https://example.com -w /wordlists/Discovery/Web-Content/big.txt -x .php, .txt -t 4 --delay 1s -o results.txt
Continuar enumerando
Continue a enumerar os resultados para encontrar o máximo de informações possível. Execute o gobuster novamente com os resultados encontrados e veja o que mais aparece. Continue cavando para localizar esses diretórios ocultos.
$ gobuster dir -u https://example.com /aux -w /wordlists/Discovery/Web-Content/big.txt -t 4 --delay 1s -o results.txt
Comando Gobuster DNS
Use o DNS
comando para descobrir subdomínios com Gobuster. Para ver as opções e sinalizadores disponíveis especificamente para o uso do comando DNS:gobuster dns --help
user@matrix:$ gobuster dns --help Usa o modo de enumeração de subdomínio DNS Uso: gobuster dns [bandeiras] Bandeiras: -d, --domain string O domínio de destino -h, --help ajuda para dns -r, --resolver string Usar servidor DNS personalizado (formato server.com ou server.com:port) -c, --show-cname Mostra registros CNAME (não pode ser usado com a opção '-i') -i, --show-ips Mostrar endereços IP --tempo limite duração tempo limite do resolvedor de DNS (padrão 1s) --wildcard Força a operação contínua quando o curinga é encontrado Bandeiras globais: --delay duration Tempo que cada thread espera entre as requisições (por exemplo, 1500ms) --no-error Não exibe erros -z, --no-progress Não exibe o progresso -o, --output string Arquivo de saída para gravar os resultados (o padrão é stdout) -p, --pattern string Arquivo contendo padrões de substituição -q, --quiet Não imprime o banner e outros ruídos -t, --threads int Número de threads simultâneos (padrão 10) -v, --verbose Saída detalhada (erros) -w, --wordlist string Caminho para a lista de palavras
Exemplo de DNS
$ gobuster dns -q -r 8.8.8.8 -d example.com -w wordlists/Discovery/DNS/subdomains-top1million-5000.txt -t 4 --delay 1s -o results.txt"
Quebrando isso.
dns
mode-q
--quiet : Não imprime o banner e outros ruídos-r
--resolver string : Usa servidor DNS personalizado (formato server.com ou server.com:port)-d
--domain string-w
--wordlist string : Caminho para a wordlist-t
-- threads--delay
-- duração do atraso-o
--output string : Arquivo de saída para gravar os resultados (o padrão é stdout)
Usando outra das listas de palavras Seclistas /wordlists/Discovery/DNS/subdomains-top1million-5000.txt
.
Resultados
Neste caso, como -q
foi utilizado o sinalizador para modo silencioso, apenas os resultados são mostrados, o banner Gobuster e outras informações são removidos.
Encontrado: www.example.com Encontrado: nagios.example.com Encontrado: dev.example.com Encontrado: auto.example.com
A mesma pesquisa sem o sinalizador -q
obviamente dá os mesmos resultados - e inclui as informações do banner.
==================================================== ============= Gobuster v3.1.0 por OJ Reeves (@TheColonial) e Christian Mehlmauer (@firefart) ==================================================== ============= [+] Domínio: exemplo.com [+] Tópicos: 4 [+] Atraso: 1s [+] Resolvedor: 8.8.8.8 [+] Tempo limite: 1s [+] Lista de palavras: /home/listas de palavras/subdomínios-top1million-5000.txt ==================================================== ============= 18/03/2022 16:20:35 Iniciando gobuster no modo de enumeração de DNS ==================================================== ============= Encontrado: www.example.com Encontrado: nagios.example.com Encontrado: dev.example.com Encontrado: auto.example.com ==================================================== ============= 18/03/2022 16:20:37 Concluído ==================================================== =============
Comando Gobuster VHost
O comando vhost descobre nomes de hosts virtuais em servidores web de destino. A hospedagem virtual é uma técnica para hospedar vários nomes de domínio em um único servidor.
A exposição de nomes de host em um servidor pode revelar conteúdo complementar da Web pertencente ao destino. O Vhost verifica se os subdomínios existem visitando o URL formado e verificando o endereço IP.
Para hosts virtuais de força bruta, use as mesmas listas de palavras dos subdomínios DNS de força bruta.
Semelhante a subdomínios de força bruta, por exemplo. url = example.com, vhost procura dev.example.com ou beta.example.com etc.
Para opções e sinalizadores disponíveis, usegobuster vhost --help
user@matrix:$ gobuster vhost --help
Usa o modo de enumeração VHOST Uso: gobuster vhost [bandeiras] Bandeiras: -c, --cookies string Cookies a serem usados para as solicitações -r, --follow-redirect Seguir redirecionamentos -H, --headers stringArray Especifica cabeçalhos HTTP, -H 'Header1: val1' -H 'Header2: val2' -h, --help ajuda para vhost -m, --method string Use o seguinte método HTTP (padrão "GET") -k, --no-tls-validation Pular a verificação do certificado TLS -P, --password string Senha para autenticação básica --proxy string Proxy a ser usado para solicitações [http(s)://host:port] --random-agent Usa uma string aleatória de User-Agent --timeout duração HTTP Timeout (padrão 10s) -u, --url string A URL de destino -a, --useragent string Define a string User-Agent (padrão "gobuster/3.1.0") -U, --username string Nome de usuário para autenticação básica Bandeiras globais: --delay duration Tempo que cada thread espera entre as requisições (por exemplo, 1500ms) --no-error Não exibe erros -z, --no-progress Não exibe o progresso -o, --output string Arquivo de saída para gravar os resultados (o padrão é stdout) -p, --pattern string Arquivo contendo padrões de substituição -q, --quiet Não imprime o banner e outros ruídos -t, --threads int Número de threads simultâneos (padrão 10) -v, --verbose Saída detalhada (erros) -w, --wordlist string Caminho para a lista de palavras
Conforme mostrado acima, os sinalizadores globais são os mesmos de todos os modos. Novamente, os 2 sinalizadores essenciais são o -u
URL e -w
a lista de palavras. -o
Arquivo de saída e -t
threads não essenciais, mas úteis , -q
para o modo silencioso mostrar apenas os resultados.
Exemplo de Vhost
user@matrix:$ gobuster vhost -u https://example.com -t 50 -w /wordlists/Discovery/DNS/subdomains-top1million-5000.txt
Resultados
==================================================== ============= Gobuster v3.1.0 por OJ Reeves (@TheColonial) e Christian Mehlmauer (@firefart) ==================================================== ============= [+] Url: https://example.com [+] Método: GET [+] Tópicos: 4 [+] Lista de palavras: /listas de palavras/subdomínios-top1million-5000.txt [+] Agente do usuário: gobuster/3.1.0 [+] Tempo limite: 10s ==================================================== ============= 2022/03/22 10:21:38 Iniciando gobuster no modo de enumeração VHOST ==================================================== ============= Encontrado: auto.example.com (Status: 200) [Tamanho: 162] Encontrado: beta.example.com (Status: 200) [Tamanho: 162] Encontrado: apache.example.com (Status: 200) [Tamanho: 162] ==================================================== ============= 2022/03/22 10:21:39 Concluído ==================================================== =============
Conclusão
Gobuster é uma ferramenta útil para reconhecer e aumentar o conhecimento da superfície de ataque. Comece com uma lista de palavras de tamanho menor e vá para as maiores, pois os resultados dependerão da lista de palavras escolhida. Continue enumerando. Não pare em uma busca, é surpreendente o que está parado esperando para ser descoberto.
Comentários
Postar um comentário