Направљене поруке на форуму
-
АуторЧланци
-
japanУчесник
Obrati pažnju da pričam o određenoj distribuciji: Ubuntu, a trebalo bi da važi uopšteno na Debianu i njegovim derivatima. Naime, kod njih sh (tj. bash2) ne odbacuje suid privilegije ako jje podloga system() funkciji.
Ima li neko Ubuntu da to potvrdi i pokuša da dobije root shell?
aha…
system() will not, in fact, work properly from programs with suid or sgid privileges on systems on which /bin/sh is bash version 2, since bash 2 drops privileges on startup. (Debian uses a modified bash which does not do this when invoked as sh.)
japanУчесникIli slični problemi u ovom C kodu, na Ubuntu distribuciji:
[code]#include
#includeint main(int argc, char *argv[]) {
char cmd[50] = “ifconfig “;
strcat(cmd, argv[1]);
system(cmd);
return 0;}[/code]
# vi test.c
# make test
# chown root:wheel test
# chmod 4755 testIma li neko zaludan da se uključi?
[code][japan@hawk: work] $ ./a.out “eth0 down”
SIOCSIFFLAGS: Permission denied
[/code]
😯jesi ti dobio shell sa nekim od ovih primera? neki expansion bi trebalo da odradi, ali koji?
japanУчесникAjde da objasnimo prvo ljudima sta je suid bit.
Znaci kada neku aplikaciju moze da izvrsi samo root, a mi imamo potrebu da je izvrsavaju i obicni korisnici onda namestimo suid bit tako da i oni imaju mogucnost da je izvrsavaju datu aplikaciju, skriptu sta god bilo.
ovo nije baš najpreciznija definicija. ako korisnik nema exec pravo, on neće moći da izvrši taj program, bez obzira na suid bit.
o čemu se radi? za svaki proces postoje tri vrste id-ja – real id, effective id i saved id. ovde su zanimljiva prva dva. real id je onaj koji korisnik dobija pri logovanju, i on se uglavnom ne menja tokom cele sesije. effective id je ono što se dobija postavljanjem suid bita na program.
npr. neka program ima za vlasnika root-a. ako nema postavljen suid bit, pri izvršavanju ovog programa kreirani proces ima i real id i effective id korisnika koji ga je pokrenuo. ako program ima suid bit, onda će real id kreiranog procesa biti jednak id-ju korisnika koji ga je pokrenuo, a effective id će biti jednak id-ju vlasnika, u ovom primeru root 🙂[code]
[japan@hawk: work] $ cat > test.c
#include
int main(){
while(1);
return 0;
}
[japan@hawk: work] $ gcc test.c
[japan@hawk: work] $ ls -all a.out
-rwxr-xr-x 1 japan users 10923 2005-12-01 14:06 a.out*
[japan@hawk: work] $ su
Password:[root@hawk: work] # chown root.root a.out
[root@hawk: work] # logout
[japan@hawk: work] $ ls -all a.out
-rwxr-xr-x 1 root root 10923 2005-12-01 14:06 a.out*
[japan@hawk: work] $ ./a.out &
[1] 18054
[japan@hawk: work] $ ps axo ruid,euid,comm | grep a.out
1000 1000 a.out
[/code]
znači program se izvršava pod real id-jem 1000, i eff id-jem 1000. ako mu sad postavimo suid…
[code]
[japan@hawk: work] $ fg
./a.out[japan@hawk: work] $ su
Password:[root@hawk: work] # chmod 4755 a.out
[root@hawk: work] # logout
[japan@hawk: work] $ ls -all a.out
-rwsr-xr-x 1 root root 10923 2005-12-01 14:06 a.out*
[japan@hawk: work] $ ./a.out &
[1] 18079
[japan@hawk: work] $ ps axo ruid,euid,comm | grep a.out
1000 0 a.out
[/code]
…ima real id 1000 i effective id 0, tj id vlasnika(root)što se tiče shell skripti, stvar je malo drugačija:
[code]
[japan@hawk: work] $ cat > test.sh
#!/bin/bashwhile echo -n; do
sleep 1;
done;
[japan@hawk: work] $ ls -all test.sh
-rwxr-xr-x 1 japan users 46 2005-12-01 14:18 test.sh*
[japan@hawk: work] $ ./test.sh &
[1] 18176
[japan@hawk: work] $ ps axo ruid,euid,comm | grep test
1000 1000 test.sh
[japan@hawk: work] $ fg
./test.sh[japan@hawk: work] $ su
Password:[root@hawk: work] # chown root.root test.sh
[root@hawk: work] # logout
[japan@hawk: work] $ ls -all test.sh
-rwxr-xr-x 1 root root 46 2005-12-01 14:18 test.sh*
[japan@hawk: work] $ ./test.sh &
[1] 18205
[japan@hawk: work] $ ps axo ruid,euid,comm | grep test
1000 1000 test.sh
[japan@hawk: work] $ fg
./test.sh[japan@hawk: work] $ su
Password:[root@hawk: work] # chmod 4755 test.sh
[root@hawk: work] # logout
[japan@hawk: work] $ ls -all test.sh
-rwsr-xr-x 1 root root 46 2005-12-01 14:18 test.sh*
[japan@hawk: work] $ ./test.sh &
[1] 18230
[japan@hawk: work] $ ps axo ruid,euid,comm | grep test
1000 1000 test.sh
[/code]😉
japanУчесникDa li je neko uspeo da instalira drajver za Conexant HCF 56K modem
na Ubuntu 5.10 (naravno, onaj crack-ovani)?neko verovatno jeste…
nego bolje ti kaži gde ti je zapelo, da probamo zajedno da rešimo, nego da čekaš tog nekog 😉
japanУчесникObrati paznju na Reply.
http://www.banjalukaonline.com/forum/viewthread.php?tid=1066&page=1#pid8054
😀
japanУчесник@japan
Mislio sam, konkretan razlog. Vidim da se uglavnom tako radi, ali zasto? Sta moze da podje naopako?može nekoga mnogo da nervira što radiš make kao root i da ti u Makefile upiše neko malo rm -rf / 😈
ne, ekstrman primer, ali bi trebalo da ti je jasno koliko je tvoj sistem sigurniji ako ne radiš kao root nešto što makar i teorijski može da naškodi tvom sistemu, a možeš to isto da odradiš kao user… koristi root kad baš moraš, a sve što možeš da uradiš kao user, radi tako. jednostavno dobra praksa…
japanУчесникa koji je razlog da se radi drugačije?
jedino za make install ti je potreban root, pa ako samo to radiš kao root, manja je šansa sa se desi nešto neželjeno…
japanУчесникprobaj sa nekom drugom verzijom drajvera
japanУчесникa jesi ti siguran da je to posao administratora, a ne neke skripte koja čeka da se ciljani korisnik uloguje?
japanУчесникMa ja nemam ništa… ja to lepo pozajmim (naručim) , pa instaliram, pa šalji dalje… Ako pukne, nije ni zaslužilo drugu šansu… 😈 😈 😈 😈 😈
e dobar kriterijum 😆
-
АуторЧланци