Introdução
Em testes de penetração de aplicações web ou auditorias de segurança, é comum encontrar áreas de um website que só são acessíveis após um utilizador ter autenticado. Ferramentas de scanning de diretórios padrão como o Gobuster podem perder estes caminhos ocultos porque não mantêm uma sessão. Este laboratório irá guiá-lo através do processo de utilização da funcionalidade de cookies do Gobuster para realizar scans de diretórios autenticados. Aprenderá a obter um cookie de sessão de uma aplicação web e, em seguida, a utilizar esse cookie com o Gobuster para descobrir diretórios e ficheiros em secções autenticadas, proporcionando uma visão mais abrangente da superfície de ataque da aplicação.
Iniciar Sessão numa Aplicação Web e Obter um Cookie de Sessão
Nesta etapa, irá simular o início de sessão numa aplicação web e capturar o cookie de sessão que é definido após a autenticação bem-sucedida. Este cookie é crucial para que o Gobuster aceda a áreas autenticadas. Utilizaremos o curl para realizar o login e extrair o cookie.
Primeiro, vamos tentar aceder ao dashboard sem autenticação para ver que somos redirecionados:
curl -v http://localhost:8080/dashboard
Deverá ver um 302 Found a redirecioná-lo de volta para /. Agora, vamos iniciar sessão. A aplicação web tem um formulário de login simples em http://localhost:8080/ com o nome de utilizador user e a palavra-passe password. Enviaremos um pedido POST para /login com estas credenciais.
curl -v -X POST -d "username=user&password=password" http://localhost:8080/login
Na saída, procure o cabeçalho Set-Cookie. Deverá parecer algo como Set-Cookie: session=authenticated_session_id_12345; Path=/. O valor authenticated_session_id_12345 é o seu cookie de sessão. Tome nota deste valor.
Agora, vamos tentar aceder ao dashboard utilizando o cookie obtido. Substitua YOUR_COOKIE_VALUE pelo valor real do cookie que encontrou.
curl -v --cookie "session=authenticated_session_id_12345" http://localhost:8080/dashboard
Deverá agora ver o conteúdo da página do dashboard, indicando acesso autenticado bem-sucedido.
Construir um Comando gobuster dir para uma Área Autenticada
Nesta etapa, irá preparar o comando básico gobuster dir. Teremos como alvo a área autenticada da aplicação web. O URL base para o nosso scan autenticado será http://localhost:8080/authenticated/. Utilizaremos uma wordlist comum para brute-forcing de diretórios.
Primeiro, vamos garantir que o Gobuster está instalado.
gobuster version
Deverá ver as informações da versão. Se não vir, consulte a secção de configuração.
Agora, vamos construir o comando básico gobuster dir. Utilizaremos a flag -u para o URL e -w para a wordlist. Para este laboratório, utilizaremos uma pequena wordlist integrada para fins de demonstração, ou poderá especificar uma comum como common.txt se estiver disponível no seu sistema. Se common.txt não for encontrada, poderá criar uma pequena wordlist personalizada para testes.
Vamos criar uma pequena wordlist para este laboratório:
echo -e "secret_dir\nadmin\nconfig\nbackup\nusers" > ~/project/wordlist.txt
Agora, o comando básico sem o cookie seria assim:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt
Se executar este comando agora, provavelmente não encontrará o secret_dir porque este requer autenticação. A próxima etapa adicionará o cookie a este comando.
Utilizar a Flag -c para Fornecer o Cookie de Sessão
Nesta etapa, irá integrar o cookie de sessão que obteve na Etapa 1 no seu comando Gobuster utilizando a flag -c. Esta flag permite ao Gobuster incluir o cookie especificado nos seus pedidos, permitindo-lhe aceder a áreas autenticadas.
Recorde o valor do cookie que obteve na Etapa 1, que foi session=authenticated_session_id_12345.
A flag -c espera o cookie no formato chave=valor. Assim, a nossa string de cookie será "session=authenticated_session_id_12345".
Agora, combine isto com o comando da Etapa 2:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"
Este comando instrui o Gobuster a realizar uma scan de diretórios em http://localhost:8080/authenticated/, utilizando a wordlist fornecida e, crucialmente, incluindo o cookie session=authenticated_session_id_12345 em cada pedido. Isto permitirá ao Gobuster contornar a barreira de autenticação e descobrir recursos dentro da área protegida.
Antes de executar, verifique novamente se o seu valor de cookie está correto.
Executar a Scan
Agora que construiu o comando Gobuster completo, é hora de o executar e observar os resultados. Esta scan tentará encontrar diretórios e ficheiros na secção autenticada da aplicação web.
Execute o comando que preparou na etapa anterior:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"
O Gobuster iniciará a scan e exibirá o seu progresso. Preste muita atenção à saída. Deverá ver entradas que indicam diretórios ou ficheiros encontrados com um Status: 200 (OK) ou Status: 301 (Moved Permanently) ou Status: 302 (Found), o que significa que o recurso foi acedido com sucesso ou redirecionado.
Exemplo de saída:
===============================================================
Gobuster vX.X.X
===============================================================
[+] Url: http://localhost:8080/authenticated/
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Threads: 10
[+] Timeout: 10s
[+] User Agent: gobuster/X.X.X
[+] Cookies: session=authenticated_session_id_12345
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/secret_dir (Status: 200) [Size: 100]
===============================================================
2024/01/01 12:00:05 Finished
===============================================================
Note como /secret_dir é encontrado com um Status: 200. Isto indica que o Gobuster acedeu com sucesso a este diretório porque estava a enviar o cookie de autenticação. Sem o cookie, este diretório provavelmente não seria encontrado ou retornaria um status de redirecionamento/não autorizado.
Analisar os Resultados para Encontrar Páginas Acessíveis Apenas Quando Autenticado
Nesta etapa final, irá analisar a saída da sua scan Gobuster para identificar recursos que foram descobertos com sucesso na área autenticada. A chave é procurar por entradas que retornaram um Status: 200 (OK) ou outros códigos de sucesso, que normalmente seriam inacessíveis sem o cookie de sessão.
Da saída da etapa anterior, deverá ter visto algo semelhante a:
/secret_dir (Status: 200) [Size: 100]
Esta linha indica que o Gobuster encontrou com sucesso o caminho /secret_dir dentro do URL http://localhost:8080/authenticated/, e retornou um status HTTP 200 OK. Este é um forte indicador de que este diretório é acessível quando autenticado.
Para confirmar, pode tentar aceder a este caminho diretamente utilizando curl sem o cookie:
curl http://localhost:8080/authenticated/secret_dir
Deverá ser redirecionado para a página de login ou receber uma mensagem de não autorizado.
Agora, tente aceder com o cookie:
curl --cookie "session=authenticated_session_id_12345" http://localhost:8080/authenticated/secret_dir/hidden_file.html
Deverá ver o conteúdo de hidden_file.html, confirmando que este caminho é de facto acessível apenas com o cookie de autenticação correto.
Este processo demonstra como a utilização de cookies com o Gobuster pode revelar partes ocultas de uma aplicação web que são visíveis apenas para utilizadores autenticados, expandindo significativamente o âmbito da sua avaliação de segurança.
Resumo
Neste laboratório, aprendeu com sucesso como realizar scans de diretórios autenticados utilizando o Gobuster. Começou por fazer login numa aplicação web simulada e extrair um cookie de sessão. Em seguida, construiu um comando Gobuster que incluía este cookie utilizando a flag -c. Ao executar este comando, conseguiu descobrir um diretório oculto (/secret_dir) que só era acessível a utilizadores autenticados. Esta técnica é inestimável para profissionais de segurança e desenvolvedores que precisam de auditar exaustivamente aplicações web, garantindo que todos os caminhos acessíveis, mesmo aqueles por trás da autenticação, são devidamente identificados e protegidos.
