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

PHP Hacking aneb jak hacknout SOOM :)

Autor: Kub@z   
22.9.2004

V tomto článku popíší několik nedostatků, které byly (ale snad už nejsou :)) na SOOMu a díky kterým bylo možné jej opravdu "hacknout"... Tyto poznatky můžete samozřejmě zkusit použít i na jiném serveru, takže čtěte :)


Jen menší poznámečka: Tento článek byl psán, když zde byl ještě starý RS... Dnes už celkově funguje na jiném principu, takže hledat chyby tohoto typu zde rozhodně nemusíte ;)

Říkáte si, že je to nesmysl? PHP Hacking? Není... jde o to, využít nějakou nevychytanou věc v PHP scriptu, která nám umožní třeba spustit php script vlastní, nebo zobrazit obsah php scriptu na serveru. A já v tomto článku popíši nedostatky, které doopravdy byly na SOOMu (a samozřejmě už nejsou) a díky kterým mohl útočník třeba změnit index. Takže:

Chyba první - Spuštění PHP scriptu

Každý uživatel má po přihlášení v sekci SUAS možnost uploadovat jakýkoliv soubor na server. Včetně souboru s příponou .php. Takže se nabízí postup:

1) Uploadovat php script na server
2) Napsat jeho adresu do prohlížeče (data/files/script.php)

Ale jakmile tuto adresu napíšete, objeví se vám "forbidden", protože vykonávání PHP scriptů je ve složce soom.cz/data/files zakázáno. Takže... jak na to? Jak ho spustit? Jednoduše. Koukněte se nahoru na panel "adresa". Co vidíte? "modul.php?id=sas/show_article&...". Id je cesta k php scriptu, který se má includnout. Takže stačí napsat "modul.php?id=data/files/script" a je to (repsektive teď už ne :)).

Chyba druhá - Zobrazení zdrojáku PHP scriptu

Tento nedostatek umožňoval zobrazit zdrojový kód jakéhokoliv PHP scriptu. Může za to script pro uploadování souboru. Ten přebírá dva parametry: "sd_file" a "sd_file_name". "sd_file" je <input type="file"... ve zdrojovém kódu, takže za normálních okolností se po uploadnutí nastaví na něco ve stylu "/disk2/www/tmp/blablabla". A to "blablabla" je právě ten uploadovaný soubor. V php scriptu je tedy následně použita funkce copy(), která ho zkopíruje do požadovaného místa:

copy($sd_file,"data/files/".$sd_file_name);

To je naprosto v pořádku, ale teď si představte, co se stane, pokud sd_file zadáte ručně v adrese. A zadáte ho třeba takto:

modul.php?id=suas/upload_file&sd_file=modul.php&sd_file_name=view.txt

Zavolá se funkce copy:

copy("modul.php","data/files/view.txt");

Takže stačí napsat "data/files/view.txt" a zdroják je na světě :)

Chyba třetí - Spuštění php scriptu

Tato chybka byla prakticky neodhalitelná, ale dal se pomocí ní také uploadovat na server PHP script. šlo o to, že složka /data/projects/shg měla omylem nastavená práva drw-rw-rw. Tzn. že script, který provádí uploadování do ní mohl zapisovat. Takže stačilo vybrat php script na disku, který chcete nahrát a do položky jméno zadat: "../projects/shg/script.php". A je to... A zkuste hádat, co se musí zadat do adresy, aby se script spustil :)

Epilog :)

Tyto chyby na SOOMu opravdu byly (a doufám, že už nejsou, protože jestli přepíšu omylem nějaký script nezáplatovanou zálohou, tak už se po zveřejnění tohoto článku SOOM asi nevzpamatuje). Takže... jelikož tu určitě ještě nějaké nedostatky jsou (systém bez chyb neexistuje), tak vás tímto žádám, aby, kdyby náhodou se někomu z vás podařilo nedostatek odhalit, tak nám nemažte databázi, ale raději nám o chybě řekněte ať ji můžem opravit a napsat další takovýto článek :)))

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

Social Bookmarking

     





Hodnocení/Hlasovalo: 2.71/35

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