Passo a passo de como eu resolvi a maquina Horizont da Crowsec.
|
|
A máquina Horizont é disponibilizada no laboratório da Crowsec, para poder ter acesso a essa máquina é preciso ser aluno do Webhacking-na-pratica 2.0. ela está classificada como nível Médio e seu sistema operacional é Linux.
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.
|
|
Depois de olhar e tentar algumas interações, decidir olhar o código fonte da página e encontrei algo bastante interessante
|
|
Era um comentário, solicitando que define-se um valor para o parâmetro url, decidir então testar, colocando a url do google como valor do parâmetro.
|
|
Opa, o servidor retornou o conteúdo da página web do google =D, mas não parei por aí, fui mais a fundo, e subir um servidor web em python na minha máquina com o comando
python3 -m http.server 8080 e coloquei minha url no parâmetro.
Então descobrir que o IP que fazia a requisição http era o da máquina Horizont.
|
|
Ou seja, era um server-side request forgery(SSRF).
Através, desse SSRF conseguir extrair do metadados da AWS credencias de acesso ao s3.
|
|
Com essas informações, configurei o aws cli no meu sistema operacional e executei o comando: aws s3 ls.
|
|
Então achei interessante o nome de um diretório s3-ctf
|
|
Em seu conteúdo tinha
|
|
Então executei o download do arquivo de texto.
|
|
Depois abrir o arquivo e nele continha um base64.
|
|
Eu precisava decodificar o base64, então executei o comando no terminal
base64 -d superadmin_login_backup.txt
e este base64 tinha credenciais de acesso há alguma aplicação
|
|
Então fui dar uma olhada no serviço http da porta 8080 que estava sendo executada na maquina
|
|
Eee de cara tinha uma função de login
|
|
Coloquei as credencias do base64 e pressionei o botão de Login
|
|
Conseguir logar no sistema :D. Pressionei o Admin Area.
|
|
E fui redirecionado para essa página
|
|
Era uma aplicação de CMS, era preciso entender ela e dar um pesquisada por possíveis pontos de exploração. Foi então que encontrei esse artigo escrito por bigb0ss, que demostrou a utilização de um plugin malicioso no HorizontCMS
Fiz o download do plugin disponibilizado no repositório do github do autor do HorizontCMS.
|
|
E fui para o seguinte diretório.
|
|
E neste diretório continha alguns arquivos.
|
|
Abrir o arquivo messages.php com o nano e inserir um código de reverse shell.
|
|
|
. |
Depois compactei novamente no formato zip todos os arquivos. Voltei para aplicação HorizontCMS e naveguei para o sistema de plugin.
|
|
Então fui para a opção de upload new plugin.
|
|
Selecionei o meu plugin modificado com a extensão .zip.
|
|
E pressionei upload, install, activate e pronto plugin instalado e pronto para testar
|
|
|
|
|
|
Então coloquei meu netcat para escutar na porta configurada no código reverse shell, porta 1337.
|
|
No Google Maps, pressionei add location.
|
|
E inserir dados fictícios, e pressionei Save.
|
|
Voltei para o netcat e.
|
|
Obtive uma shell no servidor :p, comecei a navegar pelos diretórios e encontrei na raiz do sistema operacional uma flag.
|
|
Encontrei a flag de usuário 😊.
Comecei a procurar por binários com SUID configurados com o comando.
|
|
E encontrei esses.
|
|
Acessei o site https://gtfobins.github.io/ e comecei a procurar por binários que continha na lista que me permite-se virar root.
Encontrei o binário find.
|
|
Naveguei para /usr/bin e executei o comando
|
|
E executei o comando whoami, eee
|
|
Virei root do sistema operacional. LoL. Fui para o diretório raiz do usuário root e executei o cat no arquivo root.txt
|
|
E a peguei a flag root. Maquina Finalizada com sucesso U.u.
O comprometimento da máquina Horizont, deu em consequência da aplicação permitir que o usuário consiga manipular requisições feitas pelo servidor web, falha chamada de SSRF(Server-side Request Forgery), somando a uma má configuração de permissões dos metadados da AWS, foi possível tornar-se administrador da aplicação CMS.
A escalação de privilegio ocorreu devido o bit SUID está ativado no binário find do sistema operacional.