Levram é uma máquina Linux de dificuldade fácil do Proving Grounds Practice. Nela é preciso abusar de um RCE na aplicação Gerapy para conseguir uma shell reversa e depois escalar privilégios a partir das capabilites no python.
Começando escaneando as portas com o nmap para encontrar quais estão abertas. Foram encontradas apenas a 22 de SSH e 8000 com uma servidor web.
Acessando a aplicação web somos redirecionados para uma página de login do Gerapy que solicita um usuário e senha.
É possível acessar com as credenciais admin:admin. Na pagína inicial, após fazer login, há informações sobre a versão do software, sendo ele 0.9.7. Essa versão possui uma vulnerabilidade de execução de código (RCE).
A ferramenta searchsploit já possui o exploit para explorar essa vulnerabilidade.
Ao tentar executar o exploit com os parâmetros necessários ocore um erro. Isso devido há não ter nenhum projeto cadastrado no Gerapy. Então é preciso criar um projeto que seja possível avançar.
Com o projeto criado, o exploit consegue executar normalmente e obtém uma shell reversa como usuário app na máquina. Aqui já obtemos acesso à primeira flag.
Com o uso do Linpeas, foi encontrado que o interpretador de Python possui permissões de setuid. Assim, ele é capaz de manipular o UID dos processos, fazendo com que possa executar binários como se fosse qualquer outro usuário.
Baseado no código do GTFObins, executamos um código que define o UID como 0, ou seja de root, e executa o bash. Dessa forma, conseguimos obter uma shell com permissões de administrador local e podemos ler a segunda flag.
python3.10 -c 'import os; os.setuid(0); os.system("/bin/bash")'