2H4CK
  • 🎯2H4CK
  • 📰Artigos
    • ☁️Cloud
      • 🌩️Encontrando e explorando buckets expostos
    • 🔐Security
      • Let's talk about Wazuh
    • 🌐Web
      • 🌐Como funciona uma aplicação web
      • 💸Comportamento prático de um Stealer
      • 💉Detectando e analisando SQL Injection
      • 🐝OWASP
    • 🪟Windows
      • 🧑‍💻Explorando Kerberos
    • 📡Wireless
      • 🔑Dissecando e atacando o WPA com o Aircrack
  • 🚩Capture the Flag
    • 🟩Hack the Box
      • 🖼️Photobomb
    • ☁️TryHackMe
      • 🪟Attacktive Directory
      • 🕵️Basic Pentesting
      • 🥒Pickle Rick
      • 🌶️Startup
      • 🙀Tomghost
      • 👨‍🚀Vulnversity
  • 📚Hacking Guide
    • 🔥Entendendo e tratando incidentes de segurança
    • 🔢Fases Macro de um Ataque
    • 🕵️Introdução ao Threat Hunting
Powered by GitBook
On this page
  • Reconhecimento
  • Exploração
  • Escalação de Privilégio
  1. Capture the Flag
  2. Hack the Box

Photobomb

Olá, viajante! Neste artigo, trago um write-up do desafio Photobomb, da plataforma Hack the Box.

PreviousHack the BoxNextTryHackMe

Last updated 2 years ago

Reconhecimento

Ao realizar um portscan básico, encontrei as seguintes portas abertas:

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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.

Exploração

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.

Escalação de Privilégio

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.

🚩
🟩
🖼️
Photobomb
Página inicial
Script e diretório encontrados no código-fonte
Possíveis credenciais encontradas no arquivo javascript
Acessando a página /printer com as credenciais encontradas
Diretório acessado com sucesso
Seção de download das imagens da página
Tentativa de execução remota de código (curl)
Comunicação estabelecida com sucesso
Comando "id" para identificar o usuário atual
Captura da flag user.txt
Shell reversa via RCE
Comandos permitidos a serem executados como root
Os comandos cat 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 forma
Arquivo find forjado
Execução do comando com variáveis de ambiente forjadas, elevando meus privilégios
Captura da flag root.txt