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