it-swarm-es.com

¿Qué impide que funcione este exploit (unix SUID)?

Si tengo un usuario en un sistema Unix donde se me permite crear nuevos archivos, ¿qué me impide descargar un archivo ejecutable en ese sistema que ya está SUID'ed para rootear en un sistema diferente?

Guión:

  • Estoy conectado a un Shell con mi usuario Karrax (cuadro1)
  • En un sistema diferente (box2) donde ya soy root, configuro SUID root en un ejecutable
  • Luego transfiero/copio el archivo a box1

¿Qué impide que este archivo se ejecute como root en el primer Shell en el que inicié sesión?

10
Chris Dale

Cuando copia un archivo a un sistema de archivos diferente, lo que sucede bajo el capó es que crea un nuevo archivo y copia el contenido. Mover un archivo a un sistema de archivos diferente se realiza copiando y luego eliminando la fuente. Por lo tanto, no tiene más privilegios al copiar un archivo que en cualquier otro momento en el que está creando un archivo.

Cuando crea un archivo, le pertenece. Muchas variantes de Unix restringen el cambio de propietario (chown) a root. Incluso aquellos que permiten que el propietario de un archivo lo regale, borran los bits setuid y setgid al hacerlo. Los cambios de propiedad de grupo (chgrp) también borran los bits setxid a menos que se invoquen con privilegios de root. Y necesita ser propietario del archivo o ser root para cambiar sus permisos. Por lo tanto, no puede crear un archivo setxid para un usuario o grupo para el que no tiene permiso para ejecutar programas.

Un vector diferente para la inyección de archivos setxid es el montaje del sistema de archivos. La mayoría de las configuraciones solo permiten los bits setxid en sistemas de archivos montados directamente por root (a diferencia de /etc/fstab entradas con la opción user en Linux, Samba, Fuse,…). A veces, por ejemplo, con los montajes NFS, depende del administrador del sistema asegurarse de que los sistemas de archivos se monten con la opción nosuid.

ACTUALIZACIÓN: ignore mi anterior respuesta equivocada, que he editado aquí para evitar confundir a la gente. Gilles tiene una respuesta mucho mejor, que podría incorporar aquí o reformular, pero se merece el crédito ...

Si realmente desea ver lo que tenía antes, como siempre, puede encontrarlo en el historial de edición haciendo clic en el momento de la edición.

3
nealmcb

Te acercas a este comportamiento cuando descargas el tarball de alguien y lo extraes, 'conservando la propiedad/permisos' si el uid es 7544, verás ese uid para los archivos que descomprimes si eres root, errores probables si eres un usuario no privilegiado.

3
hpavc