ld.so privesc exploit example
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 que libcustom.so esté siendo cargado desde /usr/lib y que puedas ejecutar el binario.
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, está cargándolo 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.
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.
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.
Entonces, vamos a crear los archivos y carpetas necesarios para cargar "/tmp":
Ahora, como se indica en el exploit anterior, crea la biblioteca maliciosa dentro de /tmp
.
Y finalmente, carguemos la ruta y verifiquemos de dónde se está cargando el binario:
Como puedes ver, tener privilegios de sudo sobre ldconfig
te permite explotar la misma vulnerabilidad.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)