Instant
Atualizado
Isto foi útil?
Atualizado
Isto foi útil?
Essa máquina expõe uma aplicação web a qual disponibiliza o link para download de uma aplicação mobile. Essa aplicação mobile integra com uma API, porém as rotas e uma chave de acesso são expostas no código-fonte. Essa API possui uma rota para leitura de arquivos de log, a qual permite a leitura de arquivos locais, configurando uma vulnerabilidade de LFI. Por meio dessa vulnerabilidade de LFI, é possível recuperar a chave privada do usuário shirohige e ganhar acesso remoto à máquina. A partir disso, é possível escalar privilégios recuperando a senha do usuário root armazenada num backup da ferramenta Solar-PuTTY.
Realizei uma varredura de portas com o para identificar os serviços em execução e obtive os seguintes resultados:
Na porta 80 estava em execução um servidor web, que ao ser acessado redireciona para o domínio instant.htb
. Por conta disso, foi necessário adicionar uma entrada ao arquivo /etc/hosts
para que esse domínio fosse resolvido para o servidor:
A seguinte página web foi retornada ao acessar o endereço http://instant.htb
:
Nessa requisição, além do endpoint para a API, também é possível notar que a aplicação passa um token de acesso ao header Authorization
, o que indica que essa API necessita de um token para ser acessada. Buscando por outras referências ao domínio instant.htb
com a ferramenta de busca do jadx, encontrei uma referência em que o token de acesso é exposto:
Esse token permite acesso à API como usuário administrador:
Entretanto, nenhuma das rotas de API descobertas até então pareciam muito úteis. Explorando um pouco mais a aplicação, encontrei nos Resources um arquivo XML que indicava a quais fontes a aplicação poderia enviar requisições:
Além disso, descobri a rota /api/v1/admin/read/log
. Essa rota espera um parâmetro log_file_name
, o qual deveria ser o nome de um arquivo de log presente na máquina. Ao enviar a requisição informando a esse parâmetro o valor de exemplo (1.log), ela retorna o conteúdo do arquivo e o caminho absoluto dele (nesse caso, /home/shirohige/logs/1.log
):
Levando em consideração o caminho absoluto retornado, tentei voltar um diretório com ../
e acessar o arquivo .ssh/id_rsa
, onde deveria estar contido a chave privada SSH do usuário shirohige
. Como resultado, a chave privada do usuário foi retornada:
Salvei esse resultado em JSON num arquivo id_rsa.json
e processei ele utilizando o jq, o sed e o tr para salvar somente o conteúdo da chave:
Alterando as permissões da chave com chmod 600 id_rsa
, foi possível acessar a máquina por como usuário shirohige
por meio dessa chave:
A página sugere fazer o download de uma aplicação para realização de transações bancárias. Realizei uma varredura com o em busca de subdomínios e uma varredura com o em busca de outros diretórios. Porém, em ambos os casos, não obtive nada muito relevante, então decidi realizar o download sugerido. Ao clicar em Download Now
, é realizado o download de uma aplicação Android. Utilizando a ferramenta , descompilei a aplicação para analisar o código-fonte:
A princípio, pode-se notar que a aplicação implementa um para autenticação, gerir as transações e o perfil de um usuário autenticado. Além disso, ela utiliza a biblioteca , uma biblioteca comumente utilizada para realizar requisições web em aplicações Android. Por conta disso, procurei por requisições que estivessem sendo realizadas, e encontrei o endpoint para uma API:
Foi possível encontrar outro subdomínio, o swagger-ui.instant.htb
. O é uma ferramenta utilizada para expor documentações interativas de APIs. Acessando essa página do Swagger, é possível autenticar-se utilizando o token descoberto anteriormente para realizar as consultas:
Durante o processo de enumeração após ganhar acesso inicial à máquina, encontrei um subdiretório backups
no diretório /opt
da máquina. Esse diretório continha um subdiretório Solar-PuTTY
com um arquivo sessions-backup.dat
. Pesquisando por esse tipo de arquivo, descobri que se tratava de um backup da ferramenta Solar-PuTTY
, o qual ao ser recuperado pode revelar as credenciais que tinham sido salvas na aplicação. Pesquisando por uma forma de recuperar as credenciais desse arquivo, encontrei um disponível publicamente no GitHub o qual faz essa tarefa. Utilizando o script, encontrei as credenciais para o usuário root
: