Photobomb
Olá, viajante! Neste artigo, trago um write-up do desafio Photobomb, da plataforma Hack the Box.
Last updated
Olá, viajante! Neste artigo, trago um write-up do desafio Photobomb, da plataforma Hack the Box.
Last updated
Ao realizar um portscan básico, encontrei as seguintes portas abertas:
Para acessar o serviço, adicionei o domínio photobomb.htb
no arquivo /etc/hosts
.
Analisando o código-fonte da página, encontrei o arquivo photobomb.js
e um diretório chamado /printer
.
Ao analisar, inicialmente, o arquivo photobomb.js
, pude encontrar possíveis credenciais.
Acessando a página /printer
, pude confirmar a informação que encontrei no arquivo js.
Ao analisar a página, percebi que ao fim dela existem algumas opções para download das imagens mostradas acima, em diferentes resoluções e formatos.
Baixei algumas imagens e analisei os metadados (EXIF), mas não encontrei nada relevante. Então, decidi ver como a requisição de download funciona, interceptando-a com o Burp Suite. Com isso, notei alguns parâmetros e decidi tentar executar algum comando remotamente. Utilizei o netcat na minha máquina para escutar o tráfego na porta 80 e tentei enviar uma requisição forjada.
Com isso, confirmei a possibilidade de executar comandos remotamente. Através dessa brecha, consegui identificar qual usuário a aplicação utiliza.
Tentando buscar por arquivos, consegui encontrar a flag user.txt
.
Removendo o caractere #
da requisição forjada e executando, dessa vez, um comando de chamada de shell reverso, codificado para URL.
Buscando por formas de escalar privilégios, verifiquei se existe algum arquivo que eu possa executar com permissões de root.
Com o resultado acima, podemos notar que existe um script em shell que pode ser executado como root, inclusive, com variáveis de ambiente personalizadas (SETENV
).
Verificando o conteúdo do arquivo, consigo ver que existe o comando find declarado sem seu caminho absoluto.
Através dessa brecha, consigo gerar um arquivo find
chamando uma bash com permissões elevadas e declarar o diretório na variável de ambiente PATH
.
Inseri a flag -p
para que o UID e GUID do usuário atual não sejam levados em conta em sua execução. Agora, com um arquivo find
especialmente forjado para ser chamado na execução do script encontrado, posso tentar elevar privilégios.
/printer
com as credenciais encontradascat
e truncate
, circulados em azul, estão declarados com seu caminho absoluto. Já o comando find
, circulado em vermelho, não está declarado da mesma formafind
forjadoroot.txt