Voltar ao início

WriteUp Watcher — THM

Bom dia, boa tarde e boa noite a todos!!! Como estão? Neste post, trago o meu segundo writeup pro blog, espero que curtam e fiquem com vontade de fazer máquinas, tanto do THM quanto de qualquer outra plataforma 🙂

(Vale ressaltar que esta máquina possui 6 flags)

Começando pelo começo

Como começamos quase todas as máquinas, faremos um “port scan” no alvo (neste caso é o IP 10.10.188.228). Feito isto, são encontradas 3 portas abertas, sendo elas: 21,22 e 80.

Após essa descoberta, é intuitivo olhar a porta 80, para verificar a possibilidade de que um WEB site esteja rodando no alvo.

Com o site rodando na porta 80, com um simples fuzzing de diretórios, conseguimos acesso ao arquivo robots.txt, o qual contém o seguinte conteúdo:

Para pegar a primeira flag, basta entrar no arquivo flag_1.txt e copiar a flag dada.

Seguindo, é visto um outro arquivo, chamado secret_file_do_not_read.txt. Porém, como não temos a permissão de leitura dele, voltamos à página principal para dar uma olhada em como o site está funcionando.

Não demora muito para encontrarmos algo interessante e que é levado a um LFI. Na página principal, aparecem vários posts, e, quando entramos em algum, visualizamos que cada um está sendo consultado da seguinte forma: “http://IP_ALVO/post.php?post=ARQUIVO_php”.

Quando trocamos o parâmetro post para /etc/passwd, percebemos que o site possui uma vulnerabilidade de inclusão de arquivo, conhecida como LFI(Local File Inclusion).

Sabendo deste LFI, podemos retornar ao ponto do robots.txt e tentar visualizar o arquivo que não tínhamos permissão para ler: “secret_file_do_not_read.txt”.

Boa! Conseguimos ler este arquivo e ainda conseguimos uma credencial para acessar o FTP, que está na porta 21 que havíamos encontrado no “port scanning”.

Ao acessá-lo com as credenciais fornecidas, conseguimos obter a segunda flag.

Após pegar a segunda flag, continuamos para a terceira e, para pegar a terceira, precisamos entrar no sistema de alguma forma.

Como estamos em um FTP, podemos fazer uploads de arquivos de nossa própria máquina, só tem uma condição para isso, estarmos dentro do diretório files. É nele que possuímos a permissão de escrita e leitura de arquivos. Sabendo disso, que tal utilizarmos o LFI para ler um arquivo .php com uma shell reversa upada através do FTP?

Feito! Através do conhecimento do caminho de onde o FTP manda os arquivos, obtido através do arquivo /etc/passwd, conseguimos puxar o diretório files do FTP para ler este arquivo e conseguir uma shell reversa.

Agora que estamos com uma shell na máquina do alvo, basta encontrarmos a terceira flag da seguinte forma:

Agora é seguir em busca da quarta!

Quando escrevemos um comando utilizado para sabermos se temos algum privilégio para rodar determinado arquivo, nos deparamos com o seguinte resultado:

Desta forma, podendo ler a quarta flag e escalar para outro usuário, o chama-se “toby”.

Sabendo disto, lemos a pasta de crontab, que nos informa um arquivo bastante interessante.

Como a cada 1 minuto o mesmo é executado, conseguimos editar este arquivo e está sendo utilizado pelo usuário mat basta alterarmos este arquivo para receber uma shell, com isto, escalando para outro usuário (mat).

Beleza, conseguimos mais um!

Agora com o usuário mat sendo utilizado, é identificado uma nota na pasta home do mesmo:

E, novamente, conseguimos executar o arquivo will_script.py com privilégio do usuário will.

O script, escrito em python, conta com o seguinte conteúdo:

Tendo em vista que ele chama o pacote “cmd”, que está localizado na mesma pasta que o arquivo e temos permissão de escrita.

Basta editarmos este cmd.py e adicionar um comando de bash nele.

Adicionado o comando, só falta executar!

Bumm, estamos com o will agora 🙂

Por fim, prosseguiremos para a sexta flag enumerando um pouco mais.

Após a enumeração feita, percebe-se um arquivo incomum no diretório de backups, localizado na pasta padrão do linux /opt/:

É uma chave SSH encodada com base64!

Estando em base64, fica fácil, né? Vamos decodar e ver se é uma chave válida ou não.

Válida!!! Falta só testar se ela funciona para o usuário root, mas, antes de testar, salvaremos esta chave decodada em um arquivo e daremos permissão 600 para leitura especial da mesma (chmod 600 chave_decodada).

Agora, vamos testar e ver se funciona:

Funcionou!!! Conseguimos, finalmente, a sexta flag e pegamos root 🙂

Espero que tenham curtido a máquininha, é curta e simples, mas é divertida.

Se você, leitor, chegou até aqui, só tenho uma coisa a dizer: regula esse sono ai!

Novamente, bom dia, boa tarde e boa noite a todos!

Flw e Tmjjj!!!