[LUGOS-PROG] PHP chown()

Borut Mrak b at aufbix.org
Tue Mar 16 20:46:32 CET 2004


On Tuesday 16 of March 2004 20:29, "Branko F. Grac(nar" wrote:
> Nejc Skoberne wrote:
> | Delam eno skripto, ki bo administrirala userje v bazi. Ko dodam novega
> | uporabnika, zelim da se mu naredita mail in ftp direktorija. Ce ju
> | naredim, je lastnik seveda nobody, ker Apache laufa kot nobody. Chown
> | pa lahko izvede le root. Kako bi tole naredil? Nekje sem zasledil s
> | sudotom? Kaksen hint?
>
> 1.) laufaj httpd kot root :)))) hehe

Zelo slaba ideja.

> 2.) sudo - naatimaj, da lahko nobody izvede ukaz chown(1) in le-tega s
> pomo jo exec() ali system() pokli i iz PHP-ja
>
> 3.) skopiraj chown(1) nekam, mu dodaj suid bit in dovoli dostop do njega
> samo uporabniku nobody. Iz php-ja pokli i program s pomo jo exec() ali
> system().

Slabi ideji.

Se najbolj pametno (po mojem) je, da PHP zapise svoje potrebe po kreiranju 
direktorijev v bazo, ti pa napises program, ki spremlja to bazo, ko se pojavi 
nov vnos naredi sanity checking (recimo to, da lahko chown-a samo datoteke 
pod doloceno potjo v filesystem-u, da v poti ne sme bit ../, da lahko chown-a 
samo na dolocenega userja ipd.) in izvede request.

To sicer ni realtime, ampak bistveno bolj odporno proti nekomu, ki pridobi 
dostop do apache-ja, ki tece kot root oz. apacheja, ki tece kot navaden user, 
ampak lahko izvaja chown kot root. S primerno bazo in triggerji se da stvar 
izvesti skoraj real-time, brez pollinga baze.

Ce pa varnost ni pretirano pomembna, pridejo v postev tudi zgornje 3 moznosti.

Mogoce bo znal kaj bolj pametnega pripomnit se kdo na lugos-sec.

lp,
Borut.



More information about the lugos-sec mailing list