Overpass – TryHackMe

Overpass – TryHackMe

Olá Pessoal, hoje nos iremos resolver o desafio Overpass da plataforma TryHackMe, neste desafio precisamos explorar as falhas do host e capturar 2 flags.

A primeira flag com acesso de “user” e a outra como “root“.

O que acontece quando um grupo de estudantes falidos de Ciência da Computação tenta fazer um gerenciador de senhas?
Obviamente um sucesso comercial perfeito!, Será??

Vamos ver o que este desafio tem pra nós, acompanhe a resolução abaixo.

  • Primeiro vamos fazer um reconhecimento do host, para isto utilizaremos o NMAP.
  • Lista de argumentos que usamos:
    • nmap -v -sSV -D RND:20 -g 443 -Pn –open –top-ports=500 10.10.71.152
    • (-v) Ativamos a opção Verbose.
    • (sSV) Definimos o tipo do escaneamento como Syn Scan e o NMAP irá validar a versão dos serviços rodando no host.
    • (-g) Definimos a porta de origem do nosso host.
    • (-D RND:20) Ativamos o modo Decoy para efetuar um bypass no host caso tenha algum WAF ou Firewall rodando.
    • (–open) O NMAP ira trazer somente as portas abertas.
    • (–top-ports=500) o NMAP ira validar as 500 principais portas do host.
  • Após concluir o escaneamento, o NMAP nos trouxe 2 portas abertas, SSH(22) e HTTP(80)
  • Primeiro vamos avaliar a porta 80 HTTP, depois olhamos a 22 SSH.
  • Ao abrir no navegador vemos que tem um site rodando, de acordo com o conteúdo do site é uma empresa que presta serviços de proteção de senhas utilizando criptografia.
  • Neste momento vamos utilizar o GoBuster para identificar os possíveis diretórios existentes neste site.
  • gobuster dir -e -u http://10.10.71.152 -w /usr/share/wordlists/dirb/big.txt
  • Lista de Argumentos que usamos
    • (dir) Definimos o escaneamento de diretórios
    • (-e) o app ira apresentar a URL completa do diretório, isso facilita caso precisamos acessa-lo diretamente.
    • (-u) definimos o host a ser escaneado.
    • (-w) Definimos uma wordlist de possíveis diretórios.
  • Identificamos os diretórios abaixo.
  • Analisando a lista de diretórios encontramos uma área de login,(http://10.10.71.152/admin/),porem como não temos as credenciais válidas, neste momento não é importante.
  • podemos até tentar credenciais default como (admin,admin), porem sem sucesso.

Analisando os demais diretórios encontrados localizamos a área de download da ferramenta de criptografia.(http://10.10.71.152/downloads/)

  • Na pagina de download encontramos um link do código fonte da ferramenta, vamos analisar.
  • Ao analisar o código fonte, vemos que a cifra utilizada nesta ferramenta é a cifra de Cesar, porem com 47 rotações conhecida como ROT47 (https://rot47.net/).

Vemos também que a ferramenta carrega as credenciais criptografadas de um arquivo oculto chamado .overpass

Voltamos para a tela de login e vamos analisar o código fonte da pagina para entendermos a forma de autenticação.

Temos 3 arquivos de javascript (main,login e cookie), ao analisar os 3 identificamos algo interessando no arquivo cookie.js

  • Neste trecho do código vimos que se o status do cookie estiver como “Incorrect credentials” ele limpa o campo de senha e retorna a pagina de login, porem se estiver diferente ele direciona para a pagina /admin
  • Bom neste caso vamos tentar setar manualmente o cookie para ver o que acontece.
  • lembre-se de desativar o cache do navegador antes, para que a mudança de fato ocorra.
  • Bom agora vamos atualizar a pagina pra ver oque acontece.
  • Uhuuull, agora somos ADMIN.
  • Analisando a pagina de /admin temos uma chave Privada RSA do usuário james, podemos tentar acessar o SSH (Porta 22) utilizando somente a chave, vamos testar.
  • Primeiro vamos copiar o conteúdo da chave para um arquivo com nome id_rsa.
  • OOh não, mesmo informando a chave ele pede uma senha, então vamos precisar quebrar esta chave.
  • pronto agora
  • temos outro formato de chave, porem agora podemos utilizar o john.
  • Opa conseguimos identificar a senha do james (james13), agora vamos tentar nos autenticarmos via SSH.
  • Perfeito, agora temos acesso ao host.
  • Bom Agora listando os diretórios temos um arquivo chamado user.txt
  • Ao abrir o arquivo, olha só que beleza temos uma flag
  • Bom agora para conseguirmos a outra flag iremos precisar de acesso root.
  • Primeiro vamos ver os arquivos com permissão de SUDO (sudo -l)
  • Ops, parece que a senha do SSH james13” não é a mesma de SUDO.
  • Voltando analisar os arquivos dentro do diretório do usuário temos aquele arquivo .overpass que localizamos lá no inicio onde a ferramenta de criptografia busca as senhas.
  • Ao ler o arquivo temos uma senha criptografada e de acordo com o código fonte é ROT47:
  • Opa, temos uma nova senha, vamos tentar utiliza-la para SUDO com o usuário james.
  • OOh Noo, o james não pode executar sudo.
  • Bom como não conseguimos sucesso com este comando vamos continuar.
  • Podemos ver se o host possui alguma tarefa no CRON o agendador de tarefas do linux, porem primeiro precisamos saber se temos acesso a lisa de tarefas.
  • cat /etc/crontab
  • Que da hora, temos uma tarefa que é executada periodicamente com permissões de root, veja é realizado uma requisição com curl e solicita que seja executado com bash.
  • Bom podemos tentar contaminar o DNS alterando o arquivo hosts do linux, bom vamos ver se temos acesso.
  • Lendo o arquivo temos:
  • Bom agora vamos ver se conseguimos alterar
  • Pronto conseguimos \0/, alterei o ip(127.0.0.1) para o meu ip, então quando o cron executar esta requisição ele ira procurar o arquivo em minha maquina.
  • Vamos preparar o nosso ambiente para recebermos a conexão reversa.
  • Primeiro precisamos criar a mesma estrutura de pasta.
  • no meu caso vou subir um servidor php estando no diretório “overpass“, então imagine que o diretório “overpass” representa o / dentro de um servidor web.
  • Pronto subimos um servidor http na porta 80, pois é onde o host infectado ira buscar o arquivo “buildscript.sh
  • Dentro do arquivo buildscript.sh temos:
  • Agora vamos abrir a porta 8080 no nosso host e somente aguardar a conexão.
  • Opa recebemos uma conexao.
  • \0/ Agora somos #root.
  • Agora como estamos no diretório do root vamos ver o que temos.
  • Temos um arquivo chamado root.txt, abrindo o arquivo temos:
  • Ótimo, conseguimos concluir o desafio com SUCESSO.

E ai, gostou ???, deixe sua opinião ou duvida nos comentários, nos vemos em um próximo desafio ate mais…

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *