[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