Escapar de una carcel para root o (Chroot Jail)
El aislamiento es un enfoque de seguridad proporcionado por muchos sistemas informáticos. Se basa en dividir el sistema en partes independientes más pequeñas para asegurarse de que un subsistema comprometido no pueda afectar a todo el servidor. Este enfoque está presente en todos los sistemas operativos modernos (por ejemplo, cuentas de usuario , procesamiento de espacios de direcciones etc.)
chroot Jail es una forma de separar un proceso que no se ejecuta como root y sus hijos del resto del sistema mediante la creación de una llamada Jail usando chroot () (la llamada del sistema es una interfaz entre una aplicación y el kernel de Linux). La idea es crear un directorio y hacer que el proceso piense que está en la carpeta raíz y que no le permita acceder o modificar fuera del enjaulamiento. Veamos cómo construir este jail y cómo podríamos escapar de el.
Configurar un usuario enjaulado
Crear un nuevo usuario: sudo adduser prisoner
Añadimos el usuario al grupo root: sudo gpasswd -a prisoner root
Creamos una carpeta chroot con: mkdir chroot
accedemos a chroot (cd /chroot ) y creamos los directorios bin,dev, etc, home, home/prisoner, lib, var, usr, usr/bin
Con el siguiente comando: mkdir bin dev etc home home/prisoner lib var usr usr/bin
(Necesitamos como minimo los directorios bin y lib dentro del directorio enjaulado.)
Ahora copiaremos el bash shell que queremos que el usuario enjaulado pueda usar con el comando: cp / bin / bash / chroot / bin /
Para asegurarnos de que bash funcione correctamente, necesitamos localizar las bibliotecas necesarias y copiarlas en la carpeta /lib dentro de la carpeta enjaulada: ldd /bin/bash
Ahora usaremos el comando Magic Chroot: sudo chroot /chroot /bin/bash
PD: Si recibes este error: chroot: failed to run command ‘/bin/bash’ no such file or directory revisa este LINK.
Con esto ya tendríamos nuestro usuario encarcelado!!
Pero como hemos comentado… Hecha la ley hecha la trampa!! Y ahora vamos a ver como podríamos fugarnos de esta cárcel.
- Primero debemos averiguar que comandos tenemos disponibles simplemente probando con: cd, ls, pwd, cp, vi etc … para así saber que herramientas tenemos para fugarnos.
- Conocer las variables $ SHELL y $ PATH usando: echo $PATH y echo $SHELL.
- Hay diferentes métodos para fugarse como por ejemplo:
- Si ‘/’ está disponible, simplemente ejecute /bin/bash
- Si ‘set’ está disponible, ejecute: export PATH=/bin:/usr/bin:$PATH después ejecuta export SHELL=/bin/shh
- Utilizar otros comandos del sistema, por ejemplo: awk ‘BEGIN {system(“/bin/sh”)}’
- Usar un lenguaje de scripting, por ejemplo: python – c ‘import os;os.system(“/bin/bash”)’
Con esto en la mayoría los casos habríamos escapado de estas jaulas, hay métodos mas fiables con los que enjaular usuarios y hacer mas difícil estos procesos, pero hoy se trataba de enseñar un poco como funcionaba este tipo de encarcelamiento o mas correctamente dicho (Jail Chroot).