DOE AGORA Qualquer valor

Gobuster tutorial

Gobuster tutorial

Você ficaria surpreso com o que as pessoas deixam desprotegido em um servidor web. Uma etapa inicial no ataque a um aplicativo da Web é o Recon, e parte disso envolve a enumeração de diretórios e arquivos ocultos. A força bruta de diretórios da Web e nomes de arquivos em um servidor da Web geralmente pode revelar aplicativos da Web desprotegidos, scripts, arquivos de configuração antigos e muitas outras coisas interessantes que não deveriam estar disponíveis ao público.

É até possível usar força bruta para encontrar hosts virtuais ocultos, vhostscomo sites de desenvolvimento ou portais de administração.

Gobuster é uma varredura agressiva. É barulhento e é notado. Use apenas em sistemas nos quais você tem permissão para verificar

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.0https://github.com/OJ/gobuster.git

captura de tela de informações sobre gobuster

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_profilediretó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 -hCada 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 é -wAs 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 -wEste exemplo usa common.txtas 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.

captura de tela das bandeiras globais do Gobuster destacando -t Threads

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 -oopçã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.

Saída dos resultados do Gobusters Dir

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 forIsso é 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.

Saída dos resultados do Gobusters Dir

$ 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 DNScomando 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.

dnsmode
-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 -qfoi 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 -qobviamente 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 -uURL e -wa lista de palavras. -oArquivo de saída e -tthreads não essenciais, mas úteis , -qpara 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
==================================================== =============
Para ver o Gobuster sendo usado, confira o passo a passo Ippsec do HTB Toby lançado em abril de 2022.

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

Ebook

Postagens mais visitadas