Use Autenticação HTTP Básica no Gobuster

Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a usar efetivamente o Gobuster, uma popular ferramenta de brute-forcing de diretórios e arquivos, quando um servidor web alvo é protegido por Autenticação HTTP Básica (Basic HTTP Authentication). Muitas aplicações web e interfaces administrativas usam Autenticação HTTP Básica para restringir o acesso a certos recursos. Sem fornecer credenciais válidas, o Gobuster normalmente seria incapaz de descobrir esses caminhos protegidos. Este laboratório irá guiá-lo através do processo de identificação de tais alvos, entendendo como fornecer o nome de usuário e a senha necessários ao Gobuster e enumerar com sucesso diretórios e arquivos protegidos. Ao final deste laboratório, você será proficiente no uso das flags de autenticação do Gobuster para contornar restrições de acesso básicas e descobrir conteúdo web oculto.

Identificar um Alvo Protegido por Autenticação HTTP Básica

Nesta etapa, você identificará um diretório de servidor web que é protegido por Autenticação HTTP Básica (Basic HTTP Authentication). Configuramos um servidor web Apache local com um diretório protegido /protected_area. Ao tentar acessar este diretório sem credenciais, o servidor solicitará um nome de usuário e senha.

Primeiro, vamos tentar acessar o diretório protegido usando curl sem fornecer quaisquer credenciais. Isso demonstrará o desafio de autenticação.

Abra seu terminal e execute o seguinte comando:

curl http://localhost/protected_area/

Você deverá ver uma saída semelhante a esta, indicando uma resposta 401 Unauthorized e um cabeçalho WWW-Authenticate:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Esta saída confirma que o /protected_area é protegido por Autenticação HTTP Básica.

Em seguida, vamos tentar acessar um arquivo dentro deste diretório protegido, secret.txt, para confirmar que ele também está protegido.

curl http://localhost/protected_area/secret.txt

Você receberá uma resposta 401 Unauthorized semelhante. Isso confirma que qualquer recurso dentro de /protected_area requer autenticação.

Obter o Nome de Usuário e a Senha

Em um cenário do mundo real, obter o nome de usuário e a senha para Autenticação HTTP Básica pode envolver várias técnicas, como engenharia social, phishing ou brute-forcing. Para fins deste laboratório, pré-configuramos as credenciais para a área protegida.

O nome de usuário é labexuser e a senha é labexpassword.

Você pode verificar essas credenciais usando curl com a flag -u, que permite fornecer o nome de usuário e a senha diretamente.

Execute o seguinte comando para acessar o diretório protegido com as credenciais corretas:

curl -u labexuser:labexpassword http://localhost/protected_area/

Agora você deverá ver uma resposta bem-sucedida, provavelmente uma listagem de diretório vazia ou uma página de índice padrão, se uma existisse. Como não há index.html em /protected_area, você pode ver um 403 Forbidden ou uma listagem de diretório se os Indexes estiverem habilitados. O importante é que você não recebeu um erro 401 Unauthorized.

Agora, tente acessar o arquivo secret.txt dentro do diretório protegido usando as credenciais:

curl -u labexuser:labexpassword http://localhost/protected_area/secret.txt

Agora você deverá ver o conteúdo do arquivo secret.txt:

This is a secret file.

Isso confirma que o nome de usuário e a senha fornecidos estão corretos e concedem acesso aos recursos protegidos.

Usar a Flag -U para o Nome de Usuário

Nesta etapa, você aprenderá como especificar o nome de usuário para Autenticação HTTP Básica no Gobuster usando a flag -U. Esta flag é crucial quando você conhece o nome de usuário, mas pode estar tentando adivinhar a senha por força bruta ou simplesmente precisa fornecer o nome de usuário como parte do processo de autenticação.

Primeiro, vamos tentar uma varredura com o Gobuster sem nenhuma autenticação para ver seu comportamento contra o diretório protegido. Usaremos uma pequena wordlist para demonstração.

Crie um arquivo de wordlist simples chamado common.txt no seu diretório ~/project:

echo -e "admin\nuser\nprotected_area\nsecret.txt" > ~/project/common.txt

Agora, execute o Gobuster contra http://localhost usando esta wordlist, mas sem autenticação:

gobuster dir -u http://localhost -w ~/project/common.txt

Você notará que o Gobuster provavelmente relatará 401 Unauthorized para a entrada /protected_area, indicando que não pode acessá-la sem credenciais.

