Zpět na seznam článků     Číst komentáře (25)     Verze pro tisk

Bezpečnost na webu Volny.cz

Autor: .cCuMiNn.   
10.10.2007

Report z provedeného bezpečnostního testu na webu Volny.cz. Zajímá Vás, jak tímto testem prošel samotný web, nebo freemailové účty vedené u této společnosti? Pokud přistupujete ke svému e-mailovému účtu přes webové rozhraní, je ostražitost rozhodně na místě...


nologo Po bezpečnostním testu věnovaném freemailu společnosti Seznam.cz, který skončil s oznámením zranitelnosti na CSRF útoky, jsem se tentokrát zaměřil na web Volny.cz společnosti Telekom Austria. Výsledkem bezpečnostního testu je tento report, který informuje o nalezených zranitelnostech.

Jako první jsem se zaměřil na hledání zranitelností v podobě XSS. Tyto by měly být na portálech této velikosti podchyceny, protože jde snad o nejvíce diskutovaný a zdokumentovaný druh zranitelnosti. Ač jsem náchylnost na útoky XSS nečekal, našel jsem jich na webu Volny.cz spousty. Dá se dokonce říci, že bylo spíše výjimkou, pokud přihlašovací nebo vyhledávací formulář touto chybou netrpěl.

XSS na webu Volny.cz

  • Vyhledávání, na úvodní stránce a pod odkazem vyhledávání, které běží na doméně volny.zlatestranky.cz.
  • Vyhledávání ve zboží, které běží na doméně zbozi.volny.cz
  • Vzhledávání v e-shopu na doméně shop.volny.cz
  • Další chybička se nachází na doméně web.volny.cz při přihlašování k SMS.
  • XSS zranitelností trpí i formulář pro přihlášení k mailovému účtu, který je umístěn na hlavní stránce web.volny.cz. Tomuto formuláři sice nelze předat data odkazem, protože je čerpá z cookies, ale přesto tuto zranitelnost obsahuje.
  • Dalším postiženým místem je chat.volny.cz, kde obsahuje XSS zranitelnost přihlašovací formulář, kterému je nutné data poslat metodou post.
  • Stránka s SMS je ve svém formuláři pro vyhledávání také náchylná přes POST vhodně upravených dat, stejně jako formulář pro vyhledávání v televizních programech na adrese http://web.volny.cz/zabava/tv/
  • Sekce album.volny.cz je náchylná ve formuláři pro přihlášení a současně také ve formuláři pro vyhledávání.
  • Zřejmě proto, aby v tom společnost Volny.cz nezůstala sama, umožňuje neošetřené přihlašování i do dalších domén. Například na adrese http://sex.volny.cz/ můžete vyvolat XSS pokud se pokusíte přihlásit s vhodně upraveným POST požadavkem k seznamce www.amateri.cz. Tato chyba ovšem vzniká až v kontextu zmíněné seznamky a proto se jí zde nebudeme zabývat.

Bezpečnost freemailu na Volny.cz

Po zjištění, že na XSS zranitelnost je možné narazit na webu Volny.cz opravdu na každém kroku, jsem se rozhodl, že se trochu blíže podívám na bezpečnost poskytovaných e-mailových schránek. Vzhledem k tomu, že úvodní web na www.mail1.volny.cz jako jeden z mále nejevil známky náchylnosti na XSS útoky, jsem se pustil do zkoušky CSRF útoku. Pro změnu hesla je vyžadováno zadání hesla původního, což útok na změnu hesla vylučovalo. Za cíl jsem si tedy zvolil, stejně jako v případě dříve publikované chyby na seznamu, přesměrování příchozí pošty na útočníkův mail. Pomocí níže uvedeného kódu se mi sice podařilo útok uskutečnit, ale pouze ve fázi testování.

  1. <html>
  2.   <head></head>
  3.   <body>
  4.     <form name="fakeform" action="http://www1.mail.volny.cz/~~12345678901234567890123456789012/app/forward.php" method="post">
  5.       <input type="hidden" name="copy" value="1">
  6.       <input type="hidden" name="aliases" value="utocnik@domena.cz">
  7.       <input type="hidden" name="action_save.x" value="36">
  8.       <input type="hidden" name="action_save.y" value="5">
  9.     </form>
  10.     <script type="text/javascript">document.fakeform.submit()</script>
  11.   </body>
  12. </html>

Náš kód totiž nutně potřebuje znát URL stránky, na které se nachází skript pro změnu údajů. Tato adresa se ale s každým přihlášením mění, protože URL sestává kromě jiného také ze session řetězce. Právě díky tomu, že se mi nepodařilo na doméně, v níž freemail běží, nalézt žádnou xss zranitelnost, neměl jsem tak šanci přinutit oběť, aby mi session řetězec odeslala. Začal jsem zkoumat, ve které chvíli se identifikační řetězec vytváří a zjistil jsem tak, že ve chvíli kdy vstoupím na úvodní stránku web.volny.cz, je tento řetězec již vytvořen a vložen do odkazu ve formuláři pro odeslání přihlašovacích údajů. Tento řetězec vždy na začátku obsahuje hodnotu ffffff. To sice délku session řetězce, kterou je potřeba dohledat zmenšuje z 32 na 27 znaků, nicméně to stále nevede k úspěšnému překonání. Proč session, která je přiřazena na hlavní stránce, vždy obsahuje v úvodu těchto šest písmen, jsem nepochopil. Pokud se totiž uživatel přihlašuje přímo na stránce www.mail1.volny.cz, obsahuje session řetězec náhodné znaky v celé své délce. Zřejmě jde o drobnou chybu ve skriptu, který identifikátor session vytváří. Nicméně, pokud se skript, který má tvorbu session řetězce na starosti, časem nezblázní a nezačne tam těchto stejných znaků dávat hned 25, je bezpečný.

