Write-up da maquina Vaccinate Hackingclub.
A máquina Vaccinate pertence ao Hackingclub, para poder ter acesso a essa máquina é necessário assinar o Hackingclub. | ||
A máquina está classificada como nível Médio e seu sistema operacional é Linux. | ||
Reconhecimento | ||
Primeira etapa é fazer o reconhecimento inicial de portas e serviços disponíveis no alvo. Para essa finalidade utilizaremos a ferramenta Nmap. | ||
Nmap -sS -sV -v <IP> | ||
Resultado: | ||
Vamos iniciar o reconhecimento do serviço web. | ||
Na página home da aplicação é possível encontrar um formulário. | ||
Executaremos o wfuzz para tentar encontrar algum arquivo ou diretório na aplicação. | ||
Um arquivo de texto disponível no servidor web. Vamos dar uma olhada. | ||
Encontramos duas coisas interessantes, a nossa primeira flag e que possivelmente a aplicação está utilizando a função “call_user_func”. | ||
No site do PHP https://www.php.net/manual/pt_BR/function.call-user-func.php | ||
Obtemos a seguinte informação: | ||
Basicamente a função “call_user_func” pode ser utilizada para chamar diretamente uma função no php e os seus argumentos. | ||
Pesquisando possíveis formas de exploração dessa função, encontramos “dynamic function injection” uma vulnerabilidade que permite o usuário chamar uma função do php diretamente, como por exemplo a função System. | ||
Voltando para o formulário que encontramos na página home e capturamos a requisição com Burpsuite. | ||
Encontramos dois arrays, data e usuario, temos um problema, de acordo com o site do php a função system não aceita array. | ||
Vamos converter o parâmetro data em string e chamar o system pelo usuário, caso não funcione vamos inverter os valores. | ||
Vamos enviar a requisição. | ||
Temos nosso Remote Code Execution. | ||
Exploração | ||
Vamos utilizar o Curl para obter nossa shell. | ||
Resultado: | ||
Encontramos a 2º flag. | ||
Escalação de privilégios | ||
Agora precisamos escalar nosso privilegio para root ou outro usuário que nos permita conseguir o root. | ||
Executando o netstat podemos ver quais portas estão abertas na máquina. | ||
Porta 8000 tem algum serviço escutando através dela, porem somente está disponível localmente. | ||
Para acessar pela nossa máquina, utilizaremos o chisel que é um programa para tunelamento. | ||
Na nossa máquina executaremos o chisel como servidor. | ||
Na máquina alvo executaremos como cliente. | ||
Conexão feita, agora temos acesso a porta 8000. | ||
Laravel com o modo debug ON, pesquisando por isso no google encontrei esse repositório no GitHub. | ||
ele explora o Laravel ignition, para confirmar que é essa versão do laravel podemos verificar as requisições que saem da nossa máquina. | ||
Pronto, agora podemos executar o exploit. | ||
Conseguimos nosso RCE agora como root. | ||
Executamos uma reverse shell bash. | ||
Pegamos a última flag. | ||
Consideração Final | ||
Obrigado por chegarem até o final do meu write-up. | ||