¿Por qué se querrá encontrar este tipo de archivos? La respuesta más directa que se puede dar es, por si los podemos utilizar para una escalada de privilegios. Pero si se entra más en detalle para comprenderlo:
- SUID >> Sirve para indicar, que el fichero se va a ejecutar con los permisos del creador del fichero.
- SGID >> Exactamente lo mismo que SUID, pero dirigida al grupo, por lo tanto, se ejecutará con los permisos del grupo al que pertenece.
- Usuario Root >> Nos interesa para la elevación de privilegios, un usuario estándar no será de nuestro interés.
Este módulo se puede ejecutar de 2 formas:
- Recursiva: busca los ficheros a partir de un directorio indicado.
- Normal: solo busca ficheros en un determinado directorio.
El resultado se mostrará por pantalla, pero también se puede guardar en un fichero (la ruta por defecto es una carpeta interna de la herramienta), ya que nos permitirá consultarlo más adelante.
Para llevar a cabo esta prueba, se utilizarán los siguientes comandos:
- load linux/gathering/suid_sgid_root
- put path /bin
- put recursive False
- run
Y al ejecutarlo, en modo no recursivo, se tiene el siguiente resultado (la línea que pone Recursive mode se trata de un pequeño fallo que teníamos al pintar el modo que se lanzaba o.O):
Si se comprueba la dirección indicada para el fichero, y se abre el documento se obtiene la misma información que la que se vio en la terminal:
El código se puede consultar en GitHub. Destacaremos los puntos más importantes, que son las líneas que nos ayudan a comprobar SUID o SGID:
if (mode & S_ISUID) == 2048:
if (mode & S_ISGID) == 1024:
Las variables S_ISUID y S_ISGID están definidas en el módulo stat, basta con importarlas y la variable mode se obtiene del siguiente código:
f = stat(file_name)
mode = f.st_mode
Indicar que stat se encuentra en el módulo os.
Pues aquí terminamos con este post. ¡Nos vemos en la próxima entrada!
No hay comentarios:
Publicar un comentario