AccesoInicial

Qué es la escalada de privilegios en Linux

Introducción al concepto de escalada de privilegios: qué significa, por qué es una fase crítica en un pentest y cómo funciona el modelo de permisos de Linux.

Principiantelinuxprivilege-escalationpermissions

Introducción

Imagina que acabas de obtener acceso a un sistema Linux a través de una vulnerabilidad en una aplicación web. Tienes una shell, pero como un usuario sin privilegios: no puedes leer archivos sensibles, instalar herramientas ni modificar configuraciones del sistema. La escalada de privilegios es el proceso de pasar de ese acceso limitado a control total del sistema, generalmente obteniendo una shell como el usuario root.

Este curso te enseñará los fundamentos de ese proceso en Linux: cómo funciona el modelo de permisos, qué buscar en un sistema comprometido y cuáles son los vectores de ataque más comunes. Esta primera lección establece el marco conceptual que usaremos en todo el curso.

¿Por qué importa la escalada de privilegios?

En un pentest o ejercicio de red team, el acceso inicial casi nunca te da control total. Los servicios web, las aplicaciones y los demonios suelen ejecutarse como usuarios sin privilegios por diseño. Sin escalada de privilegios, tu alcance dentro del sistema es muy limitado: no puedes acceder a credenciales de otros usuarios, no puedes leer archivos de configuración protegidos y no puedes pivotear efectivamente hacia otros sistemas.

Dicho de otro modo: el acceso inicial te abre la puerta, pero la escalada de privilegios te da las llaves de la casa. En muchas certificaciones de seguridad ofensiva, la escalada de privilegios es un requisito explícito para completar los objetivos del examen.

Conceptos clave

Antes de buscar vulnerabilidades, necesitas entender cómo Linux decide quién puede hacer qué. Todo gira alrededor de tres conceptos: usuarios, grupos y permisos de archivos.

Usuarios y el usuario root

Cada cuenta en Linux tiene un identificador numérico llamado UID (User ID). Las cuentas se configuran en /etc/passwd y sus hashes de contraseña se almacenan en /etc/shadow. El usuario root tiene UID 0 y el sistema le otorga acceso completo a todos los archivos y procesos. Nuestro objetivo final es ejecutar comandos como root.

Grupos

Los grupos se configuran en /etc/group. Cada usuario tiene un grupo primario y puede pertenecer a varios grupos secundarios. Los grupos permiten asignar permisos compartidos. Por ejemplo, todos los miembros del grupo sudo pueden ejecutar comandos con privilegios elevados.

Permisos de archivos

Cada archivo y directorio tiene un propietario, un grupo y tres conjuntos de permisos: para el propietario, para el grupo y para todos los demás usuarios (*others*). Los permisos son lectura (r), escritura (w) y ejecución (x).

bash
1$ ls -l /bin/date
2-rwxr-xr-x 1 root root 60416 Apr 28 2010 /bin/date
3
Diagrama mostrando la estructura de los bits de permisos en Linux: tipo de archivo, propietario (rwx), grupo (r-x), y otros (r-x), con su equivalente octal 755.
Estructura de permisos de archivos en Linux

En este ejemplo, el archivo pertenece a root:root. El propietario tiene lectura, escritura y ejecución (rwx); el grupo y otros solo tienen lectura y ejecución (r-x). Los primeros 10 caracteres de ls -l siempre te dicen exactamente quién puede hacer qué con ese archivo.

IDs en la práctica: real, efectivo y guardado

Hay un detalle que confunde a muchos principiantes: en Linux, cada proceso tiene tres UIDs: el real, el efectivo y el guardado. El que importa para control de acceso es el UID efectivo. Cuando ejecutas un programa con el bit SUID activado (lo veremos en la lección 3), el UID efectivo cambia al del propietario del archivo, aunque tu UID real siga siendo el mismo.

El comando id te muestra esta información de un vistazo:

bash
1$ id
2uid=1000(user) gid=1000(user) groups=1000(user),24(cdrom),25(floppy),44(video)
3

Aquí el UID real y el efectivo son ambos 1000 (usuario normal). Si vieras euid=0(root) en la salida, significaría que el proceso se está ejecutando con privilegios de root, exactamente lo que buscamos lograr.

Escalada de privilegios como violación de control de acceso

Un punto importante: toda escalada de privilegios es, en esencia, una violación de control de acceso. Puede ser una configuración incorrecta (un archivo sensible con permisos de lectura para todos), un software mal diseñado (un servicio que ejecuta código como root sin necesidad) o una vulnerabilidad en el propio kernel. A veces es un solo error evidente; otras veces necesitas combinar varias debilidades menores para construir una ruta completa hacia root.

Esa es la mentalidad que queremos desarrollar en este curso: no buscar una sola vulnerabilidad mágica, sino aprender a enumerar sistemáticamente y conectar los puntos entre lo que encuentras.

Errores comunes

Advertencia

No saltar directo a exploits de kernel. Muchos principiantes buscan la versión del kernel e intentan un exploit público como primera opción. Los exploits de kernel son inestables: pueden tumbar el sistema o funcionar solo una vez. En un pentest real, siempre deberías agotar las opciones de configuración (sudo, SUID, permisos débiles, cron) antes de recurrir a exploits de kernel.

Nota

El comando `id` es tu primer aliado. Siempre ejecútalo al obtener una shell. Te dice inmediatamente quién eres, en qué grupos estás y si tienes algún privilegio elevado. Es el punto de partida de toda enumeración.

Conclusión

La escalada de privilegios en Linux consiste en pasar de un usuario sin privilegios a root, explotando errores de configuración o vulnerabilidades en el sistema. El modelo de permisos de Linux (usuarios, grupos, UIDs y permisos de archivos) es el terreno donde ocurre todo. En la siguiente lección aprenderás a enumerar el sistema de forma metódica para descubrir estos puntos débiles.