Preignition Machine

Machine name: Preignition

Address: https://app.hackthebox.com/starting-point

Introdução

Em muitos ambientes, os servidores web desempenham um papel importante na infraestrutura e nos processos diários de vários departamentos. Embora possam ser usados apenas internamente por funcionários em alguns casos, a maioria dos servidores web está disponível publicamente, ou seja, qualquer pessoa na internet pode acessá-los para obter informações e arquivos das páginas hospedadas. Na maioria das vezes, as páginas web hospedadas nesses servidores são gerenciadas por meio de painéis administrativos, protegidos por uma tela de login. Vamos imaginar um exemplo: você decidiu criar seu próprio blog e usar o WordPress para isso. Caso não conheça o WordPress, pode aprender mais sobre ele aqui, mas basicamente, é uma aplicação web popular que permite gerenciar facilmente o conteúdo que você deseja publicar para o público. Após a instalação, seu site WordPress terá uma parte pública e outra privada, sendo esta última o painel administrativo, acessado em www.seusite.com/wp-admin. Essa página fica protegida por uma tela de login.

Se você for o administrador do site WordPress,e fizer o login no painel administrativo, terá acesso a uma série de controles, que variam desde mecanismos de upload de conteúdo até a seleção de temas, edição de scripts personalizados para páginas específicas e muito mais. Quanto mais você aprender sobre o WordPress, mais perceberá que isso é uma parte essencial de um pentest bem-sucedido, pois alguns desses mecanismos podem estar desatualizados e apresentar falhas críticas que permitiriam a um atacante obter acesso e, posteriormente e se mover pela rede com facilidade.

Assim, concluímos que a enumeração web, especificamente o directory busting (ou “dir busting”), é uma das habilidades mais importantes que qualquer testador de penetração deve ter. Embora a navegação manual em sites e o clique em todos os links disponíveis possam revelar alguns dados, muitos desses links e páginas podem não estar publicados para o público e, portanto, são menos seguros. Suponha que não soubéssemos que a página wp-admin é a seção administrativa do site WordPress que usamos como exemplo acima. Como poderíamos ter descoberto isso, se não fosse pela enumeração web e directory busting?

Enumeração

Como mencionado anteriormente, começamos verificando a conectividade com o alvo. Podemos pegar o endereço IP da máquina alvo na página do laboratório Starting Point e colá-lo no terminal, em seguida, executar o comando ping como primeiro passo. Após duas respostas bem-sucedidas, podemos interromper o comando ping, pois estamos satisfeitos com a qualidade da conexão. Não precisamos sempre executar comandos por um longo tempo.

Em seguida, podemos realizar uma varredura preliminar do alvo. Usando o nmap e a opção apropriada para detecção de versão de serviços, fazemos a varredura do endereço IP em busca de portas e serviços abertos.

A partir do resultado da varredura, uma única entrada chama nossa atenção. Trata-se de um serviço HTTP rodando na porta 80, indicando que este alvo pode estar hospedando algum conteúdo web explorável. Para visualizar o conteúdo, podemos abrir o navegador de nossa preferência e digitar o endereço IP do alvo na barra de URL no topo da janela. Isso direcionará automaticamente a comunicação cliente-servidor para a porta 80 e carregará o conteúdo da página web.

No topo da página, observamos a menção ao serviço nginx. Após pesquisarmos informações básicas sobre o nginx e seu propósito, concluímos que nosso alvo é um servidor web. Servidores web são hosts na rede do alvo com o objetivo exclusivo de fornecer conteúdo web para usuários internos ou externos, como páginas web, imagens, vídeos, arquivos de áudio e outros tipos. Normalmente, um servidor web é acessível pela Internet, permitindo que o conteúdo armazenado seja explorado pelo público online por diversos motivos: compras, fornecimento e solicitação de serviços, banco, leitura de notícias, entre outros.

O que estamos vendo em nossa tela do navegador é a página padrão pós-instalação do serviço nginx, o que significa que há uma possibilidade de que essa aplicação web ainda não tenha sido configurada adequadamente, ou que credenciais padrão estejam sendo usadas para facilitar uma configuração mais rápida até o momento da implantação ao vivo. Isso, no entanto, também significa que não há botões ou links na página web para nos ajudar na navegação entre diretórios web ou outros conteúdos.

Ao navegar em uma página web comum, usamos esses elementos para nos movimentar pelo site. No entanto, esses elementos são apenas links para outros diretórios que contêm outras páginas web, que são carregadas em nosso navegador como se tivéssemos navegado manualmente até elas usando a barra de pesquisa de URL no topo da tela do navegador. Sabendo disso, será que poderíamos tentar encontrar algum conteúdo “oculto” hospedado neste servidor web?

