El permiso Set User ID upon Execution (setuid) permite que un usuario ejecute un programa o script con los permisos de otro usuario, normalmente con privilegios elevados. El bit setuid aparece como un s :
Es posible realizar ingeniería inversa del programa con el bit SETUID activado, identificar una vulnerabilidad y explotarla para aumentar nuestros privilegios. Muchos programas tienen funciones adicionales que se pueden aprovechar para ejecutar comandos y, si el bit setuid está activado, se pueden usar para nuestro propósito.
SETGID
El permiso Set-Group-ID (setgid) es otro permiso especial que nos permite ejecutar archivos binarios como si fuéramos parte del grupo que los creó. Estos archivos se pueden enumerar utilizando el siguiente comando: find / -uid 0 -perm -6000 -type f 2>/dev/null. Estos archivos se pueden utilizar de la misma manera que los archivos binarios setuid para escalar privilegios.
Este recurso tiene más información sobre los bits setuid y setgid, incluido cómo configurar los bits.
GTFOBins
El proyecto GTFOBins es una lista seleccionada de archivos binarios y scripts que un atacante puede usar para eludir las restricciones de seguridad. Cada página detalla las características del programa que se pueden usar para salir de los shells restringidos, aumentar los privilegios, generar conexiones de shell inversas y transferir archivos. Por ejemplo, se puede usar apt-get para salir de entornos restringidos y generar un shell agregando un comando Pre-Invoke:
Vale la pena familiarizarnos con tantos GTFOBins como sea posible para identificar rápidamente configuraciones erróneas cuando llegamos a un sistema en el que debemos escalar nuestros privilegios para avanzar.
Caso práctico
SSH a 10.129.16.168 (ACADEMY-LPE-NIX02)
User "htb-student"
Password "Academy_LLPE!"
Pregunta 1
Busque un archivo con el bit setuid establecido que no se mostró en la salida del comando de sección (ruta completa al binario).
Concretamente el archivo es /bin/sed, pero encontramos otros archivos más interesantes.
De la salida del comando find, los archivos con el bit SUID activado son aquellos que permiten que un usuario ejecute el archivo con los permisos del propietario del archivo, que generalmente es root.
Entre los archivos listados, parece que hay dos que no son comunes o esperados del sistema estándar:
/home/htb-student/shared_obj_hijack/payroll
/home/mrb3n/payroll
Estos archivos se encuentran en directorios de usuarios y no forman parte de los binarios del sistema (como /bin o /usr/bin). Podrían ser binarios personalizados o scripts creados con el propósito de explotar el bit SUID para escalar privilegios o realizar tareas administrativas.
Archivo destacado con SUID:
/home/htb-student/shared_obj_hijack/payroll: Este archivo parece haber sido creado específicamente en el entorno actual. Es el que vamos investigar más a fondo, ya que es poco común que un archivo de este tipo esté en el directorio de un usuario, y podría haber sido creado para el propósito de pruebas o explotación.
Ejecutando el binario
Probamos a ejecutar el binario y buuum, nos convertimos en root!