ld.so privesc exploit example
Preparar el entorno
En la siguiente sección puedes encontrar el código de los archivos que vamos a utilizar 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
Comprueba que libcustom.so se está cargando desde /usr/lib y que puedes ejecutar el binario.
Explotación
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). Descarga y compila el siguiente código dentro de esa ruta:
Ahora que hemos creado la maliciosa librería libcustom dentro de la ruta mal configurada, necesitamos esperar por un reinicio o a que el usuario root ejecute ldconfig
(en caso de que puedas ejecutar este binario como sudo o tenga el bit suid podrás ejecutarlo tú mismo).
Una vez que esto haya sucedido, revisa de nuevo de dónde está cargando el ejecutable sharevuln
la librería libcustom.so
:
Como puedes ver, se está cargando desde /home/ubuntu/lib
y si algún usuario lo ejecuta, se ejecutará una shell:
Tenga en cuenta que en este ejemplo no hemos escalado privilegios, pero modificando los comandos ejecutados y esperando a que el root u otro usuario con privilegios ejecute el binario vulnerable podremos escalar privilegios.
Otras desconfiguraciones - Misma vuln
En el ejemplo anterior simulamos una desconfiguración donde un administrador estableció una carpeta sin privilegios dentro de un archivo de configuración en /etc/ld.so.conf.d/
.
Pero hay otras desconfiguraciones 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
Supongamos que tienes privilegios sudo sobre ldconfig
.
Puedes indicar a ldconfig
de dónde cargar los archivos de conf, así que podemos aprovecharlo para hacer que ldconfig
cargue carpetas arbitrarias.
Entonces, vamos a crear los archivos y carpetas necesarios para cargar "/tmp":
Ahora, como se indicó en el exploit anterior, crea la biblioteca maliciosa dentro de /tmp
.
Y finalmente, carguemos la ruta y verifiquemos de dónde está cargando la biblioteca el binario:
Como puedes ver, teniendo privilegios sudo sobre ldconfig
puedes explotar la misma vulnerabilidad.
No encontré una manera confiable de explotar esta vulnerabilidad si ldconfig
está configurado con el bit suid. Aparece el siguiente error: /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
Referencias
Dab machine en HTB
Última actualización