PATH hijacking

Linux privilege escalation

Path Hijacking es cuando un atacante se aprovecha del orden en el que un sistema operativo busca los programas que quiere ejecutar. En lugar de usar la versión correcta de un programa (como una herramienta del sistema), el sistema termina usando un archivo malicioso que el atacante puso en una carpeta que se revisa antes en la lista de búsqueda.

Ejemplo : El sistema quiere ejecutar ping. Pero en lugar de buscarlo en /usr/bin/ping, primero revisa una carpeta donde el atacante puso un archivo que también se llama ping, pero que en realidad es un malware. Como esa carpeta está antes en el PATH (la lista de lugares donde el sistema busca programas), termina ejecutando el archivo del atacante sin darse cuenta.

para poder ver el path de nuestro sistema o el comprometido podemos utilizar el siguiente comando :

echo $PATH

se deberia ver algo asi :

para el ejemplo de una explotación, podemos suponer que algún binario especifico por ejemplo ejecuta un comando, podemos suponerlo al ver como funciona el output, también podemos comprobarlo filtrando por el comando como podemos ver en el ejemplo :

strings testbinary | grep whoami

aquí filtramos si se utiliza whoami, aunque como mencionado anteriormente se puede suponer con el output. Si estos comandos ejecutados no se corren mediante la ruta absoluta hace ese binario vulnerable. Recordemos que la ruta absoluta es la lugar exacta del sistema de un comando, por ejemplo :

/usr/bin/whoami

Si tenemos permiso en el sistema objetivo de modificar el PATH, podemos utilizar ese privilegio para poner el directorio que nosotros queramos como primero en el PATH y evitar problemas :

export PATH=/tmp/:$PATH

si no sabes que permisos tienes, solo se trata de probarlo para ver si te deja o no. Siempre haz Prueba y Error

imaginemos que pudimos modificar el PATH como vimos anteriormente o encontramos una carpeta vacía para secuestrar antes que la carpeta donde esta el comando original, el siguiente paso es crear el nuevo "comando" malicioso en la carpeta que vamos a usar, para este ejemplo usaremos el comando whoami

touch whoami # creamos el archivo
chmod +x whoami # asignamos permisos de ejecucion
nano whoami # abrimos el archivo para poner el codigo malicioso

Para este ejemplo supondremos que el binario es SUID por lo que podemos ejecutarlo como root

bash -p # contenido del archivo whoami, anque puede ser cualquier codigo

por lo que, al ejecutar el binario con SUID que ejecuta whoami, secuestramos exitosamente y nos da una bash como root

para este ejemplo numero 2 supondremos que root ejecutara el binario sin saber que hubo un secuestro del PATH

chmod u+s bash

al poner este código en el archivo whoami, si root ejecuta el binario se acontece el PATH hijacking y le da SUID a la bash, por lo que podremos convertirnos en root al ejecutar la terminal.

Espero hayas entendido el path hijacking y descifres en tu mente como mas lo podrias usar.

Last updated