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.
getent passwd internSe 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.
ls -l /usr/local/bin/sysfindSe 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.
sudo cat /etc/sudoers.d/90-lab-internSe 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.
ls -l /opt/maintenance/cleanup.shSe 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.
sudo crontab -l -u rootSe 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.