Python Library Hijacking

Linux privilege escalation

el Python Library Hijacking es un ataque MUY parecido al PATH hijacking : el path de python busca librerías en un código mediante un PATH que busca el archivo de la librería en diferentes directorios partiendo del directorio actual del script, si un atacante logra secuestrar ese PATH como en el PATH hijacking puede modificar las funciones de la librería en el script de Python abriendo la posibilidad de escalar privilegios.

Primero debemos ejecutar el script victima del ataque e identificar como haremos que este secuestro de librería hará que escalemos privilegios (SUID o ejecución de una persona mas privilegiada por ejemplo).

Ahora, para enumerar el path de Python en la maquina victima podemos hacer lo siguiente :

nano pythonPath.py

dentro del editor ponemos el siguiente código :

import sys

path = sys.path
print(path)

o simplemente hacer eso desde el interprete de Python.

Explotación

ahora si toca lo bueno.

Al identificar el script victima, hay que buscar en el sistema donde se ubica la librería que queremos secuestrar :

find / -iname "libreria.py"
find / -iname "la_mitad_del_nombre_de_la_libreria_antes_del_asterisco*"

si encontramos la librería, podemos cambiar el código al nuestro si es que tenemos permiso de hacerlo, si no tenemos vamos otra vez al directorio donde esta el script mismo objetivo y ahi crearemos un script de python con el mismo nombre de la librería :

import os

os.system("bash -p")

este código nos dará una consola privilegiada. Nos servira si el script a ejecutar es SUID.

Pero en otros casos, como por ejemplo si un usuario privilegiado debe ejecutar el script podemos utilizar este codigo :

import os

os.system("chmod u+s bash")"

Que asignara SUID a la bash para que nosotros la podamos ejecutar con privilegios.

Last updated