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