5.3 Znakové sady a File Inclusion
Znakové sady (Charset)
Vynechání charset v HTTP hlavičce Content-Type může otevřít cestu k XSS zranitelnostem na místech, kde by normálně nebyl problém. Správná (kompletní) definice vypadá následovně: Content-Type: text/html; charset=utf-8.
Zneužití charsetu
Historickým příkladem zneužití charsetu je práce s kódováním
ISO-2022-JP (japonská znaková sada). Podporuje totiž unikátní únikové (escape) sekvence pro přepínání mezi různými abecedami (znakové sady jako ASCII či JIS). Tím může útočník schovat pod nebezpečné znaky své payloady a obejít tak WAF (Web Application Firewall) nebo filtry na straně aplikace, které hledají pouze standardní (ASCII) zápis tagu <script>.File Inclusion a Path Traversal
File Inclusion
Zranitelnost File Inclusion nastává ve chvíli, kdy útočník dokáže donutit server načíst, zobrazit či rovnou vykonat libovolný kód (soubor). Tato chyba bývá často spojena se špatnou architekturou přímých odkazů (Insecure Direct Object References - IDOR) a procházením adresářů (Path traversal pomocí řetězců jako
../).Hlavní typy File Inclusion
- Local File Inclusion (LFI): Útočník načítá nebo čte lokální soubory ležící přímo na hostujícím serveru. Častým cílem je systémový soubor
/etc/passwdnebo konfigurační soubory databáze. - Remote File Inclusion (RFI): Útočník předá aplikaci odkaz směřující na svůj útočný server, ze kterého cílová aplikace stáhne a posléze vykoná škodlivý skript.
Potenciální dopady těchto chyb: Vykonání libovolného kódu na straně serveru (pokud se útočníkovi podaří vložit nebo načíst soubor s validním kódem), vykonání kódu na straně oběti v prohlížeči, Denial of Service (DoS) aplikace nebo prozrazení velmi citlivých údajů.
Jak takovým chybám předejít (Mitigace)
- Zabránit přímému vstupu: Uživatel by v ideálním případě neměl nikdy sám vybírat ani ovlivňovat přesné názvy souborů (cesty), které aplikace následně fyzicky zahrne do kódu.
- Nepřímé reference (Indirect reference): Pokud uživatel musí soubor volit, nabídněte mu pouze identifikátor (např.
id=12) nebo bezpečný náhodný hash. Na serveru se pomocí tohoto nepřímého odkazu provede bezpečný výběr souboru ze schváleného (tzv. whitelist) seznamu cest.