Trickster
Resumo
Essa máquina permite acesso inicial ao identificar um diretório .git exposto, e utilizar uma CVE para obter acesso como www-data. Após isso, é necessário escalar privilégios lateralmente por meio de um pivoting para um docker executando o serviço ChangeDetection.io, e utilizar uma outra CVE para obter uma shell ao docker em execução. No docker, estão disponíveis arquivos de backup do ChangeDetection, os quais ao serem restaurados acabam revelando as credenciais do usuário adam. Como usuário adam, está disponível a execução de um software de manipulação de arquivos de impressora 3D como root. Entretanto, esse software é vulnerável a um exploit que permite a execução arbitrária de comandos, o que permite escalar privilégios como root e obter a flag final.
Reconhecimento
Assim que obtive o endereço IP da máquina, realizei uma varredura de portas utilizando o Rustscan e o Nmap, identificando os seguintes serviços em execução na máquina:
Como apontado pelo Nmap, ao tentar acessar a porta 80 ocorre um redirecionamento para http://trickster.htb
, sendo necessário adicionar esse endereço ao arquivo /etc/hosts
da minha máquina Linux:
Agora é possível navegar para esse domínio para analisar o conteúdo da página:
O resultado é uma página estática que não contém nenhuma informação relevante, além de um link que redireciona para o subdomínio shop.trickster.htb
. Novamente, foi necessário adicionar esse endereço ao arquivo /etc/hosts
da minha máquina Linux. Alterei a linha adicionada anteriormente para obter esse resultado:
Acessando a página http://shop.trickster.htb
, é possível encontrar um e-commerce que utiliza o PrestaShop:
Varredura
Realizando uma varredura com o Feroxbuster, foi possível encontrar vários arquivos e diretórios, porém um diretório .git
foi o que mais chamou atenção. Acessando esse diretório pelo navegador, é listado o índice da página:
Com isso, baixei o diretório utilizando o wget
na minha máquina para analisar. Acessando o diretório baixado e utilizando o comando git log
, o seguinte commit é revelado:
Utilizando o comando git status
, é possível observar que existe um diretório que fazia parte do repositório, porém que não foi baixado:
Exploração
Pós-Exploração
Escalando Privilégios Lateralmente
Usuário James
Navegando pelos arquivos do PrestaShop como o usuário www-data
, é possível encontrar informações sensíveis no arquivo ~/prestashop/app/config/parameters.php
. Nesse arquivo, é revelado um usuário e senha para o banco de dados da aplicação:
Após conectar ao banco de dados, é possível extrair o usuário adam@trickster.htb
e seu hash de senha:
Após utilizar o John para crackear esses hashes, foi possível obter acesso SSH ao usuário james
, sendo possível obter a primeira flag.
Usuário Adam
Após um processo de reconhecimento na máquina, identifiquei um contêiner Docker em execução na máquina. Por meio de um Ping Sweep, foi possível descobrir o endereço IP do contêiner. Transferindo o nmap para a máquina, é possível varrer os serviços desse contêiner e encontrar a porta 5000 aberta Realizando encaminhamento de porta via SSH, obtive acesso à porta. 5000 do contêiner:
Navegando pelo contêiner, é possível encontrar um diretório datastore
, em que são armazenados os arquivos do ChangeDetection, incluindo os backups que podem ser encontrados no diretório Backups
em formato ZIP. O contêiner possui poucos binários que permitem a transferência de arquivos, então utilizei o /dev/tcp/{IP}/{PORT}
do BASH para baixar o arquivo para máquina do alvo:
Com isso, eu utilizei o scp
para baixar o arquivo ZIP de backup para minha máquina:
Escalando Privilégios Verticalmente
Atualizado
Isto foi útil?