🌶️Startup

Olá, viajante! Neste artigo, trago um write-up do desafio Startup, da plataforma TryHackMe.

Reconhecimento

Ao realizar um portscan básico, encontrei as seguintes portas abertas:

PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
80/tcp open  http

Analisando a aplicação web, não encontrei nada relevante.

Página inicial

Olhando o código-fonte, também não encontrei nada muito interessante.

Código-fonte da página inicial

Enquanto a enumeração de subdiretórios com o gobuster ainda não foi concluída, analisei o serviço FTP e notei que o servidor permite login anônimo.

Captura de banner do serviço de FTP

Realizei o download dos arquivos acima e notei que a imagem important.jpg, na verdade, não é tão importante assim.

😄

Porém, no arquivo notice.txt, temos um possível nome de usuário.

Retomando a enumeração de diretórios, encontrei o diretório /files.

Diretório encontrado durante a enumeração

Exploração

Tenho acesso ao serviço FTP e a um diretório de arquivos... Posso tentar subir uma shell reversa através do serviço FTP.

Success!

Tentarei obter uma shell full TTY através do Python.

Shell full TTY obtida

Agora posso checar por arquivos e, ao realizar tal procedimento, encontrei a primeira flag.

Captura da primeira flag

Analisando os arquivos em maior profundidade, encontrei uma pasta chamada incidents e, dentro dela, um arquivo de extensão .pcapng.

Arquivo interessante encontrado

Realizando a cópia do arquivo para a minha máquina via scp e analisando o arquivo com o Wireshark, encontrei um pacote que continha uma possível (e aparente) senha.

Captura do pacote contendo uma possível senha

Movimentação Lateral

Analisando a pasta /home para verificar a existência de outros usuários, encontrei outro usuário. Agora com um nome de usuário genuíno e uma possível senha, posso tentar realizar uma movimentação lateral.

Captura da segunda flag

Escalação de Privilégio

Analisando a pasta scripts, encontrei um script em shell chamado planner.sh, pertencente ao usuário root mas com permissão de execução para qualquer usuário.

Scripts pertencentes ao usuário root e suas permissões
Conteúdo do script planner.sh

O script acima basicamente envia o conteúdo da variável LIST para dentro do arquivo /scripts/startup_list.txt e, após o envio, executa o script /etc/print.sh, ao qual investigarei agora.

Dono do script /etc/print.sh é o usuário que estou utilizando no momento. Good news

Checando o conteúdo do script, trata-se apenas de uma chamada de shell e a exibição de uma mensagem de conclusão.

Checando executáveis com permissão SUID, encontrei o executável crontab. Apontarei o script planner.sh no crontab do usuário que acessei para tentar obter uma shell reversa com permissões elevadas.

Configuração do crontab para o script planner.sh
Escalação de privilégio via crontab
Captura da última flag

Last updated