Post

CyberHeroes - Desafio hacker [TryHackMe]

Resolvendo Máquina do TryHackMe em português

CyberHeroes — Writeup em Português

Resolução desafio hacker fácil do TryHackMe

Want to be a part of the elite club of CyberHeroes? Prove your merit by finding a way to log in! Quer fazer parte do clube de elite dos CyberHeroes? Prove seu mérito encontrando uma maneira de fazer login!

Assim que a máquina é iniciada e me fornece o IP necessário para a atividade, começo executando um Nmap. No entanto, confesso que acabei não utilizando o resultado, pois enquanto esperava o scan verificar todas as portas, já estava investigando por conta própria e acabei resolvendo antes mesmo dele terminar.

IP alvo gerado para mim => 10.10.32.251

Scan

1
sudo nmap -sS -sV -p- 10.10.32.251

Desktop View

Então, enquanto o scan estava em execução, já fui testar no navegador e descobri que era um serviço web rodando na porta 80.

http://10.10.32.251

Cheguei a pensar em deixar um bruteforce de diretório rodando enquanto explorava o site, mas decidi dar uma olhada no código fonte da página primeiro - e ainda bem que fiz isso.

Investigação

Desktop View

Desktop View

Ao ver os arquivos .css sendo carregados, decidi abrir em uma nova aba e testar os diretórios anteriores, mais especificamente o /assets/, que parecia ser usado para armazenar os recursos do site. Para minha surpresa, o directory listing estava habilitado, mostrando inclusive os diretórios presentes ali dentro e a versão do Apache. Não foi tão útil assim nesse caso, mas foi interessante ter essa possibilidade de investigar os arquivos.

Desktop View

Há muitas coisas que eles fazem nesses CTFs para desviar sua atenção e essa parecia ser uma delas, então desisti de ficar investigando isso. Mas caso eu não encontrasse nada nos próximos passos, com certeza voltaria aqui achando que tinha deixado algo passar.

Voltei para a página inicial e continuei investigando as funcionalidades do site. Me deparei com a aba de login. É um login.html.

Confesso que ser um .html chamou minha atenção - geralmente logins são processados no backend com PHP ou algo do tipo.

Tela de Login

Tentei algumas opções padrões, como admin:admin e até SQL injection básico com ' or 1=1 --. Comecei a pensar em usar o Burp para interceptar a requisição e depois fazer um bruteforce com Hydra.

No entanto, antes de partir pra isso, decidi dar uma olhada na aba Network das ferramentas de desenvolvedor enquanto tentava fazer login. E para minha surpresa, não capturava nada… nenhuma requisição era feita pro servidor.

Desktop View

Desktop View

Desktop View

Isso me fez pensar que poderia se tratar de uma autenticação feita totalmente no client-side (ou seja, no JavaScript do navegador). Fui até o código fonte e bingo - encontrei no JavaScript a lógica de autenticação, incluindo a senha! Porém ela estava invertida de trás pra frente como uma tentativa básica de ofuscação.

Para reverter a string, usei o comando rev no terminal:

1
echo "54321@terceSrepuS" | rev

Isso resultou em: SuperSecret@12345

Desktop View

Desktop View

Credenciais encontradas: h3ck3rBoi:SuperSecret@12345

Ao fazer o login com essas credenciais…

Pronto! Temos a flag!

Até achei, por um segundo, que era pegadinha e que poderia ser uma flag falsa… rs

Desktop View

flag{edb0be532c540b1a150c3a7e85d2466e}

Considerações Finais

Esse CTF foi bem simples, mas serviu pra reforçar algumas coisas importantes.

A principal lição aqui é: sempre olhe o código fonte e monitore as requisições de rede. Nesse caso, o fato de não haver nenhuma requisição HTTP ao tentar fazer login já era um sinal claro de que a autenticação estava sendo feita no client-side - o que é uma péssima prática de segurança, mas que aparece bastante em CTFs iniciantes.

Outra coisa que vale mencionar é sobre ofuscação básica. Strings invertidas, Base64, ROT13… esse tipo de “proteção” não protege nada de verdade. Se está no código do cliente, está exposto. Para testar rapidamente essas transformações, o CyberChef é uma mão na roda - é tipo um canivete suíço pra decodificar qualquer coisa.

E por fim, mesmo que o Nmap não tenha sido útil nesse caso específico, é sempre bom deixar rodando enquanto você faz a investigação manual. Às vezes você resolve antes dele terminar (como aconteceu aqui), mas outras vezes ele vai te mostrar portas e serviços que você não teria descoberto de outra forma.

Meu perfil na plataforma: https://tryhackme.com/p/laidler

Esta postagem está licenciada sob CC BY 4.0 pelo autor.