/protected_area       (Status: 401) [Size: 399]

Agora, vamos usar a flag -U para especificar o nome de usuário labexuser. Ainda omitiremos a senha por enquanto para demonstrar o efeito de apenas o nome de usuário.

gobuster dir -u http://localhost -w ~/project/common.txt -U labexuser

Mesmo com o nome de usuário fornecido, o Gobuster ainda receberá uma resposta 401 Unauthorized porque a senha também é necessária. Esta etapa demonstra principalmente a sintaxe para fornecer o nome de usuário.

/protected_area       (Status: 401) [Size: 399]

Isso mostra que, embora o nome de usuário seja aceito, a autenticação ainda falha sem a senha correta.

Usar a Flag -P para a Senha

Nesta etapa, você aprenderá como especificar a senha para Autenticação HTTP Básica no Gobuster usando a flag -P. Esta flag, combinada com a flag -U, permite que o Gobuster realize varreduras autenticadas.

Continuando da etapa anterior, sabemos que o nome de usuário é labexuser e a senha é labexpassword. Agora, vamos adicionar a flag -P para fornecer a senha.

Execute o seguinte comando Gobuster, incluindo ambas as flags de nome de usuário (-U) e senha (-P):

gobuster dir -u http://localhost -w ~/project/common.txt -U labexuser -P labexpassword

Observe a saída com atenção. Desta vez, quando o Gobuster encontrar /protected_area, ele deverá ser capaz de autenticar com sucesso e relatar um status 200 OK ou 403 Forbidden (dependendo das configurações de listagem de diretório), em vez de 401 Unauthorized.

/protected_area       (Status: 403) [Size: 277]

O status 403 Forbidden indica que o acesso foi concedido (autenticação bem-sucedida), mas o servidor está configurado para proibir listagens de diretório. Esta é uma autenticação bem-sucedida, em oposição ao 401 Unauthorized que vimos anteriormente.

Isso demonstra que, ao fornecer tanto o nome de usuário quanto a senha, o Gobuster pode autenticar com sucesso contra a Autenticação HTTP Básica e prosseguir com sua força bruta de diretório.

Execute a Varredura e Acesse Recursos Protegidos

Nesta etapa final, você executará uma varredura completa com o Gobuster contra a área protegida, garantindo que ele possa descobrir o arquivo secret.txt. Isso demonstra a aplicação prática do uso de Autenticação HTTP Básica com o Gobuster para desvendar recursos ocultos.

Modificaremos a URL de destino para escanear especificamente dentro de /protected_area e usaremos uma wordlist que inclua secret.txt.

Primeiro, vamos garantir que nossa wordlist common.txt contenha secret.txt. Se você a criou na Etapa 3, ela já deve estar lá.

Agora, execute o Gobuster visando http://localhost/protected_area/ com o nome de usuário e senha corretos:

gobuster dir -u http://localhost/protected_area/ -w ~/project/common.txt -U labexuser -P labexpassword

Após a conclusão da varredura, você deverá ver uma saída semelhante a esta, indicando que secret.txt foi encontrado com um status 200 OK:

/secret.txt           (Status: 200) [Size: 21]

Isso confirma que o Gobuster autenticou com sucesso e descobriu o arquivo secret.txt dentro do diretório protegido.

Você agora pode verificar o conteúdo do arquivo descoberto usando curl com as credenciais:

curl -u labexuser:labexpassword http://localhost/protected_area/secret.txt

Você deverá ver:

This is a secret file.

Isso conclui o laboratório. Você aprendeu com sucesso como usar o Gobuster com Autenticação HTTP Básica para descobrir recursos web protegidos.

Resumo

Neste laboratório, você adquiriu experiência prática no uso do Gobuster para enumerar diretórios e arquivos em servidores web protegidos por Autenticação HTTP Básica. Você começou identificando um alvo protegido e compreendendo a resposta 401 Unauthorized. Em seguida, aprendeu como fornecer o nome de usuário e senha necessários ao Gobuster usando as flags -U e -P. Finalmente, você executou com sucesso uma varredura autenticada, demonstrando a capacidade do Gobuster de descobrir recursos ocultos como secret.txt dentro de uma área protegida. Esta habilidade é crucial para testadores de penetração e profissionais de segurança ao lidar com aplicações web que empregam mecanismos de autenticação básicos.