ld.so privesc exploit example
Prepara l'ambiente
Nella sezione seguente puoi trovare il codice dei file che useremo per preparare l'ambiente
Crea questi 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
Verifica l'ambiente
Verifica che libcustom.so venga caricata da /usr/lib e che tu possa eseguire il binario.
Sfruttare
In questo scenario supponiamo che qualcuno abbia creato una voce 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 malevola libcustom all'interno del percorso configurato in modo errato, dobbiamo aspettare un riavvio o che l'utente root esegua ldconfig
(nel caso in cui tu possa eseguire questo binario come sudo o abbia il bit suid, sarai in grado di eseguirlo tu stesso).
Una volta che ciò è accaduto, ricontrolla da dove viene caricata la libreria libcustom.so
nell'eseguibile sharevuln
:
Come puoi vedere, viene caricato da /home/ubuntu/lib
e se un utente lo esegue, verrà eseguita una shell:
Si noti che in questo esempio non abbiamo ottenuto privilegi elevati, ma modificando i comandi eseguiti e attendendo che l'utente root o un altro utente privilegiato esegua il binario vulnerabile, saremo in grado di ottenere privilegi elevati.
Altre configurazioni errate - Stessa vulnerabilità
Nell'esempio precedente abbiamo simulato una configurazione errata in cui un amministratore ha impostato una cartella non privilegiata all'interno di un file di configurazione all'interno di /etc/ld.so.conf.d/
.
Ma ci sono altre configurazioni errate che possono causare la stessa vulnerabilità, se si hanno permessi di scrittura su alcuni 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
, è possibile configurare la stessa vulnerabilità e sfruttarla.
Exploit 2
Supponiamo di avere privilegi sudo su ldconfig
.
È possibile indicare a ldconfig
da dove caricare i file di configurazione, quindi possiamo sfruttarlo per far caricare a ldconfig
cartelle arbitrarie.
Quindi, creiamo i file e le cartelle necessari per caricare "/tmp":
Ora, come indicato nell'exploit precedente, crea la libreria malevola all'interno di /tmp
.
Infine, carichiamo il percorso e verifichiamo da dove viene caricata la libreria binaria:
Come puoi vedere, avendo i privilegi sudo su ldconfig
puoi sfruttare la stessa vulnerabilità.
Non ho trovato un modo affidabile per sfruttare questa vulnerabilità se ldconfig
è configurato con il bit suid. Compare l'errore seguente: /sbin/ldconfig.real: Impossibile creare il file di cache temporanea /etc/ld.so.cache~: Permesso negato
Riferimenti
Dab machine in HTB
Last updated