Resolução da maquina“MR. ROBOT CTF” — TryHackMe — por LipeOzyy
“Hello friend”
Olá! Hoje venho trazer a resolução de um CTF inspirado em uma das séries que mais gosto, Mr. Robot. É uma máquina disponível no site TryHackMe, classificada como nível “Médio”. Espero que a minha resolução seja bem esclarecedora. Então… vamos começar.
Task 1- Levantamento de informações:
Como sempre,inicio dando um ping na máquina para verificar se existe conexão.
Ok, depois de verificar a conexão, rodei um Nmap para fazer uma varredura de portas na máquina. Como de costume, gosto de usar os seguintes parâmetros na varredura:
sS: O Nmap envia um pacote SYN (o primeiro passo do processo de handshake TCP) para as portas do alvo.
sV: Tenta determinar a versão exata desse serviço
v: Verbosidade
Depois de executar esse comando, tive essa saida como resultado:
Podemos observar que está rodando uma aplicação web na porta 80. Ao abrir no navegador, me deparei com um site temático da série.
O site simula um terminal com alguns comandos disponíveis. Explorando, não encontrei nada muito interessante, apenas um site temático. Então, decidi rodar um Gobuster para tentar encontrar outros diretórios disponíveis.
Após rodar o Gobuster, descobri inúmeros diretórios. Explorando um por um, encontrei esse:
Decidi explorar esse diretório mais tarde; antes, fui verificar se o arquivo robots.txt estava disponível.
Uau, aqui está a primeira chave da nossa máquina. Essa foi fácil… Me parece suspeito. Junto veio esse arquivo denominado fsocity.dic, e, quando baixei o arquivo, vi que era uma espécie de wordlist gigante... Parece uma pista.
Voltando ao diretório anterior, o /wp-admin, encontrei a seguinte página de login
Aqui irei usar o Burp Suite, uma ferramenta utilizada para interceptar e analisar o tráfego HTTP/HTTPS entre o navegador e o servidor, facilitando a identificação de vulnerabilidades como SQL Injection, Cross-Site Scripting (XSS), e falhas de autenticação
Coloquei algumas credenciais padrão e ativei o Burp Suite para capturar o método POST:
Então, com o método POST em mãos e uma wordlist fornecida pela própria máquina, resolvi executar um ataque de força bruta com a ferramenta Hydra, passando os seguintes parâmetros:
hydra -L fsocity.dic -p test <ip alvo> http-post-form "/wp-login/:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2Fmrrobot.thm%2Fwp-admin%2F&testcookie=1:F=Invalid username"
Primeiro, para encontrar o usuário, usei o -L para tentar encontrá-lo por meio da wordlist e um -p para definir a senha.
Ok, depois de um tempo o Hydra encontrou o usuário Elliot. Agora só precisamos da senha. Para isso, basta inverter os parâmetros de usuário e senha, desta forma:
Agora que o usuário está estabelecido, só precisamos da senha.
e BOOM… conseguimos.
Estamos dentro… Bom, após efetuar o login me deparei com a seguinte página:
Está rodando um WordPress 4.3.1, dando uma pesquisada no Google para tentar achar algumas vulnerabilidades, descobri que seria possivel realizar um shell reverso. Uma maneira muito comum de fazer isso é editar o tema e alterá-lo para um shell reverso.
Para quem quiser se aprofundar aqui esta o link:
Pesquisando por um Shell reverso para usar aqui, encontrei o seguinte Shell em PHP:
Após alterar a porta e o ip, já deixei meu Netcat preparado na porta 443 que defini, e executei o Shell na aplicação. Obtive o seguinte resultado:
Conseguimos conexão! Para conseguir mais estabilidade executei o seguinte comando:
python -c 'import pty; pty.spawn("/bin/bash")'
Esse comando em Python é utilizado para criar uma shell interativa de bash em um ambiente onde o terminal pode não estar configurado corretamente. Isso é útil em situações de escalonamento de privilégios ou quando você está trabalhando com uma shell restrita.
Navegando pelos diretórios, encontrei a segunda chave no caminho /home/robot
Além da segunda chave, que, surpreendentemente, não tenho permissão de leitura, também encontrei um arquivo em MD5 bruto. Ao executar o comando cat, obtive o seguinte resultado:
Jogando no clássico site CrackStation, consegui a saída:
Possivelmente, isso é a senha do nosso usuário ROBOT, que tem permissão de leitura da nossa segunda chave. Então, executei o comando su robot e usei a hash como senha:
EDeu certo! Agora precisamos buscar privilégios elevados
Uma abordagem comum para obter acesso root é procurar por bits SUID. Isso essencialmente permite que o programa seja executado com as permissões do proprietário do arquivo. Quando um arquivo executável tem o bit SUID configurado, qualquer usuário que execute esse arquivo fará isso com as permissões do proprietário do arquivo. Por exemplo, se um arquivo pertencente ao usuário root tiver o bit SUID ativado, qualquer usuário que executar o arquivo poderá fazê-lo com permissões de root. Irei deixar aqui mais informações disponiveis:
find / -perm /4000 2>/dev/null
Após executar o comando, descobri que o Nmap tem SUID de propriedade root, então executei o comando:
O parâmetro -interactive do Nmap ativa uma sessão interativa, permitindo a execução de comandos e ajustes em tempo real diretamente no Nmap. Com isso em mente executei um !ls, e procurei por !ls /root:
E AQUI ESTÁ!! Nossa terceira e ultima chave, agora basta executar o comando !cat, para ler o conteúdo!!!
Bom, pessoal, fico por aqui. O CTF foi realmente divertido, e eu me senti como o próprio Elliot resolvendo essa máquina ;). Espero que tenham gostado da minha resolução! Até a próxima.