👨🚀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_kernelAcessando a porta 3333 (Serviço Web), me deparei com a aplicação Vulnversity.

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.

Acessando o diretório encontrado, notei uma 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...

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

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

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.


Subindo uma shell full PTY através do Python.

CTRL+Z > stty raw -echo > fg > export TERM=xtermAgora que possuo acesso ao servidor, procurei a flag user.txt.

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

systemctl pode ser executado com permissões SUIDCom isso, criei um payload na pasta /tmp que simula um serviço, cujo qual chama uma shell.

systemctl


root.txtLast updated