Níže nabízím překlad z Home > Stable > 4-Web Application Security Testing > 04-Authentication Testing > Testing for Browser Cache Weaknesses
Shrnutí
V této fázi tester ověřuje, zda aplikace správně informuje prohlížeč, aby neukládal citlivé údaje.
Prohlížeče mohou ukládat informace za účelem ukládání do mezipaměti a historie. Ukládání do mezipaměti se používá ke zlepšení výkonu, aby již zobrazené informace nemusely být znovu stahovány. Mechanismy historie se používají pro pohodlí uživatele, aby uživatel mohl vidět přesně to, co viděl při načítání daného zdroje. Pokud jsou uživateli zobrazeny citlivé informace (například jeho adresa, údaje o kreditní kartě, číslo sociálního zabezpečení nebo uživatelské jméno), mohou být tyto informace uloženy do mezipaměti nebo historie a následně lze tyto údaje získat prozkoumáním mezipaměti prohlížeče nebo jednoduše stisknutím tlačítka „Zpět“ v prohlížeči.
Cíle testu
- Ověřit, zda aplikace ukládá citlivé informace na straně klienta.
- Ověřit, zda může dojít k přístupu bez autorizace.
Jak testovat
Historie prohlížeče
Technicky vzato, tlačítko „Zpět“ představuje historii, nikoliv mezipaměť (viz Ukládání do mezipaměti v HTTP: Seznamy historie). Mezipaměť a historie jsou dvě různé entity. Obě však sdílejí stejnou slabinu, kterou je zobrazení dříve zobrazených citlivých informací.
Prvním a nejjednodušším testem je zadání citlivých informací do aplikace a následné odhlášení. Poté tester klikne na tlačítko „Zpět“ v prohlížeči, aby zjistil, zda je možné přistoupit k dříve zobrazeným citlivým informacím, i když je uživatel již neautentizovaný.
Pokud stisknutím tlačítka „Zpět“ může tester přistoupit k předchozím stránkám, ale ne k novým, není to problém autentizace, ale historie prohlížeče. Pokud tyto stránky obsahují citlivá data, znamená to, že aplikace nebrání prohlížeči v jejich ukládání.
Není nutné, aby autentizace byla součástí testování. Například když uživatel zadá svou e-mailovou adresu při přihlašování k odběru newsletteru, tyto informace mohou být získatelné, pokud nejsou správně zpracovány.
Zobrazení citlivých dat pomocí tlačítka „Zpět“ lze zabránit takto:
- Předání stránky přes HTTPS.
- Nastavení
Cache-Control: must-revalidate
.
Mezipaměť prohlížeče
Testeři zde kontrolují, zda aplikace neuniká žádná citlivá data do mezipaměti prohlížeče. K tomu mohou použít proxy (například OWASP ZAP) a prohledat odpovědi serveru, které patří do relace, a zkontrolovat, zda pro každou stránku obsahující citlivé informace server nařídil prohlížeči, aby neukládal žádná data do mezipaměti. Takovou direktivu lze vydat v hlavičkách HTTP odpovědí pomocí následujících direktiv:
Cache-Control: no-cache, no-store
Expires: 0
Pragma: no-cache
Tyto direktivy jsou obecně robustní, i když pro hlavičku Cache-Control
mohou být nezbytné další příznaky, aby se lépe zabránilo trvalému ukládání souborů do systému souborů. Patří sem:
Cache-Control: must-revalidate, max-age=0, s-maxage=0
HTTP/1.1:
Cache-Control: no-cache
HTTP/1.0:
Pragma: no-cache
Expires: "minulé datum nebo neplatná hodnota (např. 0)"
Pokud například testeři testují e-commerce aplikaci, měli by zkontrolovat všechny stránky obsahující číslo kreditní karty nebo jiné finanční informace a ověřit, že všechny tyto stránky vynucují direktivu no-cache
. Pokud najdou stránky obsahující citlivé informace, které však nedokážou zabránit prohlížeči v ukládání jejich obsahu, mohou citlivé informace být uloženy na disku, a tuto skutečnost mohou ověřit jednoduše vyhledáním stránky v mezipaměti prohlížeče.
Přesné místo, kde jsou tyto informace uloženy, závisí na operačním systému klienta a na použitém prohlížeči. Zde je několik příkladů:
- Mozilla Firefox:
- Unix/Linux:
~/.cache/mozilla/firefox/
- Windows:
C:\Users\<uživatelské_jméno>\AppData\Local\Mozilla\Firefox\Profiles\<profil_id>\Cache2\
- Unix/Linux:
- Internet Explorer:
C:\Users\<uživatelské_jméno>\AppData\Local\Microsoft\Windows\INetCache\
- Chrome:
- Windows:
C:\Users\<uživatelské_jméno>\AppData\Local\Google\Chrome\User Data\Default\Cache
- Unix/Linux:
~/.cache/google-chrome
- Windows:
Kontrola uložených informací
Firefox poskytuje funkci pro zobrazení uložených informací, což může testerovi pomoci. Samozřejmě existuje i několik rozšíření a externích aplikací, které můžete preferovat nebo potřebovat pro Chrome, Internet Explorer nebo Edge.
Podrobnosti o mezipaměti jsou také dostupné prostřednictvím vývojářských nástrojů ve většině moderních prohlížečů, jako jsou Firefox, Chrome a Edge. S Firefoxem je také možné použít URL about:cache
k zobrazení podrobností o mezipaměti.
Kontrola pro mobilní prohlížeče
Zpracování direktiv mezipaměti může být u mobilních prohlížečů zcela odlišné. Proto by měli testeři zahájit novou relaci procházení s čistými mezipaměťmi a využít funkcí jako Chrome’s Device Mode nebo Firefox’s Responsive Design Mode k opakovanému testování nebo samostatnému testování výše uvedených konceptů.
Navíc osobní proxy jako ZAP a Burp Suite umožňují testerovi určit, jaký User-Agent by měl být odesílán jejich roboty/prohledávači. Tento parametr lze nastavit tak, aby odpovídal řetězci User-Agent mobilního prohlížeče, a použít ho k ověření, které direktivy pro mezipaměť jsou odesílány testovanou aplikací.
Gray-Box Testing
Metodologie testování je stejná jako u testování black-box, protože v obou scénářích mají testeři plný přístup k hlavičkám odpovědí serveru a k HTML kódu. Avšak při testování gray-box může mít tester přístup k přihlašovacím údajům, které mu umožní testovat citlivé stránky přístupné pouze autentizovaným uživatelům.