Což je blbost, protože když tam mám zápis, tak můžu přepsat nějaký z těch node/python/zdrojáků a můžu si tam udělat co chci a žádný zákaz spuštění mě nezastaví. Při troše snahy se dostanu i na spustitelný kód (tomuhle se dá nějakým nastavením OS asi vcelku bránit), ale tak nějak bych řek, že to ani potřeba neni, tyhle jazyky toho umí docela dost...
Tohle nechápu. Co je blbost? Píšu, že zápis a zápis + spuštění je obojí problém. Říkám od začátku, že write s www-data právama do wwwroot je prostě hazard.
Jak jsem již psal. Jak spustím takový kód, který jsem uložil do DB na straně serveru? To není tak jednoduché, jako spustit ten, co uložím přímo do www root.
Tak vzhledem k tomu, že tady operuješ s existencí nějakých prehistorických aplikací, které něco zapisují na lokální FS, tak ti jednoduše odpovím aplikací, která má SQL injection chyby a posílá klientům kusy HTML z databáze, na kterých na výstupu nedělá sanitizaci (teda to je cizích slov)...easy...
To je ale prece neco jineho. V tomhle pripade jsem nic nespustil, pokud tam teda neni nejak vyprasenej ten eval, o cemz jsem tu taky psal. Takhle muzu podstrcit neco klientovi, to jo, ale tezko treba ziskam connection string do databaze. Nebo v stáhnu aplikační kód. Nebo něco webconfig. Nebo master klíče pro šifrování states. Nebo vydoluju databázi (záleží na té SQL injectioně co tam bude, může být taky dost omezená, třeba jen na jednu tabulku) Nebo se tezko muzu snazit zbourat sandbox, ve kterem bezi cely web server (v pripade AppService). To prostě můžu udělat jen když ten server přímo spustí můj kód.
Všechny případy mi dovolí na web server do www root nahrát cokoliv, tzn. třeba i soubor s příponou .php (v případě .Net pak do wwwroot aspx, do wwwroot/bin dll s kódem), který pak můžu spustit.
Hele sorry, ale python má "eval" a "ctypes", když budu mít v aplikaci díru (pro začátek třeba SQL injection, můžu mít třeba dál stránky částečně generovaný z databáze atp.), tak aniž by moje aplikace měla právo zápisu na disk, tak případný útočník může:
Můžu třeba vyměnit část HTML, vrazit tam vlastní SCRIPT tag a odchytávat hesla
Můžu kompletně ukrást celý aplikační kód původní aplikace (což mi hrozně zjednoduší jiné kroky) - protože read-only přístup tam pořád je a když se mi podaří exploitnout nějakou chybu, která umožňuje čtení souborů...
Můžu kompletně vykrást databázi, protože přes SQL injection se daj dělat kouzla.
Můžu si začít provozovat svojí apku za cizí peníze
Ani v jednom případu nezjistím, kdo mi tam vlez, zápisy často nemají ani časovou značku.
Já pořád nechápu, kde je ta kritická chyba u toho Azure?
To co jsi popsal je čistě problém aplikace. A předpokládá hned dvě zranitelnosti. tzn. SQL injection a EVAL/CTYPES, což ve výsledku hodně pravděpodobně taky znamená user input validation. To, že to má "skoro" stejné konsekvence, to je jiná věc. Eval jde samozřejmě zneužít i bez SQL injection, pokud je to zprasený. Každopádně, obojí (resp. všechny tři) jsou jiné, ale stejně kritické zranitelnosti. Ale aplikační. Ne konfigurační / infrastrukturní. Takže kdybys to napral na appservice, dostal bys ode mně report ve smyslu:
Infrastructure-Configuration, WWWRoot permissions, write acccess, Medium
Application, User Input Validation, Critical
Application, SQL Injection, Critical
Application, Code injection, Critical
Infrastructure-Configuration, wwwroot permissions, execute permissions on uploaded files, Critical