Dziś jest piątek, 5 grudnia 2008 roku (z kalendarza...)

Safe mode w PHP

Icon

11.04.2005, 20:59

Webmaster

Komentarze (3)

Powrót

Do trybu "safe mode" nie przywiązywałem dotychczas większej wagi. Wiedziałem, że takie coś jest i w imię bezpieczeństwa czasem utrudnia wykonywanie niektórych operacji PHP. W ostatnim tygodniu mój respekt dla tych czterech dyrektyw konfiguracyjnych niepomiernie wzrósł. Otóż na szkolnym serwerze było sobie zainstalowane PHP, do którego dostęp mieli wszyscy uczniowie na własnych kontach. Była to muzealna już wersja 4.2.3, zainstalowana tam przed paru laty. Oczywiście jej istnienie odkryłem już na pierwszych zajęciach, testując możliwości mojego konta. Sądziłem, że dane na nim umieszczane są bezpieczne przed oczami innych. I na pierwszy rzut oka była to prawda. Unixowy serwer, osobne uprawnienia dla każdego użytkownika itd.

G... uzik prawda. Pod koniec marca, w piątek po szkole wrzuciłem na serwer prosty skrypt wyświetlający listę plików i katalogów, gdyż chciałem coś sprawdzić. Przez przypadek do ścieżki wpisałem o jedno za dużo "../". To, co wtedy ujrzałem, wywołało we mnie tylko jedną reakcję: LOL. Skrypt pokazał mi zawartość katalogu, w którym znajdowały się wszystkie konta. W teorii nawet nie powinienem wiedzieć, że jest coś takiego. Widziałem dosłownie wszystko: konta uczniów, konta nauczycieli, pliki itd. Szybko zmodyfikowałem skrypt tak, by pokazywał o każdym pliku wszystkie możliwe dane, z uprawnieniami, właścicielem i grupą włącznie. Ścieżkę wpisywało się przez URL. Dodatkowo napisałem sobie skrypt do wczytywania zawartości plików i wyświetlania ich w przeglądarce. To, czego dokonałem, przeszło moje najśmielsze oczekiwania. Wszystkie konta stały przede mną otworem. Obejrzałem sobie bardziej szczegółowo jedno z nich, należące do mojego kolegi i ruszyłem na eksplorację dysku szkoły. Bardzo ciekawa była lektura konfiguracji systemu :). Nie zapomniałem także o zostawieniu śladu mojej bytności na stronie WWW szkoły. O wszystkim opowiedziałem na pierwszych zajęciach informatycznych nauczycielowi, gdyż po części zagrożone było też moje konto. Jako, że i tak musiałem tam zainstalować nowe PHP w wersji 5.0.4, postanowiłem wtedy przy okazji załatać dziurę...

Wszystkiemu winny był wyłączony Safe mode. PHP'ka przez to generalnie waliło, kto jest właścicielem jakiego pliku, kto ma jakie prawa. Było polecenie: otwieraj, to otwierał. Po udanej kompilacji poprawiłem wpisy w php.ini. Uaktywniłem tenże tryb, określiłem, do jakich katalogów mają dostęp skrypty, zablokowałem polecenie system(). Po restarcie odpaliłem mój skrypt chakujący :) z odpowiednią ścieżką. Wunderbar. Zamiast listy plików ujrzałem to, co ujrzeć powinienem: "PHP Safe mode restriction in effect: permission denied".

Wniosek nasuwa się sam. Choćbyś nie wiem, jak dobrze zabezpieczył swój system operacyjny, takie głupie zapomnienie o prostej dyrektywie w PHP to jak wywieszenie wielkiego napisu: "Hej złodzieju, jestem do obrobienia". Tyczy się to przede wszystkim komputerów, na których zamierzamy udostępniać usługi WWW pewnej grupie użytkowników.

Tryb bezpieczny powinien też zainteresować twórców skryptów PHP. Zmiana zachowania funkcji operujących na plikach to jedno. Wyłącza on również pewną grupę funkcji, w ogóle nie zezwalając na ich użycie. Dlatego warto dla własnego dobra włączyć go i przetestować nasz skrypt, szczególnie, gdy wykonujemy nim jakieś dziwne operacje na katalogach, ładowanie dodatkowych bibliotek itd. Zarówno my, jak i jego użytkownicy unikną wtedy przykrych niespodzianek...

Powrót

Komentarze

Napisał slipkid w poniedziałek, 11 kwietnia 2005 o 22:05

Zyx, trzeba bylo skopiowac katalog The Rising Star of Polish IT xD byloby co poprzegladac ;] p.s. nocna wersja stronki jest spoko ;p

Napisał chomik w poniedziałek, 11 kwietnia 2005 o 22:51

Grafika zyxowna :) tak jak Bartek z checia bede wchodzil codziennie :)

Napisał mosh w wtorek, 4 września 2007 o 21:57

Ciekawe info..
chyba właśnie wyłączony tryb safe_mod był
przyczyną zhaczenia mojego konta na jednym z kiepskich hostingów.. szkoda że nie ma więcej info
jak to włączać/wyłączać..
ale cóż.. googluje dalej ;)

pozdro, mosh

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia