Permisos y explotación
Veremos como leer los permisos de un fichero y como encontrar permisos para realizar la explotación.
Última actualización
Veremos como leer los permisos de un fichero y como encontrar permisos para realizar la explotación.
Última actualización
X
puede tener dos significados, en caso de que sea una fichero significa que tienes permiso para ejecutarlo y si es un directorio significa que puedes entrar.
7
5
5
7 = 1+2+4
5 = 1+4
5 = 1+4
La posición se cuenta desde la derecha, cada letra tendría los siguientes números:
x = 1
w = 2
r =4
Todo esta convertido de binario a decimal. Para saber como realizar la conversión mira el siguiente punto.
101
100
010
5
4
2
En el primer ejemplo (r-x) tendríamos que contar la posición desde la derecha, seria así:
0 = x
1 = -
2 = r
Solo operamos con las posiciones que tengan un 1, es decir, con la posición 0 y 2.
A continuación elevamos 2 a cada posición:
2^0 + 2^2 = 1 + 4 = 5
2^2 = 4
2^1 = 2
Los atributos de ficheros nos permiten restringir aún más las operaciones a realizar con nuestros ficheros y directorios. El comando chattr
se utiliza para cambiar estos atributos. Es uno de los mas útiles para salvaguardar la integridad de sus ficheros importantes.
El uso del comando está restringido naturalmente al usuario root y en algunos casos al propietario del fichero.
En el siguiente ejemplo vemos como evitar que el propio usuario borre un fichero:
+i
Añade flag que impide borrar el fichero incluido el usuario root.
-V
Muestra todo lo que realiza el comando.
Si queremos ver los atributos que tiene un fichero utilizamos el siguiente comando:
Los permisos SUID son permisos de acceso que pueden asignarse a archivos o directorios. Son utilizados principalmente para permitir a los usuarios del sistema ejecutar binarios con privilegios elevados temporalmente para realizar una tarea específica.
Si un fichero tiene activado el bit Setuid se identifica con una s
de la siguiente forma:
Esta propiedad es necesaria para que los usuarios normales puedan realizar tareas que requieran privilegios más altos que los que dispone un usuario común.
Asignamos el permiso setuid, por ejemplo, el comando find es 755, con chmod
añadimos un 4 al permiso del archivo, quedaría así:
Ahora buscaríamos en GTFOBins el comando que tiene ese permiso, en este caso, el comando find.
GTFOBins nos dice que ejecutemos el siguiente comando para obtener una sh:
Así conseguimos acceso root gracias a que el comando find tenia asignado un permiso setuid.
Para buscar permisos suid en la maquina victima utilizaremos la herramienta find de la siguiente manera:
2>/dev/null
se utiliza para evitar que salgan errores por la terminal, como no tenemos acceso a todos los ficheros de la maquina saldrían muchos avisos de Permision denied
y de esta forma lo evitamos.
Buscar archivos con permisos de escritura:
Si tenemos permiso para ver el archivo shadows podremos ver las contraseñas de los usuarios hasheadas en un formato sha-512.
Podemos ver el tipo de hash que utiliza nuestra distribucin de linux con el siguiente comando: cat /etc/login.defs | grep "ENCRYPT_METHOD"
Desencriptaremos las contraseñas por fuerza bruta, por ejemplo con el diccionario rockyou.
Exportamos el hash:
Crackeamos:
Vemos la contraseña:
Si tenemos permisos para escribir en el /etc/passwd
haremos lo siguiente:
Nos creamos una contraseña:
Veremos un hash y lo copiamos.
Con hash
y hashid
podemos saber en que formato esta hecho.
Modificamos el /etc/passwd
y ponemos el hash que hemos generado para así loguearnos como ese usuario con la contraseña creada anteriormente.
Asignaremos un capabilite para realizar la prueba:
En este caso estamos asignando una capabilitie de tipo setuid, podemos ver mas tipos aqui.
Para obtener las capabilities que tenemos asignadas actualmente:
En este caso encontraremos una capabilitie de python tipo cap_setuid+ep
.
Aprovecharemos esta capabilitie para lanzarnos una bash con privilegios de root: