Curiosidades De Hackers
ESCALADA DE PRIVILEGIOS LINUXLINUX

PATH HIJACKING


PATH Hijacking

PATH Hijacking es una técnica utilizada por los atacantes para secuestrar comandos de un sistema Unix/Linux mediante la manipulación del PATH. El PATH es una variable de entorno que define las rutas de búsqueda para los archivos ejecutables en el sistema.

En algunos binarios compilados, algunos de los comandos definidos internamente pueden ser indicados con una ruta relativa en lugar de una ruta absoluta. Esto significa que el binario busca los archivos ejecutables en las rutas especificadas en el PATH, en lugar de utilizar la ruta absoluta del archivo ejecutable.

Si un atacante es capaz de alterar el PATH y crear un nuevo archivo con el mismo nombre de uno de los comandos definidos internamente en el binario, puede lograr que el binario ejecute la versión maliciosa del comando en lugar de la versión legítima.

Por ejemplo, si un binario compilado utiliza el comando “ls” sin su ruta absoluta en su código y el atacante crea un archivo malicioso llamado “ls” en una de las rutas especificadas en el PATH, el binario ejecutará el archivo malicioso en lugar del comando legítimo “ls” cuando sea llamado.

Para prevenir el PATH Hijacking, se recomienda utilizar rutas absolutas en lugar de rutas relativas en los comandos definidos internamente en los binarios compilados. Además, es importante asegurarse de que las rutas en el PATH sean controladas y limitadas a las rutas necesarias para el sistema. También se recomienda utilizar la opción de permisos de ejecución para los archivos ejecutables solo para los usuarios y grupos autorizados.

_______

Nos vamos a crear un script en C y le damos permisos SUID:

Captura de pantalla de creación de script en C

Aquí viene el problema:

Captura de pantalla de problema de PATH Hijacking

¿Por qué sabe que es ls al ponerlo de forma relativa y no hay que poner la ruta absoluta? Porque en el PATH ls está contemplado dentro de /usr/bin/ls y de forma automática busca ruta por ruta de una a una hasta que exista.

Captura de pantalla de búsqueda en PATH

Si hacemos esto ahora nos muestra el directorio /tmp/ como prioritario. De forma que si ahora nos creamos un binario que se llame whoami, en el directorio /tmp/, indicando que nos lance una bash privilegiada, y ejecutamos ese script llamado test, al ir buscando en el PATH la ruta absoluta, escogería nuestro whoami antes que otro, puesto que la prioridad en el PATH va de izquierda a derecha.

Captura de pantalla de creación de script whoami Captura de pantalla de script whoami en PATH

Somos root:

Captura de pantalla de shell como root