Analytics é uma máquina Linux de dificuldade fácil. Nela é preciso abusar de um pre-auth RCE na aplicação Metabase para obter acesso a um container e nele conseguir as credenciais para acessar o host por SSH. Com isso é possível abusar de uma vulnerabilidade do kernel do Linux para obter root.

banner


Para essa máquina é necessário inserir o domínio analytical.htb no arquivo de hosts local.

Com um scan do nmap encontra-se duas portas abertas nessa máquina, 22 do ssh e 80 de uma aplicação web.

nmap

Ao acessar o site encontramos no canto superior direito um link para uma página de login, todos os outros são do próprio site. Ao clicar no botão de login vamos para o subdomínio data.analytical.htb, assim também precisamos adicioná-lo ao arquivo de hosts.

site

Após adicionar o subdomínio e acessá-lo, encontramos uma página de login no Metabase.

metabase

Buscando no Google é possível encontrar que o Metabase teve uma vulnerabilidade de Remote Code Execution (RCE) que não é necessário autenticação para explorá-la, o CVE-2023-38646. Também encontrei que já existe um módulo do Metasploit para essa vulnerabilidade.

Para utilizar este módulo precisamos configurar o rhost, rport, vhost e lhost. Após isso, ao executar o módulo conseguimos uma shell como usuário metabase em um container, isso pode ser identificado pelo hostname da máquina em que estamos.

msfconsole

Nas variáveis de ambiente do container estão definidos um usuário e uma senha.

env

Com essas credenciais podemos conectar a máquina host via SSH e conseguir a flag de usuário.

user

Essa máquina é um Ubuntu na versão 22.04 e possui o kernel na versão 6.2.0. este kernel possui as vulnerabilidades CVE-2023-2640 e CVE-2023-32629, relacionadas ao overlayfs que permitem escalada de privilégios locais.

kernel

Como o payload abaixo é possível explorar essas vulnerabilidades e conseguir root.

unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;
setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("/bin/bash")'

root