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.
Modelo de amenaza
Sección titulada «Modelo de amenaza»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.
Los vectores (de más a menos común)
Sección titulada «Los vectores (de más a menos común)»1. sudo mal configurado (ver Abuso de sudo)
Sección titulada «1. sudo mal configurado (ver Abuso de sudo)»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).
2. Binarios SUID/SGID (ver Binarios SUID/SGID)
Sección titulada «2. Binarios SUID/SGID (ver Binarios SUID/SGID)»find / -perm -4000 -type f 2>/dev/nullUn binario SUID de root que aparece en GTFOBins te da ejecución como root. Clásicos: pkexec (PwnKit), binarios custom mal programados.
3. Capabilities (ver Linux capabilities)
Sección titulada «3. Capabilities (ver Linux capabilities)»getcap -r / 2>/dev/nullUn binario con cap_setuid, cap_dac_read_search, etc. permite escalar sin ser SUID completo.
4. Cron jobs y timers (ver Cron jobs y timers)
Sección titulada «4. Cron jobs y timers (ver Cron jobs y timers)»cat /etc/crontab ; ls -la /etc/cron.* ; pspyUna tarea que corre como root y ejecuta un script/binario escribible por ti (o usa un PATH relativo) = root cuando se dispare.
5. Credenciales reutilizadas
Sección titulada «5. Credenciales reutilizadas»Contraseñas en configs, historiales, claves SSH → reutilización hacia root u otro usuario (ver Robo de credenciales en Linux).
6. Grupos peligrosos
Sección titulada «6. Grupos peligrosos»# docker/lxd = root trivial (ver lin-docker)docker run -v /:/mnt -it alpine chroot /mnt sh# disk, adm, shadow... accesos privilegiados indirectos7. Exploits de kernel (último recurso, ver Exploits de kernel en Linux)
Sección titulada «7. Exploits de kernel (último recurso, ver Exploits de kernel en Linux)»uname -a # -> Dirty COW, Dirty Pipe (CVE-2022-0847), PwnKit, etc.Ruidoso y puede tumbar el host; úsalo cuando lo demás falla.
8. Otros
Sección titulada «8. Otros»PATH hijacking, LD_PRELOAD/LD_LIBRARY_PATH con sudo, NFS no_root_squash, wildcards en tar/chown (wildcard injection), ficheros /etc/passwd escribibles.
Metodología
Sección titulada «Metodología»1. Enumerar (lin-enum) -> linpeas lo resume todo2. sudo -l y SUID/caps: los quick wins más fiables3. Cruzar binarios con GTFOBins4. pspy para cron/procesos de root5. Credenciales reutilizadas6. Kernel solo si lo anterior no da frutoHerramientas
Sección titulada «Herramientas»linpeas.sh # detección automática de TODOS los vectores anteriorespspy # procesos/cron de root sin privilegiosGTFOBins # cómo abusar de un binario concreto (sudo/SUID/caps)linux-exploit-suggester # kernel exploits según la versiónPara la defensa
Sección titulada «Para la defensa»- 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.
Checklist de prueba
Sección titulada «Checklist de prueba»-
sudo -l→ GTFOBins / NOPASSWD / CVEs - SUID/SGID → GTFOBins (Binarios SUID/SGID)
- Capabilities peligrosas (Linux capabilities)
- Cron/timers con scripts escribibles o PATH relativo (Cron jobs y timers)
- Credenciales reutilizadas (Robo de credenciales en Linux)
- Grupos peligrosos (docker/lxd/disk)
- Kernel vulnerable (Exploits de kernel en Linux) como último recurso
- PATH/LD_PRELOAD/NFS/wildcard y otros vectores