lowercase v shellu

Alexandr Malusek malusek na hroch.ujf.cas.cz
Úterý Červen 13 12:35:17 CEST 2000


barney <barney na kmit.sk> writes:

> > > na tento problem mam vsak radsej:
> > >   eval `find "$dir" -mindept 1 -printf "mv ..."`
> > > alebo
> > >   find "$dir" -mindept 1 -printf "mv ..." | bash
> > 
> > Uff, proti gustu zadny disputat, ale asi jste se jeste nesetkal se
> > jmeny souboru jako napr.  'xx; rm -rf $HOME'. Po expanzi by shell
> > provadel
> > 
> > mv SOUBOR xx; rm -rf $HOME
> > 
> > Ale kdyz to tak mate radsi ... :-)
> > 
> 
> ale stretol :-)
> 
> ... = \"%p\" \"\`echo \\\"%p\\\"|tr [A-Z] [a-z]\`\"
> 
> ale miesto tych ... si moze kazdy doplnit, co chce :-))

Asi si nerozumime. Ja jsem tvrdil, ze pristup pres eval, pripadne pres
rouru do bashe neni vhodny, protoze predstavuje potencialni security
hole, bude-li spusten pro konverzi libovolnych jmen souboru. Jako
priklad jsem uvedl jmeno souboru, ktere by bylo bashem interpretovano
jako prikaz pro vymazani domovskeho adresare.

Pokud za tecky dosadite vyse uvedenou posloupnost znaku, pak problem
neodstranite, pouze donutite hackera, aby pouzil jine jmeno souboru,
napr. "; rm -rf $HOME;" (uvozovky jsou soucasti jmena). -printf pak
vytiskne retezec:

mv ""; rm -rf $HOME; "" + zbytek

V bashi prvni prikaz selze, druhy vymaze $HOME. Co udela zbytek si
kazdy muze doresit sam - pro tuto ukazku to neni podstatne.

Netvrdim, ze pres eval to bezpecne udelat nelze. Pouze se domnivam, ze
tato metoda neni vhodna pro bezne uzivatele, kteri neznaji bash do
detailu. Navic predtim zverejnena metoda byla dostatecne jednoducha a
efektivni.

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux