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.
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.Por si no entendiste : cuando ejecutas algún comando, el sistema utiliza el PATH para buscar en que ruta se encuentra ese comando, pero si un atacante identifica que un comando se ejecuta antes que otra carpeta contemplada en el PATH, podríamos usar ese directorio que va primero en el path para secuestrar el PATH y ejecutar lo que nosotros queramos cuando se use ese comando objetivo. Ejemplo de como se veria ver el PATH abajo :

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