👨‍🚀Vulnversity

Olá, viajante! Neste artigo, trago um write-up do desafio Vulnversity.

Reconhecimento

Ao realizar um portscan básico, encontrei as seguintes portas abertas:

PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 3.0.3
22/tcp   open  ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.7
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3128/tcp open  http-proxy  Squid http proxy 3.5.12
3333/tcp open  http        Apache httpd 2.4.18 ((Ubuntu))
Service Info: Host: VULNUNIVERSITY; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Acessando a porta 3333 (Serviço Web), me deparei com a aplicação Vulnversity.

Página inicial

Analisei o código-fonte da página e não encontrei nada muito relevante. Partindo para a enumeração de diretórios, encontrei um diretório interessante.

Diretório encontrado

Acessando o diretório encontrado, notei uma função de upload de arquivos.

Página encontrada com função de upload de arquivos

Exploração

Eu poderia tentar subir uma shell reversa em PHP, levando em consideração que o site utiliza tal tecnologia...

Operação não permitida

O servidor não permite upload de arquivos com extensão .php... Posso tentar algumas outras alternativas, como .php2, .php3, .php4, .php5 ou .phtml.

Tentando subir uma shell reversa em .phtml
Sucesso!

Agora só preciso acessar o arquivo que fiz o upload.

Arquivo não encontrado

Provavelmente o arquivo não está armazenado na mesma pasta... Então decidi realizar uma varredura de diretórios dentro da página encontrada inicialmente.

Diretório de upload de arquivos encontrados
Shell reversa

Subindo uma shell full PTY através do Python.

CTRL+Z > stty raw -echo > fg > export TERM=xterm

Agora que possuo acesso ao servidor, procurei a flag user.txt.

Captura da flag user.txt

Escalação de Privilégio

Para tentar escalar privilégios, verifiquei a existência de executáveis com permissão SUID.

O executável systemctl pode ser executado com permissões SUID

Com isso, criei um payload na pasta /tmp que simula um serviço, cujo qual chama uma shell.

Serviço forjado para executar uma shell reversa com permissões elevadas via systemctl
Habilitação do serviço
Shell reversa com permissões elevadas obtida com sucesso
Captura da flag root.txt

Last updated