ld.so privesc exploit example
Prepara l'ambiente
Nella sezione seguente puoi trovare il codice dei file che utilizzeremo per preparare l'ambiente
Crea quei file nella tua macchina nella stessa cartella
Compila la libreria:
gcc -shared -o libcustom.so -fPIC libcustom.c
Copia
libcustom.so
in/usr/lib
:sudo cp libcustom.so /usr/lib
(privilegi di root)Compila l'eseguibile:
gcc sharedvuln.c -o sharedvuln -lcustom
Controlla l'ambiente
Controlla che libcustom.so venga caricato da /usr/lib e che tu possa eseguire il binario.
Exploit
In questo scenario supponiamo che qualcuno abbia creato un'entrata vulnerabile all'interno di un file in /etc/ld.so.conf/:
La cartella vulnerabile è /home/ubuntu/lib (dove abbiamo accesso in scrittura). Scarica e compila il seguente codice all'interno di quel percorso:
Ora che abbiamo creato la libreria maligna libcustom all'interno del percorso mal configurato, dobbiamo aspettare un riavvio o che l'utente root esegua ldconfig
(nel caso tu possa eseguire questo binario come sudo o abbia il bit suid potrai eseguirlo tu stesso).
Una volta che ciò è accaduto, ricontrolla da dove l'eseguibile sharevuln
sta caricando la libreria libcustom.so
:
Come puoi vedere, lo sta caricando da /home/ubuntu/lib
e se un utente lo esegue, verrà eseguita una shell:
Nota che in questo esempio non abbiamo elevato i privilegi, ma modificando i comandi eseguiti e aspettando che l'utente root o un altro utente privilegiato esegua il binario vulnerabile saremo in grado di elevare i privilegi.
Altre misconfigurazioni - Stessa vulnerabilità
Nell'esempio precedente abbiamo simulato una misconfigurazione in cui un amministratore ha impostato una cartella non privilegiata all'interno di un file di configurazione in /etc/ld.so.conf.d/
.
Ma ci sono altre misconfigurazioni che possono causare la stessa vulnerabilità; se hai permessi di scrittura in qualche file di configurazione all'interno di /etc/ld.so.conf.d
, nella cartella /etc/ld.so.conf.d
o nel file /etc/ld.so.conf
, puoi configurare la stessa vulnerabilità e sfruttarla.
Exploit 2
Supponi di avere privilegi sudo su ldconfig
.
Puoi indicare a ldconfig
da dove caricare i file di configurazione, quindi possiamo approfittarne per far caricare a ldconfig
cartelle arbitrarie.
Quindi, creiamo i file e le cartelle necessari per caricare "/tmp":
Ora, come indicato nel precedente exploit, crea la libreria malevola all'interno di /tmp
.
E infine, carichiamo il percorso e verifichiamo da dove viene caricata la libreria:
Come puoi vedere, avere privilegi sudo su ldconfig
ti consente di sfruttare la stessa vulnerabilità.
Last updated