DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Web Hosting, web serveri i operativni sistemi (http://www.devprotalk.com/forumdisplay.php?f=11)
-   -   Bezbednost, 777 folderi, file upload i PHP (http://www.devprotalk.com/showthread.php?t=3492)

zoro 08. 09. 2007. 15:30

Bezbednost, 777 folderi, file upload i PHP
 
Verujem da su se mnogi sreli sa ovim problemom pa me zanimaju misljenja i iskustva.
Web aplikacija ima upload slika i zahteva 777 dozvole na folderu za upload jer PHP radi pod nalogom nobody. Ako je PHP nobody za sve manje od 777 upload ne radi.

Moguce je medjutim staviti na folder 755, a PHP staviti radi kao owner i tada upload radi. Medjutim PHP moze da radi kao owner samo kao CGI ili FASTCGI, ali ne i kao apache modul.
Koliki je i da li je znacajan pad perfomansi u tom slucaju da PHP radi kao CGi/FASTCGI?

Da li izvrsavanje PHP-a kao owner-a otvara nove sigurnosne probleme?

Da li postoji mogucnost da se sve ovo resi sa safe modom, a da se dozvoli upload fajlova?

Hvala!

bluesman 08. 09. 2007. 15:40

Primarna stvar je da vodiš računa šta se uploaduje, sve ostalo je važno, ali je ovo najvažnije. Najopasnja varijanta je kada dozvoliš da se uploaduje bilo šta ili kada ne radiš proveru šta je korisnik uploadovao. Još kada je folder 777 (punkerski, anarhija: sva prava svima), eto potencijalnog problema.

Ti generalno možeš i da uplaoduješ u neki folder koji nije na "izvo'lte" pa onda da radiš rename (move) u finalni folder, + chmod(), a finalni folder i ne mora da bude 777.

ivanhoe 08. 09. 2007. 15:49

kad je php modul onda se on izvrsava sa apache privilegijama... i tada mozes da stavis da apache bude owner nekog fajla,ili jos bolje resenje ako imas privilegije, dodati apache u grupu kojoj pripada FTP user koji se koristi, pa onda dozvoliti 770 (owner i group imaju sva prava, a world ne).

zoro 11. 09. 2007. 02:01

@blues
Ok, ja u svom scriptu proveravam sta se uploaduje. Zanima me da li je moguce da se u 777 folder na neki drugi nacin (sem mog scripta) nesto ubaci. Desavalo mi se da u tim folderima nalazim neke .htm fajlove koji nema sanse da su prosli kroz moj skript. Kako su se oni tu nasli?
Jedno od objasnenja je da je to uradio neki drugi korisnik sa istog shared hosting-a sto je najverovatnije. Nesto sam nacuo da je moguce ubaciti i preko /tmp foldera al mi to nije bas najjasnije.
Dakle konkretno da li je nekom poznato kako je sve moguce ishakovati 777 folder a da to ne ide kroz skript sa naloga na kome se taj folder nalazi. Da li je moguce to uraditi kroz neki drugi script koji ima bezbednosni propust tog tipa a nalazi se na drugom nalogu na istom shared serveru?

@ivanhoe
Zanimljiva ideja. Proverio sam i meni apache (a i php) rade kao nobody, a nasao sam da to nije dobro pa cu da menjam. Kazi mi samo da li je dovoljno kreirati odgovarajuci user, group i promeniti httpd.conf? Da li je potrebno rekompajlirati apache?

ivanhoe 11. 09. 2007. 02:54

Citat:

Originalno napisao zoro (Napišite 42154)
Zanima me da li je moguce da se u 777 folder na neki drugi nacin (sem mog scripta) nesto ubaci. Desavalo mi se da u tim folderima nalazim neke .htm fajlove koji nema sanse da su prosli kroz moj skript. Kako su se oni tu nasli?

u principu javno (preko weba) dostupni direktorijumi ne treba nikad da budu writablini od strane apacha ili bilo kog drugog korisnika osim tebe (odnosno ako mora tako onda zabrani pristup preko weba tom dir-u). Cak i ono sto sam ja pominjao da se apache doda u grupu nije dovoljno resenje, jer bilo ko ko na sistemu pokrece svoje skripte preko apacha onda ima pristup tvojim fajlovima.
Ovo sto pominjes je vrlo verovatno taj slucaj, neko na shared hostingu pokrene skriptu (bilo namerno, bilo da je uhakovana) koja kreira fajlove u tvom folderu. Posto to radi apache onda moze da pise sta hoce gde hoce, jer si mu dozvolio.

To se resava pomocu chroot-ovanja, ali to opet zahteva rekompajliranje apacha, a i stvara citav niz problema oko privilegija. Ja nisam nikad administrirao shared hosting tako da mi ovo nije trebalo, pa ne znam bas puno o tome, ali ima da se nadje howto-ova za chroot, pa pogledaj..

Za izmenu usera ne moras da rekompajliras nista, samo promenis httpd.conf i restartujes apache ( i naravno promenis privilegije svih bitnih fajlova, i kreiras novog usera koga zelis da apache koristi). Obicno se apachu daje poseban user i grupa, mada ne znam ni sto bi nobody bilo lose (ako se koristi samo za apache)

zoro 12. 09. 2007. 14:47

E sad smo razjasnili neke stvari. Ovde ima neki how to koji sadrzi ovo o cemu smo pricali, bice od koristi i drugima


Vreme je GMT +2. Trenutno vreme je 00:50.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.