Saltearse al contenido

Escalada de privilegios en Linux

Escalar de un usuario sin privilegios a root es el objetivo tras conseguir acceso a un host Linux. Rara vez hace falta un exploit de kernel: lo habitual es abusar de malas configuraciones —SUID, sudo, cron, capabilities, permisos flojos— que el administrador dejó explotables. Esta ficha es el mapa general; cada vector tiene su propia ficha con el detalle.

El sistema confía en permisos, rutas y privilegios configurados por el administrador. El atacante no rompe Linux: usa sus reglas contra él. Un binario SUID mal elegido, un sudo demasiado permisivo o un cron que ejecuta un script escribible son, de facto, root para quien sepa verlos. La escalada es encontrar ese eslabón; la enumeración (ver Enumeración de Linux) lo revela.

sudo -l # LO PRIMERO. ¿qué puedes ejecutar como root?

Un sudo hacia un binario de GTFOBins (vi, find, python, less, awk…) suele ser root directo. También NOPASSWD, env_keep, y CVEs como Baron Samedit (CVE-2021-3156).

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

Un binario SUID de root que aparece en GTFOBins te da ejecución como root. Clásicos: pkexec (PwnKit), binarios custom mal programados.

getcap -r / 2>/dev/null

Un binario con cap_setuid, cap_dac_read_search, etc. permite escalar sin ser SUID completo.

cat /etc/crontab ; ls -la /etc/cron.* ; pspy

Una tarea que corre como root y ejecuta un script/binario escribible por ti (o usa un PATH relativo) = root cuando se dispare.

Contraseñas en configs, historiales, claves SSH → reutilización hacia root u otro usuario (ver Robo de credenciales en Linux).

# docker/lxd = root trivial (ver lin-docker)
docker run -v /:/mnt -it alpine chroot /mnt sh
# disk, adm, shadow... accesos privilegiados indirectos
uname -a # -> Dirty COW, Dirty Pipe (CVE-2022-0847), PwnKit, etc.

Ruidoso y puede tumbar el host; úsalo cuando lo demás falla.

PATH hijacking, LD_PRELOAD/LD_LIBRARY_PATH con sudo, NFS no_root_squash, wildcards en tar/chown (wildcard injection), ficheros /etc/passwd escribibles.

1. Enumerar (lin-enum) -> linpeas lo resume todo
2. sudo -l y SUID/caps: los quick wins más fiables
3. Cruzar binarios con GTFOBins
4. pspy para cron/procesos de root
5. Credenciales reutilizadas
6. Kernel solo si lo anterior no da fruto
linpeas.sh # detección automática de TODOS los vectores anteriores
pspy # procesos/cron de root sin privilegios
GTFOBins # cómo abusar de un binario concreto (sudo/SUID/caps)
linux-exploit-suggester # kernel exploits según la versión
  • Mínimo privilegio en sudo: sin comodines, sin binarios peligrosos, NOPASSWD solo lo imprescindible.
  • Revisar SUID/SGID y capabilities: quitar los que no hagan falta.
  • Cron seguro: rutas absolutas, scripts no escribibles, propiedad de root.
  • Sin credenciales en texto: secretos gestionados, permisos 600.
  • Parcheo del kernel al día; auditd/EDR para detectar abuso; sin grupos peligrosos innecesarios.