Dostal jsem se do fáze, kdy jsem věděl, že potřebuji zjistit identifikátor session, ale nebyla možnost jej získat. Napadlo mě zkusit tuto session sám přiřadit podle vlastního uvážení a tak jsem tuto hodnotu v url zeditoval na http://www1.mail.volny.cz/~~12345678901234567890123456789012 /app/index.php?orig_host=www1.mail.volny.cz&time=1191523728

Tato adresa byla serverem přijata. Dokonce jsem si mohl i zvolit server, ke kterému budu přistupovat mezi www1-www5. Po chvíli však tento odkaz přestal fungovat a vždy se automaticky změnil. Bylo to dáno hodnotou parametru time, který určuje čas, kdy byla hodnota přiřazena. Pokud je rozdíl oproti současnému času příliš velký, pak se session považuje za neplatnou a změní se. Toto lze jednoduše obejít, když hodnotu dostatečně navýšíme. Systém si již sám nekontroluje, zda hodnotu někdo nezměnil a propustí i takové hodnoty času, které ještě nenastaly. http://www1.mail.volny.cz/~~12345678901234567890123456789012 /app/index.php?orig_host=www1.mail.volny.cz&time=2191523728

V této chvíli jsem již věděl, jak zjistím hodnotu url, protože jsem si ji mohl sám zvolit. Zbývá už jen nalákat případnou oběť, aby se přes útočníkem vytvořenou adresu přihlásila ke svému účtu. Možností má útočník hned několik, od vložení odkazu do diskuzních fór nebo přes ústní nadiktování, pokud by použil sociotechniku. Jak však celkem automaticky může nalákat na tento odkaz předem vytipovanou oběť? Útočníku by stačilo, pokud by své oběti odeslal takto upravený odkaz právě na mail, který se pokouší napadnout. E-mail by okořenil důmyslně zvoleným sociotechnickým textem a pak už by jen vyčkával, než oběť na odkaz klikne. Ve chvíli, kdy by se tak stalo, dojde k přesměrování na úvodní stránku s přihlášením k e-mailovému účtu. Testování na náhodně zvoleném okruhu uživatelů ukázalo, že se většina z nich automaticky přihlašuje znovu. Jsou totiž přesvědčeni, že došlo k nějaké chybě, která je od účtu odhlásila. Tentokrát se však již přihlašují s takovým identifikátorem session, který jim připravil útočník. Jakmile se oběť znovu přihlásí ke svému účtu, stačí aby útočník navštívil jakoukoliv mailovou schránku a změnil v url hodnotu session řetězce, čímž se rázem ocitne uvnitř schránky oběti. Odkaz, který vkládá do e-mailu navíc nemusí směřovat přímo na nové přihlášení. Útočník může oběť nejprve nalákat například na stránku, kde čeká skript, jenž zaznamená kliknutí oběti na odkaz, poté ji přesměruje na přihlášení ke schránce a po vhodně zvolené době, provede CSRF útok, kterým u oběti nastaví přeposílání příchozích e-mailů.

Jednu z možných variant útoku můžete vidět na tomto videu.

Shrnutí

Chyby v mailovém serveru, které jsem uvedl, nepatří mezi ty nejnebezpečnější, protože vyžadují od oběti jistou spoluúčast. Přesto si myslím, že na tak významném portálu jakým Volny.cz bezpochyby je, nemají co dělat. Pokud bych měl bezpečnost mailového serveru zhodnotit, pak musím říct, že až na chyby, které jsem popsal, je navržen bezpečeným způsobem. Na druhou stranu si vzhledem ke zbytku webu této společnosti říkám, zda není jen náhoda, že jsem na mailovém serveru nenarazil na XSS chybu. Po jejím nalezení by totiž bylo možné napáchat daleko větší škody. Předávání identifikátoru session v url je sice jednou z variant, jak jej přenášet mezi stránkami, ale může se také stát cílem sociotechniků, kteří mohou po telefonu navést oběť k přihlášení a nechají si tuto hodnotu nadiktovat. Ne všichni lidi jsou natolik zběhlí, aby si uvědomili, že tím dávají svůj účet k dispozici.

Ke zbytku domén na Volny.cz se snad ani nebudu vyjadřovat. Zranitelnosti v podobě XSS čekají na každém kroku a chvílemi to pak vypadá, že webmaster této společnosti o útocích XSS snad ještě nikdy neslyšel. Měl by si uvědomit, že bude-li oběť následovat zákeřný odkaz vedoucí na Volny.cz, může útočník jakkoliv pozměnit obsah zobrazené stránky a to včetně cíle, na který jsou odesílány přihlašovací údaje.



10.10.2007
Po dvou dnech od upozornění provozovatele stránek Volny.cz se situace nijak nezměnila. Webové stránky jsou i nadále plné XSS zranitelností a na majitele e-mailových schránek lze stále prostřednictvím výše uvedeného postupu útočit. Volny.cz dostal příležitost se k celé věci vyjádřit ještě před zveřejněním tohoto reportu. Bohužel však této příležitosti nikdo nevyužil a tak nezbývá než věřit tomu, že jde této společnosti převážně o své klienty...

12.10.2007
Došlo k odstranění několika XSS zranitelností.

15.10.2007
Odstraněny zbývající XSS zranitelnosti. Současně již také není možné podstrčit řetězec session.


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.58/31

1  2  3  4  5    
(známkování jako ve škole)