A resposta curta é sim, mas para evitar adivinhar URLs manualmente pela barra de pesquisa do navegador, podemos encontrar uma solução mais eficiente. Esse método é chamado de dir busting (ou “directory busting”). Para isso, usaremos a ferramenta chamada gobuster, que é escrita em Go. Caso você ainda não tenha o gobuster instalado em sua máquina, pode seguir as instruções abaixo para instalá-lo com sucesso.

Instalando o gobuster

Primeiro, é necessário garantir que o Go esteja instalado em sua distribuição Linux, pois é a linguagem de programação usada para escrever a ferramenta gobuster. Após garantir que todas as dependências do Go estejam atendidas, você pode prosseguir para o download e instalação do gobuster. Para instalar o Go, basta inserir o seguinte comando na janela do seu terminal:

sudo apt install golang-go

Depois que a instalação do Go estiver concluída, você pode prosseguir com a instalação do gobuster. Se o ambiente Go estiver pronto para uso (pelo menos a versão 1.19 do Go), você pode usar o gerenciador de pacotes apt para instalar o gobuster com o seguinte comando:

sudo apt install gobuster

Alternativamente, você também pode compilar a ferramenta a partir do código-fonte executando os seguintes comandos:

sudo git clone https://github.com/OJ/gobuster.git
cd gobuster
go get && go build
go install

Usando o gobuster

Para iniciarmos o dir busting, precisamos descobrir quais funcionalidades o gobuster oferece e quais delas podem nos ajudar. Ao visualizar a página de ajuda da ferramenta, digitando o comando gobuster --help no terminal, recebemos uma lista de todos os switches possíveis para a ferramenta e suas respectivas descrições.

No nosso caso, precisaremos usar apenas os seguintes:

dir: especifica que estamos usando o modo de directory busting da ferramenta.
-w: especifica uma wordlist, uma coleção de nomes comuns de diretórios que são frequentemente usados em sites.
-u: especifica o endereço IP do alvo.

Podemos usar a wordlist common.txt, que pode ser baixada a partir daqui.

wget https://github.com/danielmiessler/SecLists/raw/master/Discovery/WebContent/common.txt -O /usr/share/wordlists/common.txt

Na wordlist que utilizamos, a entrada admin.php estava presente, e, com base nos resultados acima, podemos ver que há de fato uma página com o mesmo nome no alvo. O que o gobuster fez aqui foi realizar várias tentativas de conexão com o alvo usando o método HTTP GET (solicitando páginas web do servidor) com diferentes variações de URL, como:

GET http://{target_IP}/kittens
GET http://{target_IP}/hackers
GET http://{target_IP}/admin.php
GET http://{target_IP}/hackthebox
GET http://{target_IP}/yourespecial

Foothold

Para navegar até o link recém-encontrado manualmente através do navegador, basta inserir o seguinte endereço na barra de URL. Ao prosseguir, somos direcionados a um painel administrativo do site. Ele solicita um nome de usuário e uma senha para passar pela verificação de segurança, o que pode ser problemático em circunstâncias normais.

Normalmente, em situações como essa, seria necessário utilizar ferramentas de força bruta para tentar fazer login com várias combinações de credenciais durante um período prolongado, até encontrarmos um conjunto válido. Isso ocorre porque não temos nenhum contexto prévio sobre os nomes de usuário e senhas que podem ter sido registrados nesse site como contas administrativas válidas. No entanto, primeiro podemos tentar a sorte com algumas credenciais padrão, já que esta é uma instalação recente do nginx. Estamos apostando que ela pode ter sido deixada sem configuração no momento de nossa análise. Vamos tentar fazer login com as seguintes credenciais:

user: admin
pass: admin

Parece que fomos bem-sucedidos! O login funcionou, e conseguimos acessar nossa flag.

Question 01: Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (ii) dir busting, (iii) hash cracking.

dir busting

Question 02: What switch do we use for nmap’s scan to specify that we want to perform version detection?

-sV

Question 03: What does Nmap report is the service identified as running on port 80/tcp?

http

Question 04: What server name and version of service is running on port 80/tcp?

Utilize a ferramenta nmap para descobrir o nome e as versões dos serviços que estão em execução.

nmap -sV -p 80 10.129.253.91 

nginx 1.14.2

Question 05: What switch do we use to specify to Gobuster we want to perform dir busting specifically?

dir

Question 06: What page is found during our dir busting activities?

Usando uma lista pequena, podemos descobrir uma página escondida:

gobuster dir -u http://10.129.253.91 -w /usr/share/seclists/Discovery/Web-Content/common.txt -t 10

admin.php

Question 07: What is the HTTP status code reported by Gobuster for the discovered page?

200

Question 08: Submit root flag

Agora, vamos abrir o site na página que encontramos

http://10.129.253.91/admin.php

Vamos tentar alguns usuários e senhas padrão:

  • admin
  • user
  • guest
  • administrator
  • root

6483bee07c1c1d57f14e5b0717503c73

Rolar para cima