Portál AbcLinuxu, 19. června 2025 23:11


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
Petr Tomášek avatar 10.5.2014 17:31 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Odpovědět | Sbalit | Link | Blokovat | Admin
preg_replace('/'.$_GET['replace'].'/i', $_GET['with'], $str)

Tak nevím, ale takový kód snad nemůže napsat ani největší zíma...

multicult.fm | monokultura je zlo | welcome refugees!
mirec avatar 10.5.2014 17:40 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Tiež som si hovoril. Radšej pomlčím o tom, v koľkých pluginoch wordpressu som takýto kód našiel ...
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
13.5.2014 09:45 R
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Idealny pocet volani preg_replace() v kode je nula. Niektori ludia sa vsak vyzivaju v regularnych vyrazoch a nasekaju tam potom kopu tazko riesitelnych bugov.
pavlix avatar 13.5.2014 09:48 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Regexy jsou nástroj jako každý jiný, dají se používat dobře i špatně.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
13.5.2014 16:24 Sten
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Ideální počet volání interpretru PHP je nula. Někteří lidé se ale vyžívají v masochismu a natahají tak na server kopu těžko řešitelných bezpečnostních děr ;-)
10.5.2014 18:39 ja
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Odpovědět | Sbalit | Link | Blokovat | Admin
A co na to mod_security?
mirec avatar 10.5.2014 20:31 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Mám tak pocit, že by si poradil s null v preg_replace, ale pravdu povediac nikdy som mod_security nekonfiguroval (nie som správca, len programátor). Samozrejme druhý problém s hádaním cesty nemá šancu ovplyvniť, ale tento typ útoku sa v našom prípade nemohol stať, v každom prípade správanie php cgi ma celkom zaujalo.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
10.5.2014 19:50 psio
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Odpovědět | Sbalit | Link | Blokovat | Admin
PHP je tak bad by design ze prechod na Python/Django bylo jak vysvobozeni. Tim netvrdim ze tu nejsou problemy s bezpecnosti, ale je to uplne jiny level. Chovani typu provedu cokoliv i to co nebylo explicitne volano, hlavne aby to vratilo nejaky vysledek misto vyjimky, me privadely k silenstvi. Uplne me desi ty weby ktery pustilo vedeni na internet a kde je to takovyma pastma prospikovany. Pripominky smetli do kose, hlavne ze to dostal zakaznik v terminu. Az se najde nekdo kdo to bude chtit zneuzit tak tu mame docela pekny botnet :(
mirec avatar 10.5.2014 22:11 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Ja momentálne pracujem prevažne na projektoch v djangu. Je to fakt obrovský rozdiel oproti PHP. Hlavne debugovanie (werkzeug) je neskutočne pohodlné. Dnes som narazil na wdb, budem musieť vyskúšať.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
10.5.2014 20:11 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Odpovědět | Sbalit | Link | Blokovat | Admin
A to řešení kontrola na INT_MAX přes float je správné nebo bezpečné?
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
mirec avatar 10.5.2014 22:08 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Ani správne ani bezpečné, akurát to demonštruje schopnosti programátorov PHP.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
10.5.2014 22:20 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Oki, já jenom že píšeš „riešení s floatmi“ a ono to problém neřeší…, tak jsem nevěděl…
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Jendа avatar 10.5.2014 22:17 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Asi ne, protože float bude mít (na většině architektur) 24 bitů, ale int 32. Takže dokážeš vyrobit float, který se zaokrouhlí dolu a přeteče ti pár znaků.
10.5.2014 22:30 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Ne-ne, float v podání PHP je double a int záleží na architektuře, tedy bude obvykle 64bit a to je, mimo jné, schopné testem projít a být to větší něž INT_MAX (INT64_MAX).
Pokud máš 64bit systém, tak si zkus:
php files.php
<?php

echo (int)PHP_INT_MAX,"<br />\n";
echo number_format((double)PHP_INT_MAX,0,'.',''),"<br />\n";
echo "--------------------------<br />\n";
$var = 9223372036854775808.0;//an expresion
if ($var > PHP_INT_MAX){
  echo "Error expresion is bigger then INT_MAX";
}else{
  $myint = (int) $var;
  echo $myint," ¡WOW!<br />\n";
}
Pokud s eto chce dělat takto je třeba respektovat double a tedy testovat max na 9007199254740991 (nebo zjednodušeně na 15 míst 999999999999999).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
mirec avatar 10.5.2014 22:32 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
To bol float v zdrojákoch PHP a to je napísané v C, takže float je tam skutočne float.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
10.5.2014 22:40 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
A já proč se mi to nezdálo a jaktože je tam INT_MAX (místo PHP_INT_MAX) tak to si kluci dělají srandu - doufám. Nicméně na druhou stranu, variantu s INT64 a double je v C/C++ k vidění v různých variantách rozhodně častěji, než by mělo být…
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
12.5.2014 06:27 Matlák
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Ta narážka na float to calculate length of a string mi připoměla slavný článek PHP is a fractal of bad design. Každý člověk co alespoň trochu zavadil o PHP by si jej měl přečíst :-)
12.5.2014 06:27 Matlák
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
10.5.2014 22:24 Jirka
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Ani jedno
12.5.2014 15:28 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Odpovědět | Sbalit | Link | Blokovat | Admin
Nerozbíjí náhodou cgi.fix_pathinfo=0 weby, které závisí na PATH_INFO? Mám za to, že v takových případech je stejně nějaký ten "tuning" nginx potřeba.
Quando omni flunkus moritati
mirec avatar 12.5.2014 19:23 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Áno, rozbíja. Kontrolovať existenciu súboru je možné aj na strane nginx, ale je potrebné aj tak vziať do úvahy možné race condition keď medzi kontrolou a vykonaním cgi bol súbor vymazaný. Najlepšie riešenie je zakázať vykonávanie .php v adresároch, ku ktorým má používateľ právo zapisovať.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
Petr Tomášek avatar 12.5.2014 21:30 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Chyba. Nejlepší řešení je zakázat uživateli zapisovat do jakýchkoliv adresářů, které potom HTTP servíruje. Všechno je nutné ukládat někam mimo a pak mít skript, soubory pojmenovat nejlíp číslem, číslo mít v databázi a pak mít skript, který tyto soubory servíruje.
multicult.fm | monokultura je zlo | welcome refugees!
mirec avatar 12.5.2014 22:11 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Servírovať súbory skriptom je často v praxi nerealizovateľné. So surovým servírovaním súborov cez nginx dosiahnem rádovo 100x vyššiu priepustnosť než so skriptom. Za najlepšie považujem skôr odpútať sa od konceptu spúšťania nejakých skriptov podľa URL adresy a buď používať jazyk kde webová aplikácia routuje URL automaticky, alebo povoliť len hlavný PHP skript a routovať si URL adresy v ňom. Zvyšné súbory môžu byť v takom prípade bezpečne obsluhované priamo webovým serverom.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
13.5.2014 05:18 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
U velkých souborů ti také vyprší max execution time. Ale jinak soubory přejmenovat na nějaký hash určitě dobrý nápad je.
Baník pyčo!
13.5.2014 16:51 Sten
Rozbalit Rozbalit vše Re: Null byte injection v preg_replace a nebezpečný nginx
Ne, nejlepší řešení je používat routing, takže webová aplikace nenačítá kód ze souborů rozházených po adresářích za běhu. Ale to PHP neumí.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.