Posts Escalación de privilegios - Hijacking librerías python
Post
Cancel

Escalación de privilegios - Hijacking librerías python

Introducción

A veces, nos enfrentamos a un sistema que tiene permisos mal configurados en su librería de Python, usualmente, en los directorios donde se alojan los módulos de Python tienen los permisos configurados de tal manera, que no pueden ser modificados sin ser un usuario privilegiado, entonces sabiendo esto, aquí hay unas cuantas maneras que podemos usar para crear/identificar esta vulnerabilidad

1) El usuario crea su propio módulo de python y se olvida de restringir el acceso a él

2) La variable PATH para la librería de python está configurada para revisar el directorio actual en el que se encuentra el archivo python

Enumerando el path de python

Desde nuestra terminal, podemos ejecutar el siguiente comando:

1
python -c 'import sys; print(sys.path)'

1

Esto nos muestra una lista de rutas donde python va a buscar cuando el usuario importe los módulos, en ese orden de lista, entonces ya sabemos cuales directorios enumerar primero, cuando encontremos un directorio al cual atacar, podemos empezar a modificar nuestro objetivo en python o en la librería

Escalando privilegios

En mi propia máquina voy a hacer una demostración de cómo poder elevar privilegios, cómo prueba de concepto

Voy a crear un archivo .py que se llame “poc”, lo que hace es simple, imprime en la pantalla un texto “hello world” pero podemos ver que hay un módulo importado llamado “cool” si le hacemos un cat al archivo “cool.py” que está en el directorio /usr/lib/python2.7 observamos que el script tiene una orden para imprimir el texto “Esto es un texto”

2

3

Ahora suponiendo que solo tenemos acceso de lectura a “poc.py”, pero tenemos acceso de escritura en nuestro módulo “cool.py”, podemos sobreescribir ese módulo para poder ganar acceso al sistema cada vez que alguien que tenga los permisos para ejecutar “poc.py”, por ejemplo podríamos poner nuestra propia reverse shell o en caso de que tengamos el permiso de ejecución del script pero no para modificarlo, igualmente se puede modificar el módulo para obtener una shell en bash con privilegios elevados ;)

This post is licensed under CC BY 4.0 by the author.