Zabezpečení a „PHP injection“
- Milan Obrtlík
- Člen | 50
V dobách dávných a temných, kdy jsem psal „webové aplikace“ ve stylu:
<?php if($_GET["page"] != 'user_page'): ?>
<div class="panel">
<?php echo $data["left_slot"]; ?>
</div>
<?php endif; ?>
mi napadli web hackeři a napíchali mi do hostingu své jedovaté php soubory.
Dodnes netuším co to bylo za útok, všude se mluví jen o SQL injection apod. Má někdo z vás tušení, co to to bylo?
A je možné takový útok provést na Nette?
- Šaman
- Člen | 2665
- RTFG https://cs.wikipedia.org/…QL_injection
- Samozřejmě že je, ale Nette ti ulehčí to zabezpečit. A pokud budeš dodržovat best practise, tak by takové základní utoky vůbec být možné neměly. Ale když prostě naprogramuješ díru, tak budeš mít díru, s tím framework nic neudělá.
P.S. Tvoje ukázka s SQL injection vůbec nesouvisí, ale chápu co tím chceš říct. Naprosté ignorování bezpečnosti vstupů. Asi jako kdyby v obchodě někdo „platil“ pokladní pytlíkem od bonbónů a prohlásil „to je tisícovka“. A ona mu vrátila na tisícovku :)
Editoval Šaman (23. 9. 2015 18:21)
- Milan Obrtlík
- Člen | 50
@Šaman, já také nemluvil v žádném případě o SLQ injection (dokonce jsem ho vyloučil pomocí „nevím co to je za útok, všude je popsané jenom SQL injection“). Mluvil jsem o injekci do PHP, u nás na toto téma Google mlčí.
Googlil jsem v zahraničí a našel jsem toto a toto v tom druhém se zmiňují o RFI. To bude asi to, čím jsem byl tehdy napadený. Co bych musel udělat, abych si naprogramoval takovou díru?
- xrep
- Člen | 51
PHP Injection sa da zaradiť do kategorie RFI, a musel by si imho napisat niečo v štyle
<?php
if($_GET["page"] != '' )
require( $_GET["page"] );
?>
a povoliť to → http://stackoverflow.com/…ver-with-php
Editoval xrep (24. 9. 2015 12:34)
- Zax
- Člen | 370
Možností je cca miliarda. V dobách čistého PHP jsem si taky užil
různé útoky a člověk kolikrát fakt netuší, odkud to směřuje, protože
je to všechno „propojený“. I taková obyčejná SQL injekce může
v některých případech klidně vést i ke spuštění PHPka
(SELECT "<?php maliciouscode(); ?>" INTO OUTFILE "../../var/www/exploit.php"
).
Editoval Zax (24. 9. 2015 16:09)
- Milan Obrtlík
- Člen | 50
@emptywall, ano, omlouvám se, že jsem sem nedal přesný příklad napadnutého kódu. Dávno jsem ho vyhodil. Z dané ukázky lze ale vyčíst styl psaní kódu – naprostá ignorace vstupu a předpokládání, že vstup je vždy platný.
@xrep, o ikludování souboru ze vstupu jsem se dozvěděl až teď, to jsem tam určitě nedělal. Co jsem tam ale dělal, tak je docela hezky ukázané v tomto videu a považoval bych to také za injekci jedovatého kódu.
@Zax, vzpomínám si, že se mi v databázi objevovaly záznamy jako
../../../../../
. Netušil jsem, že je tolik možností jak narvat
cizí jedovaté soubory do www složky na hostingu. To přece není možné, ne?
Jaktože to neřeší PHP? To je přece úkon, který pak musí řešit
programátoři neustále dokola.
- Tomáš Jablonický
- Člen | 115
xrep napsal(a):
PHP Injection sa da zaradiť do kategorie RFI, a musel by si imho napisat niečo v štyle
<?php if($_GET["page"] != '' ) require( $_GET["page"] ); ?>
a povoliť to → http://stackoverflow.com/…ver-with-php
Řekl bych, že to byl podobný útok, případně jsi neměl ani ošetřené $_FILES a ukládal jsi soubory do veřejně přístupné složky. To si tam pak může útočník nahrát a spustit cokoliv a celou aplikaci ti jednoduše rozbourat.
- Milan Obrtlík
- Člen | 50
Tomáš Jablonický napsal(a):
Řekl bych, že to byl podobný útok, případně jsi neměl ani ošetřené $_FILES a ukládal jsi soubory do veřejně přístupné složky. To si tam pak může útočník nahrát a spustit cokoliv a celou aplikaci ti jednoduše rozbourat.
Neměl jsem tam funci pro nahrávání souborů.