¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Fundamentos de la escalada de privilegios

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de máquina virtual7 min de lectura5 comandos

Qué vas a hacer

En esta máquina hay una segunda cuenta con pocos privilegios, intern, y un administrador ha dejado tres errores corrientes para que los encuentre: un programa con más privilegio del que necesita, una regla de sudo que nunca se limitó y una tarea programada que se fía de un archivo que cualquiera puede modificar. Vas a mirar los tres desde tu propia cuenta, student, sin aprovechar ninguno: encontrar uno y usarlo es la tarea del propio laboratorio.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra de la parte superior de esta lección. Este laboratorio es una máquina Ubuntu entera para ti, así que tarda un poco más en arrancar que un contenedor. Cada botón Ejecutar de abajo escribe su comando en el terminal de la máquina, uno detrás de otro. Si alguno dice que la máquina todavía está arrancando, espera unos segundos y púlsalo otra vez. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.

La única regla

Advertencia

Esta máquina es solo tuya, sin ninguna ruta hacia la máquina de otro alumno y sin ninguna ruta hacia internet, salvo unos pocos repositorios de paquetes. Ataca solo esta máquina: hacerlo contra una máquina que no es tuya es un delito según la ley británica Computer Misuse Act 1990.

1. Conoce la segunda cuenta

Esta máquina tiene una segunda cuenta, creada por la configuración del laboratorio, que no tiene ninguno de los privilegios de la tuya. getent passwd lee la lista de cuentas del sistema e imprime una línea para intern: su propia carpeta personal y su propio intérprete de comandos (shell), y nada más.

Comando
getent passwd intern

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

2. Mira el programa setuid

Un programa setuid se ejecuta siempre como el usuario que es su propietario, sea quien sea el que lo inicia. ls -l muestra una s donde iría el permiso de ejecución del propietario: -rwsr-xr-x, de root. Por tanto, quien lo ejecuta es root mientras el programa funciona.

Comando
ls -l /usr/local/bin/sysfind

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

3. Mira la regla de sudo

La propia configuración de sudo dice quién puede ejecutar qué como otra persona. Tu cuenta ya puede leerla con sudo. Esta línea deja que intern ejecute un programa como root sin ninguna contraseña.

Comando
sudo cat /etc/sudoers.d/90-lab-intern

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

4. Mira el script modificable

El cron de root ejecuta este script cada minuto. ls -l muestra rwxrwxrwx: todos los permisos activados, así que cualquiera de la máquina, intern incluido, puede cambiar lo que hace antes de que root lo ejecute otra vez.

Comando
ls -l /opt/maintenance/cleanup.sh

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

5. Comprueba que root lo ejecuta

Esto lee las tareas programadas de root igual que sudo cat leyó la regla de sudo: una línea, el script del paso anterior, ejecutado cada minuto como root.

Comando
sudo crontab -l -u root

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ahora haz el laboratorio

Consejo

Ya has visto las tres debilidades. Usar una de ellas para llegar a root es la tarea de este laboratorio: cambia a la cuenta con pocos privilegios con su - intern (su contraseña está en README.md, que lees con cat README.md), averigua qué debilidad te lleva a root y demuéstralo como pide el README.

Para el profesorado

Consejo

Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. Esta lección usa un laboratorio de máquina virtual: cada alumno tiene su propia máquina Ubuntu con una segunda cuenta y tres debilidades ya instaladas. El laboratorio no tiene script de corrección, porque en esta máquina el alumno puede escribir cualquier archivo que un script pudiera leer: el alumno entrega un informe de la debilidad que usó y de los comandos que lo lograron, y usted lo lee. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del constructor de lecciones.

Sobre este laboratorio y su código: Laboratorio de escalada de privilegios en Linux: un binario setuid, una regla sudo, cron

¿Enseñas a una clase? Asigna estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.