DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Zaštita od hakovanja (http://www.devprotalk.com/showthread.php?t=1779)

dinke 07. 11. 2006. 19:53

Citat:

Originalno napisao Ilija Studen
Ovo je jedno od onih "sipaš i ne misliš" rešenja. Strašno je jednostavno, a opet ga je teško oboriti.

A sta ako user posalje nesto tipa page = ../../../foo ? ladno ce taj fajl traziti ispod page dira o kome pricas. Sve u svemu, vrlo insecure.

Br@nkoR 07. 11. 2006. 20:15

>= PHP 5.1.0

//php.ini
Kôd:

allow_url_include = Off
edit:

a postoji i allow_url_fopen

Aleksandar.Ilic 07. 11. 2006. 20:20

hm, ja licno znam za taj allow_url_include. I nije meni problem da zastitim svoj kod protiv ovakvih napada. Stavise, nijedna moja skripta nije ranjiva na ovakav tip napada. Nego mene zanima kako da napravim skriptu koja moze se tako includuje preko url-a i da radi na server na kome je includovana :)

Pedja 07. 11. 2006. 20:38

Pa napravis kao i svaku drugu skriptu, samo moras da joj promenis ekstenziju da tvoj server posalje php kod a da ga ne izvrsi. Ovaj drugi include-uje sors i izvrsi ga.

Aleksandar.Ilic 07. 11. 2006. 21:07

lele, a ja sam mislio to neki teski hack :D Sramota :) Thnx

zark0vac 07. 11. 2006. 22:39

Hehe..
Sto se tice zastite od rfi-a, sledece stvari su korisne da se podese kako
navedem sem ukoliko je neophodno za funkcionisanje skripte da se ne menja.

Za pocetak ako ti skripta moze bez, obavezno iskljuci potencijalno opasne funkcije:

Kôd:

disable_functions=system,exec,passthru,shell_exec
Ovime si onemogucio pokretanje php shell skripti (r57, c99..) i samim tim
ozbiljniju stetu na serveru, ali ako nisi u mogucnosti to da uradis, ali i ako
jesi, u svakom slucaju procitaj ceo post i preporucljivo je da poslusas. :)

Zatim nacin za zabranu pozivanja fajla van odredjenog direktorijuma se moze
odraditi sa array-om kao sto je navedeno na 1 strani, ali ako ne zelite tako,
mozda vam ovaj kod moze pomoci:

Kôd:

<?php
  $folder = 'moduli/';
  $ekst = '.php';
  $modul = str_replace(".","",$_GET["modul"])

  if ( file_exists($folder.$modul.$ekst) ) {
  $fajl = $folder.$modul.$ekst;
  include($fajl);
  } else {
  echo "404 Not found";
}

?>

Postoji mogucnost da se uploaduje preko ovog koda i fajlovi koji
nisu sa .php ekstenzijom ali se nalaze u direktorijumu moduli/.
Primer:

Kôd:

http://www.serv.com/include.php?modul=nesto.txt?
# cime postaje: modul/nesto.txt?.php i zanemarena je .php ekstenzija,
# primer broj 2:
http://www.serv.com/include.php?modul=nesto.txt%00
# isto samo sto se ovime sav nastavak posle nesto.txt zanemaruje zbog
# null chara.

Za prosledjivanje vrednosti koristi $_POST umesto _request-a,
a $_get koristi samo tamo gde je namenjen, forsiraj post metod.
Zatim iskljuci register_globals i allow_url_fopen, i gledaj kod skripti :)
Preporucujem ti da pregledas security deo php manuala, dosta
ces nauciti o ovim napadima. Takodje se pozabavi sql injectionom,
daleko manje opasnim xss-om i komplikovanijimm csrf-om (ako je
manji projekat, csrf mozes zaobici, za sad :) ).

Ako imas dedicated onda ili unajmi nekog security experta da ti
podesi sistem kako i kada bi doslo do includeovanja php shell skripte
i dizanje nc-a da napadac ne moze da roota server, ali i redovno
skidaj patcheve za sve daemone/servise koje se vrte na tvoj boxu...

Nadam se da sam pomogao...

oliver 07. 11. 2006. 23:30

Citat:

Originalno napisao dinke
A sta ako user posalje nesto tipa page = ../../../foo ? ladno ce taj fajl traziti ispod page dira o kome pricas. Sve u svemu, vrlo insecure.

quickfix :)

PHP kôd:

$page = isset($_GET['page']) && strpos("../",$_GET['page']) === false $_GET['page'] : 'homepage'


bluesman 07. 11. 2006. 23:33

ili instaliras mod_security :) Ono sto sve zive nervira, ali radi pos'o :)

ivanhoe 07. 11. 2006. 23:47

ma bre Ilija sta fali tome da imas niz u kome pisu sve stranice koje je moguce inkludovati...ccc, sto ste bre toliko lenji...ova omladina, sve bi automatski :D

em je znatno sigurnije, em kad otvoris kod posle x meseci znas odmah koje strane se ukljucuju za koji ulazni parametar, bez da trazis po direktorijumima i tumacis mogucnosti...

dinke 07. 11. 2006. 23:54

jel to pokusavas da mi kazes da i ja trebam da stavim "old school" u svoj potpis ;) ?


Vreme je GMT +2. Trenutno vreme je 08:23.

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.