Sto tentando di utilizzare LD_PRELOAD
per precaricare una libreria con un'applicazione con autorizzazioni setuid. Provato LD_PRELOAD
in un primo momento, e sembrava come se fosse stato ignorato con il file binario setuid, anche se funzionava quando ho provato con altri come ls
, dir
eccLD_PRELOAD con binario setuid
Dalla documentazione di LD_PRELOAD:
LD_PRELOAD
A whitespace-separated list of additional, user-specified, ELF shared
libraries to be loaded before all others. This can be used to
selectively override functions in other shared libraries. For set-
user-ID/set-group-ID ELF binaries, only libraries in the standard
search directories that are also set-user-ID will be loaded.
Ho provato a mettere la libreria in /usr/lib
, /usr/local/lib
e /usr/lib64
con i permessi setuid come da questa documentazione sopra, ma ancora non sembra funzionare. Se non diamo a LD_PRELOAD
un percorso nel caso in cui io abbia la libreria nelle dir standard con setuid, non riesco a trovare la libreria. Se gli dò il percorso, non fa nulla.
Il binario setuid è un binario di permessi di root eseguito in una shell utente non root. qualche idea? Non sono sicuro se mi manca un percorso, una variabile di ambiente, o sto fraintendendo la documentazione di cui sopra.
Edit: permessi come richiesti sono:
libreria:
-rwsr-sr-x 1 root root 72580 2012-02-10 07:51
App:
-rwsr-xr-x 1 root root 137517601 2012-02-10
env | grep LD
LD_LIBRARY_PATH=/usr/lib (I added this manually myself, usually LD_LIBRARY_PATH is empty)
Stai utilizzando SELinux? –
Sì, Suse enterprise 11.1 è ciò che sono attualmente in esecuzione .. –
Finalmente ha funzionato. In tutta la serie di test, devo aver incasinato qualcosa. Mettendolo in lib64 con le giuste autorizzazioni (setuid) e NON fornendo un percorso a LD_PRELOAD ha funzionato. Grazie per tutto il tuo aiuto ragazzi! –