Introdução
Na segurança de aplicações web, a descoberta de ficheiros e diretórios ocultos é um passo crítico na fase de reconhecimento. Muitas aplicações armazenam configurações sensíveis, controlo de versão ou variáveis de ambiente em ficheiros prefixados com um ponto (por exemplo, .env, .git, .htaccess). Estes ficheiros são frequentemente ocultos por defeito em exploradores de ficheiros e servidores web, tornando-os alvos menos óbvios. No entanto, se mal configurados, podem ser diretamente acessíveis através de um servidor web, levando a graves vulnerabilidades de divulgação de informações.
Gobuster é uma poderosa ferramenta de brute-forcing de diretórios e ficheiros que pode ser utilizada para descobrir estes ativos ocultos. Ao fornecer uma wordlist direcionada contendo nomes de ficheiros comuns prefixados com ponto, pode aumentar significativamente as suas hipóteses de encontrar informações valiosas que de outra forma poderiam passar despercebidas.
Este laboratório irá guiá-lo através do processo de utilização do Gobuster para direcionar e descobrir especificamente estes ficheiros ocultos prefixados com ponto. Aprenderá a preparar uma wordlist adequada, a executar uma análise com Gobuster e a interpretar os resultados para identificar potenciais riscos de segurança.
Compreender a Importância de Ficheiros com Prefixo Ponto (ex: .env, .git)
Neste passo, compreenderemos porque é que os ficheiros com prefixo ponto são importantes no contexto da segurança web. Ficheiros como .env, .git, .htaccess, .bashrc, ou .ssh são comumente utilizados em ambientes Linux e de desenvolvimento web para armazenar configurações, dados de controlo de versão, ou credenciais sensíveis.
- Ficheiros
.env: Estes ficheiros armazenam variáveis de ambiente, frequentemente incluindo credenciais de base de dados, chaves de API e outras configurações sensíveis da aplicação. Se expostos, podem conceder a um atacante acesso total aos sistemas de backend. - Diretórios
.git: Se um diretório.gitfor exposto num servidor web, pode permitir a um atacante descarregar todo o repositório de código fonte, incluindo o histórico de commits, ficheiros sensíveis que fizeram parte do repositório, e comentários internos. - Ficheiros
.htaccess: Utilizados por servidores web Apache para configurar definições a nível de diretório, incluindo autenticação, autorização e reescrita de URLs. Configurações incorretas ou exposição podem levar a bypasses ou divulgação de informações.
Embora estes ficheiros sejam tipicamente ocultos por defeito em exploradores de ficheiros e sejam frequentemente destinados a serem inacessíveis através de servidores web, configurações incorretas podem expô-los inadvertidamente. Descobri-los durante o reconhecimento pode fornecer insights críticos sobre a infraestrutura da aplicação alvo e potenciais vulnerabilidades.
Configurámos um servidor web simples em segundo plano para este laboratório, servindo conteúdo de /tmp/web_root. Este diretório contém um ficheiro .env oculto e um ficheiro .hidden_config, que tentaremos descobrir.
Criar ou Encontrar uma Wordlist Contendo Nomes de Ficheiros com Prefixo Ponto
Neste passo, prepararemos uma wordlist especificamente concebida para encontrar ficheiros com prefixo ponto. Embora existam muitas wordlists de propósito geral (como as do SecLists), criar uma direcionada pode ser mais eficiente para esta tarefa específica.
Criaremos uma wordlist simples chamada dotfiles.txt no seu diretório ~/project. Esta wordlist conterá nomes de ficheiros comuns com prefixo ponto que queremos que o Gobuster verifique.
Primeiro, navegue para o seu diretório de projeto:
cd ~/project
Agora, crie o ficheiro dotfiles.txt usando nano e adicione alguns nomes de ficheiros comuns com prefixo ponto.
nano dotfiles.txt
Dentro do nano, adicione as seguintes linhas:
.env
.git
.htaccess
.bashrc
.profile
.ssh
.hidden_config
Pressione Ctrl+S para guardar o ficheiro e Ctrl+X para sair do nano.
Pode verificar o conteúdo da wordlist usando cat:
cat dotfiles.txt
Deverá ver a lista de nomes de ficheiros com prefixo ponto que acabou de adicionar.
.env
.git
.htaccess
.bashrc
.profile
.ssh
.hidden_config
Esta wordlist será utilizada pelo Gobuster para fazer brute-force à existência destes ficheiros específicos no servidor web alvo.
Executar um Scan gobuster dir com Esta Wordlist Específica
Neste passo, executaremos um scan gobuster dir utilizando a wordlist dotfiles.txt que criámos. Teremos como alvo o servidor web dummy a correr em http://127.0.0.1:8000.
A sintaxe básica para gobuster dir é:
gobuster dir -u <target_url> -w <wordlist_path>
Aqui, -u especifica a URL alvo, e -w especifica o caminho para a wordlist.
Execute o seguinte comando no seu terminal:
gobuster dir -u http://127.0.0.1:8000 -w ~/project/dotfiles.txt
Vamos analisar o comando:
gobuster dir: Especifica que queremos realizar um scan de brute-force de diretórios/ficheiros.-u http://127.0.0.1:8000: Define a URL alvo para o nosso servidor web dummy local.-w ~/project/dotfiles.txt: Indica ao Gobuster para usar a nossa wordlist personalizadadotfiles.txt.
Após executar o comando, o Gobuster começará a iterar através da wordlist e a fazer requisições ao servidor alvo. Deverá ver uma saída semelhante a esta, indicando os ficheiros descobertos:
===============================================================
Gobuster vX.X.X.X-XXXXX Linux/amd64
===============================================================
[+] Url: http://127.0.0.1:8000
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /home/labex/project/dotfiles.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/X.X.X
[+] Timeout: 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/.env (Status: 200) [Size: 20]
/.hidden_config (Status: 200) [Size: 27]
===============================================================
2024/01/01 12:00:00 Finished
===============================================================
Como pode ver, o Gobuster identificou com sucesso os ficheiros .env e .hidden_config, ambos retornando um status 200 OK, indicando que estão acessíveis.
Utilizar a Flag --no-error para Ocultar Erros de Conexão
Neste passo, aprenderemos sobre a flag --no-error no Gobuster. Ao realizar scans, especialmente contra alvos instáveis ou ao lidar com problemas de rede, o Gobuster pode gerar muitas mensagens de erro de conexão. Estes erros podem poluir a saída e dificultar a identificação de descobertas legítimas.
A flag --no-error instrui o Gobuster a suprimir estas mensagens de erro relacionadas com a conexão, fornecendo uma saída mais limpa focada nas descobertas bem-sucedidas.
Vamos executar novamente o scan do Gobuster, desta vez incluindo a flag --no-error. Embora o nosso servidor local atual seja estável, esta flag é muito útil em cenários do mundo real.
gobuster dir -u http://127.0.0.1:8000 -w ~/project/dotfiles.txt --no-error
Notará que a saída é semelhante ao passo anterior, pois não houve erros de conexão para suprimir no nosso ambiente local estável. No entanto, num cenário do mundo real com muitas requisições e potenciais problemas de rede, esta flag reduziria significativamente o ruído.
O principal objetivo desta flag é melhorar a legibilidade dos resultados do scan, filtrando mensagens de erro irrelevantes, permitindo-lhe concentrar-se nas descobertas reais (por exemplo, respostas 200 OK).
Analisar os Resultados para Divulgação de Ficheiros Sensíveis
Neste passo final, analisaremos os resultados obtidos do scan do Gobuster e compreenderemos as implicações da descoberta de tais ficheiros.
Da saída do nosso scan anterior do Gobuster, encontrámos:
/.env(Status: 200) [Size: 20]/.hidden_config(Status: 200) [Size: 27]
Um código de status 200 OK indica que o ficheiro foi encontrado e é acessível através do servidor web. Esta é uma descoberta crítica.
Para demonstrar o impacto, vamos tentar aceder ao ficheiro .env diretamente usando curl:
curl http://127.0.0.1:8000/.env
Deverá ver o conteúdo do ficheiro .env:
DB_PASSWORD=supersecret
Isto mostra claramente que informações sensíveis (uma palavra-passe de base de dados neste caso) foram expostas. Num cenário do mundo real, um atacante poderia usar esta informação para obter acesso não autorizado a bases de dados ou outros sistemas de backend.
Da mesma forma, pode tentar aceder ao ficheiro .hidden_config:
curl http://127.0.0.1:8000/.hidden_config
Saída:
This is another hidden file.
Embora este ficheiro específico possa não conter dados altamente sensíveis, a sua descoberta indica uma potencial má configuração onde ficheiros destinados a serem ocultos são publicamente acessíveis. Isto poderia levar a uma maior enumeração e descoberta de ativos mais críticos.
Principais Conclusões:
- Verifique sempre a existência de ficheiros precedidos por ponto durante a reconhecimento web.
- A presença de tais ficheiros com status
200 OKé um forte indicador de divulgação de informações. - Desenvolvedores e administradores de sistemas devem garantir que ficheiros sensíveis nunca sejam diretamente acessíveis através de um servidor web, tipicamente configurando regras do servidor (por exemplo, blocos
locationdo Nginx, diretivasDirectorydo Apache) ou colocando-os fora da raiz web.
Este exercício destaca a importância de um reconhecimento completo e o poder de ferramentas como o Gobuster na descoberta de vulnerabilidades ocultas.
Resumo
Neste laboratório, aprendeu com sucesso como usar o Gobuster para descobrir ficheiros e diretórios ocultos precedidos por um ponto. Começou por compreender a importância de tais ficheiros, que frequentemente contêm informações sensíveis como variáveis de ambiente ou dados de controlo de versão.
Em seguida, criou uma wordlist direcionada contendo nomes de ficheiros comuns precedidos por ponto e utilizou-a para realizar um scan gobuster dir contra um servidor web simulado. Observou como o Gobuster identificou eficazmente ficheiros ocultos acessíveis como .env e .hidden_config. Além disso, aprendeu sobre a flag --no-error para limpar a saída do scan suprimindo erros de conexão.
Finalmente, analisou os resultados, demonstrando como o acesso direto a um ficheiro .env pode levar à divulgação de credenciais críticas. Este laboratório enfatizou a importância de incluir a enumeração de dot-files na sua metodologia de reconhecimento para descobrir potenciais vulnerabilidades de divulgação de informações em aplicações web.
Ao dominar esta técnica, está mais bem equipado para identificar e reportar riscos de segurança que de outra forma poderiam passar despercebidos.
