6.9 Zkouškové okruhy
Následující otázky odpovídají kapitolám probraným v 6. přednášce.
File upload related vulnerabilities (generic, file-extension-specific)
Podstata problému: Nahrávání souborů na server otevírá obrovskou útočnou plochu. Využívá se formátu
Konkrétně z hlediska přípon (file-extension-specific):Pokud se backend snaží ověřovat příponu (např. povolit jen
Generické (Obecné) zranitelnosti File Uploadu:I pro povolené koncovky existují útoky, kdy je využit nebezpečný obsah (např. Polyglot, kde má soubor platný hlavičkový marker JPG, ale v sobě ukrývá škodlivý PHP či XSS payload). Také se pod generické problémy řadí útoky přes Path Traversal (skok do systémových složek úpravou názvu na
multipart/form-data pro přenos binárních souborů. Zranitelnosti nastávají převážně v případě nedostatečné sanitizace odesílaného souboru.Konkrétně z hlediska přípon (file-extension-specific):Pokud se backend snaží ověřovat příponu (např. povolit jen
.jpg a zamítnout .php), lze toho dosáhnout obejitím nedokonalé validace:- Zřetězené přípony:
soubor.jpg.phpu špatného parsování textu. - Null byte injection:
shell.php%00.jpg– backend v PHP či Céčku může zbytek smazat a zachová příponu .php. - Použitím znaku U+202E (RLO), kdy se v názvu znaky obrátí a jméno souboru se zjevuje podvržené jinak validátorům a jinak souborovému systému.
- Do této kategorie patří také nahrávání neočekávaných spustitelných souborů, jako jsou přípony
.exenebo.cmdv případech, kdy server postrádá white-listing.
Generické (Obecné) zranitelnosti File Uploadu:I pro povolené koncovky existují útoky, kdy je využit nebezpečný obsah (např. Polyglot, kde má soubor platný hlavičkový marker JPG, ale v sobě ukrývá škodlivý PHP či XSS payload). Také se pod generické problémy řadí útoky přes Path Traversal (skok do systémových složek úpravou názvu na
../../../../shell.php) nebo spuštění nahraného HTML souboru, kvůli němuž dojde ke zobrazení nepovoleného JavaScriptu uživatelům jako XSS (tento vektor např. využívá faktu, že zobrazení v prohlížeči postrádá Content-Disposition: attachment a chybí ochrana stažených souborů na konkrétním vyčleněném sandbox origin-u / doméně).Insecure Direct Object Reference (IDOR)
Popis: IDOR je typická zranitelnost týkající se Broken Access Control. Vzniká tehdy, kdy aplikace uživateli předá na klienta identifikátor k určitému záznamu v databázi (např.
Běžné vektory IDOR útoků:
?invoiceId=123 nebo ?userId=55). Při odeslání požadavku na modifikaci nebo čtení se server ptá po datech k danému klíči, ale nezjišťuje už fakt, jestli daný, právě teď přihlášený uživatel (daná session relace), má právo s tímto cizím záznamem manipulovat.Běžné vektory IDOR útoků:
- Inkrementální ID: Pokud klient odhadne, jakou strukturu systém má a že využívá auto-increment celá čísla, může si jednoduše o 1 snížit svůj identifikátor a přečíst účet předchozího uživatele.
- Uhádnutelné tokeny: Čísla (jako šestimístný loterijní tiket), která jdou hrubou silou vyčíslit, nebo nebezpečná UUID verze (jako deterministické UUIDv1 z timestampu a MAC adresy serveru).
- Příklad z reálného světa: Zneužití funkce resetování hesla či únik dat přes API u Facebooku (vyčtení osobních čísel 419 miliónů uživatelů u mobilních iterací). Nebo manipulace se sdílenými tajnými statickými zdroji (např. unikátní fotografie bez ochrany uživatelské relace/session cookie).
Denial of Service (DoS) on the Application layer
Popis: Aplikační DoS neútočí na síťový stack záplavou paketů, ale využívá úzká hrdla samotné aplikační a aplikačně-logické vrstvy. Tedy odesílá velmi malé a specifické HTTP zprávy, na jejichž zpracování musí aplikační, aplikačně-skriptovací nebo databázový server strávit ohromné množství paměti či výpočetního výkonu (CPU).
Vektory aplikačního DoS útoku:
Vektory aplikačního DoS útoku:
- Neexistence horních limitů: Například zpracování megabytových dat v HTTP hlavičce, či obřích vstupů u parametrů. Ty servery často parsují kompletně do paměti a následně na nich provádí validace, regulární výrazy a mapování, což vede k okamžitému vyčerpání zdroje stroje (Out Of Memory).
- Decompression Bombs (Zip of Death): Nahrání velmi malého komprimovaného 42 KB souboru (např. přes upload form), který se na serveru nešťastně rozbalí do mnoha úrovní zabírajících 4,5 petabajtu prostoru.
- Neexistující dolní limity ve vyhledávání: Uživatel nevyplní vyhledávací string, API pustí dotaz do databáze v režimu shody na všechny sloupce či se spoustou wildcardů procent na celý dataset – databáze se "zadýchá" na mnoho desítek sekund a uzamkne tabulky.
- WAF Blockade / Response Filter DoS (RFDoS): Vycraftěná injekce zakázaného znění, např. klíčových chybových zpráv databáze nebo "EICAR" řetězců (virů), přímo do uživatelského jména nebo komentáře na webu. Jakmile jiní zákazníci web navštíví, WAF zaregistruje v odpovědi serveru výskyt citlivého řetězce z komentáře a legitimním uživatelům odpoví s falešnou hlavičkou blokovaného přístupu
403 Forbidden, de-facto tak útočník izoluje funkčnost platformy pro návštěvníky.