Horizont Write-up
0
0

Horizont Write-up

Passo a passo de como eu resolvi a maquina Horizont da Crowsec.

Roberto Francisco
4 min
0
0
person using laptop

Introdução

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.

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:

undefined

Então decidir olhar o serviço http na porta 80.

undefined

Depois de olhar e tentar algumas interações, decidir olhar o código fonte da página e encontrei algo bastante interessante

undefined

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.

undefined

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.

undefined

Ou seja, era um server-side request forgery(SSRF).

Explorando o SSRF

Através, desse SSRF conseguir extrair do metadados da AWS credencias de acesso ao s3.

undefined

Com essas informações, configurei o aws cli no meu sistema operacional e executei o comando:  aws s3 ls.

undefined

Então achei interessante o nome de um diretório s3-ctf

undefined

Em seu conteúdo tinha

undefined

Então executei o download do arquivo de texto.

undefined

Depois abrir o arquivo e nele continha um base64.

undefined

Ganhando acesso a aplicação

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

undefined

Então fui dar uma olhada no serviço http da porta 8080 que estava sendo executada na maquina

undefined

Eee de cara tinha uma função de login

undefined

Coloquei as credencias do base64 e pressionei o botão de Login

undefined

Conseguir logar no sistema :D. Pressionei o Admin Area.

undefined

E fui redirecionado para essa página

undefined

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

Explorando HorizontCMS

Fiz o download do plugin disponibilizado no repositório do github do autor do HorizontCMS.

undefined

E fui para o seguinte diretório.

undefined

E neste diretório continha alguns arquivos.

undefined

Abrir o arquivo messages.php com o nano e inserir um código de reverse shell.

undefined

.

Depois compactei novamente no formato zip todos os arquivos. Voltei para aplicação HorizontCMS e naveguei para o sistema de plugin.

undefined

Então fui para a opção de upload new plugin.

undefined

Selecionei o meu plugin modificado com a extensão .zip.

undefined

E pressionei upload, install, activate e pronto plugin instalado e pronto para testar

undefined
undefined
undefined

Conseguindo uma shell

Então coloquei meu netcat para escutar na porta configurada no código reverse shell, porta 1337.

undefined

No Google Maps, pressionei add location.

undefined

E inserir dados fictícios, e pressionei Save.

undefined

Voltei para o netcat e.

undefined

Obtive uma shell no servidor :p, comecei a navegar pelos diretórios e encontrei na raiz do sistema operacional uma flag.

undefined

Encontrei a flag de usuário 😊.

Escalando Privilégios

Comecei a procurar por binários com SUID configurados com o comando.

undefined

E encontrei esses.

undefined

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.

undefined

Naveguei para /usr/bin e executei o comando

undefined

E executei o comando whoami, eee

undefined

Virei root do sistema operacional. LoL. Fui para o diretório raiz do usuário root e executei o cat no arquivo root.txt

undefined

E a peguei a flag root. Maquina Finalizada com sucesso U.u.

Considerações finais

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.