ld.so privesc exploit example
Prepare the environment
En la siguiente sección puedes encontrar el código de los archivos que vamos a usar para preparar el entorno
Crea esos archivos en tu máquina en la misma carpeta
Compila la biblioteca:
gcc -shared -o libcustom.so -fPIC libcustom.c
Copia
libcustom.so
a/usr/lib
:sudo cp libcustom.so /usr/lib
(privilegios de root)Compila el ejecutable:
gcc sharedvuln.c -o sharedvuln -lcustom
Verifica el entorno
Verifica que libcustom.so esté siendo cargada desde /usr/lib y que puedas ejecutar el binario.
Exploit
En este escenario vamos a suponer que alguien ha creado una entrada vulnerable dentro de un archivo en /etc/ld.so.conf/:
La carpeta vulnerable es /home/ubuntu/lib (donde tenemos acceso de escritura). Descargue y compile el siguiente código dentro de esa ruta:
Ahora que hemos creado la biblioteca maliciosa libcustom dentro de la ruta mal configurada, necesitamos esperar a un reinicio o a que el usuario root ejecute ldconfig
(en caso de que puedas ejecutar este binario como sudo o tenga el suid bit, podrás ejecutarlo tú mismo).
Una vez que esto haya sucedido, verifica de nuevo de dónde está cargando el ejecutable sharevuln
la biblioteca libcustom.so
:
Como puedes ver, lo está cargando desde /home/ubuntu/lib
y si algún usuario lo ejecuta, se ejecutará un shell:
Nota que en este ejemplo no hemos escalado privilegios, pero modificando los comandos ejecutados y esperando a que el usuario root u otro usuario privilegiado ejecute el binario vulnerable podremos escalar privilegios.
Otras configuraciones incorrectas - Misma vulnerabilidad
En el ejemplo anterior simulamos una configuración incorrecta donde un administrador estableció una carpeta no privilegiada dentro de un archivo de configuración dentro de /etc/ld.so.conf.d/
.
Pero hay otras configuraciones incorrectas que pueden causar la misma vulnerabilidad; si tienes permisos de escritura en algún archivo de configuración dentro de /etc/ld.so.conf.d
, en la carpeta /etc/ld.so.conf.d
o en el archivo /etc/ld.so.conf
, puedes configurar la misma vulnerabilidad y explotarla.
Exploit 2
Supón que tienes privilegios de sudo sobre ldconfig
.
Puedes indicar a ldconfig
dónde cargar los archivos de configuración, así que podemos aprovechar esto para hacer que ldconfig
cargue carpetas arbitrarias.
Así que, vamos a crear los archivos y carpetas necesarios para cargar "/tmp":
Ahora, como se indica en la explotación anterior, crea la biblioteca maliciosa dentro de /tmp
.
Y finalmente, carguemos la ruta y verifiquemos de dónde está cargando el binario la biblioteca:
Como puedes ver, tener privilegios de sudo sobre ldconfig
te permite explotar la misma vulnerabilidad.
Last updated