FFFjacking (CZ)

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: .cCuMiNn.
Datum: 2.6.2011
Hodnocení/Hlasovalo: 1.63/19

Původně jsem zamýšlel, že tento text zveřejním jako 0-day exploit, který bude součástí seriálu věnujícího se clickjackingu. V souvislosti s nedávno zveřejněnou zranitelností IE, která dostala název Cookiejacking, mi to však nedalo a podělím se s vámi o různé varianty FFFjackingu (File From Frame hiJacking), jak jsem tuto metodu nazval, již nyní.

Co to FFFjacking vlastně je?

Během této metody může útočník (v závislosti na použitém webovém prohlížeči) dosáhnout následujících úkonů:


Uvedené možnosti, které FFFjacking nabízí, jsou skutečně široké a některé z nich i poměrně nebezpečné. Jak jich tedy může útočník dosáhnout? Cesta ke zdárnému výsledku je poměrně jednoduchá. Bude ovšem potřeba i notná spoluúčast oběti. Pro rychlé přirovnání k jiným útočným technikám uvedu, že se jedná o jakousi variantu Clickjackingu, která při krádeži konkrétních dat využívá techniky drag&drop popisované u nedávno zveřejněné techniky Cookiejacking, viz. dokumentace, demontstrační video.

Získání výpisu adresáře a obsahu textových souborů

Pokud do adresního řádku prohlížeče vložíte cestu ke kořenovému adresáři disku (ve Windows například FILE:///C:/), zobrazí vám prohlížeč výpis adresáře. Pokud bychom tento obsah dokázali zobrazit jako obsah rámu (iframe), pak by nebyl problém pomocí metod drag&drop popsaných Rosariem Valottou přenést výpis složky na stranu útočníka. Webové prohlížeče ovšem nedovolí použít v HTML dokumentu rám, jehož atrihut SRC obsahuje URI ve tvaru FILE:// (IE pouze pokud FILE: směřuje na lokální disk).

Příklad:

<IFRAME SRC="FILE:///C:/"></IFRAME> Toto použití v HTML dokumentu (načteném protokolem HTTP) není možné a vrací prázdný rám společně s chybou o nemožnosti přístupu na lokální disk.



Zajímavé ale je, jak se zachová prohlížeč v případě, kdy je rám s výpisem adresáře umístěn v HTML dokumentu, který je sám načten přes protokol FILE://. Spustíme tedy na serveru, který je dostupný z Internetu, například Sambu a umožníme na ní čtení konkrétního HTML dokumentu. Tento HTML dokument pak již může obsahovat rám zobrazující výpis adresáře nebo konkrétní textový soubor z lokálního disku. Různé prohlížeče se k problému ovšem staví různě a proto si jejich chování popíšeme odděleně.

Začneme prohlížeči Firefox a Chrome

Tyto prohlížeče neumožňují, abychom do HTML dokumentu, který je načten přes protokol HTTP, vložili rám, jehož zdroj je načítaný protokolem FILE. Zrovna tak není možné odkázat se na takový HTML dokument pomocí běžného odkazu <a href="FILE://///www.example.com/index.html">odkaz</a>. Jediné, co můžeme udělat je nechat na uživateli, aby adresu zkopíroval do adresího řádku (V Chrome je možné použít i metody drag&drop), nebo zaslali tento odkaz do uživatelova mailového klienta. Ve chvíli, kdy uživatel do adresního řádku sám vloží patřičnou adresu FILE://///www.example.com/index.html, nebo klikne na odkaz v e-mailové zprávě, dojde k zobrazení HTML dokumentu, který již může obsahovat rámy s lokálním obsahem.





Tímto způsobem je tedy možné obejít kontrolní mechanismy a nechat do rámu načíst obsah textového souboru, pokud známe jeho přesné umístění, nebo obsah libovolného adresáře.



Jak ovšem obsah tohoto rámu získat, když k němu nemáme přístup díky Same Origin Policy? Zde již přichází na řadu metody drag&drop, kdy vhodným zamaskováním přinutíme uživatele, aby označil obsah zobrazený v rámu a přetáhl jej do pole textarea, které bude vloženo ve stejném HTML dokumentu v blízkosti rámu. Tuto techniku pro drag&drop nebudu blíže rozebírat, protože ji velice podrobně popsal například již zmiňovaný Rosario Valotta u útoku Cookiejacking (viz. odkazy níže). Možné je také použití jednoduché webové fake hry ve stylu: klikni sem, stiskni CTRL+A, stiskni CTRL+C, klikni sem, stiskni CTRL+V…

Ve chvíli, kdy se útočník dostane k adresářové struktuře, může již stejným způsobem přistupovat k samotnému obsahu textových souborů, které nechá načíst do rámu.




Nyní k Windows XP ve spojení s Internet Explorerem (6,7,8)

Při použití Internet Exploreru není možné načítat obsah lokálních souborů do rámu ani v případě, kdy je HTML dokument načten přes protokol FILE:.



Je ovšem možno přistoupit na lokální disky skrz jejich sdílené položky, tedy například přes FILE:\\127.0.0.1\C$ a to dokonce i z dokumentu, který je načten protokolem HTTP.



Není proto problém načíst HTTP protokolem webový dokument s níže uvedeným kódem a tím zobrazit defaultně nasdílený adresář C$, případně obsah sdílené položky na vzdáleném serveru.


For example:


Na spojení Windows XP a Internet Exploreru je zajímavé a pro uživatele jistě silně znepokojující, že se do rámu nenačetl pouze výpis adresáře, ale kompletní Průzkumník Windows.



U ostatních prohlížečů bylo možné pomocí metody drag&drop přetáhnout obsah adresáře nebo textového souboru do pole textarea. V případě Průzkumníka Windows toto ovšem neplatí a při krádeži dat musí útočník postupovat odlišně. Co takhle vytvořit na svém SMB serveru složku sdílenou pro zápis a pomocí triku s CTRL+C a CTRL+V překopírovat soubory z jednoho rámu (C:) do druhého (který je sdílený na serveru). V takovém případě se nebudou přenášet pouze názvy souborů a adresářů, ale rovnou se překopírují samotné soubory (případně i celé disky) na server útočníka.

Samozřejmě, že vše funguje i obráceně. Je proto možné stejným způsobem kopírovat také soubory z nasdíleného adresáře na disk uživatele. Na konci článku uvedu PoC 0-day exploitu, který s uživatelovou výpomocí nakopíruje spustitelný EXE soubor do lokální složky "C:\Documents and Settings\All Users\Programy\Po Spuštění". Hádejte, co se asi stane po restartu uživatelova počítače?

Ani v případě, kdy není nasdílen žádný z lokálních disků nebo adresářů, není nutné zoufat. Stačí zobrazit v rámu obsah složky nasdílené na útočníkově serveru a využít Průzkumníka Windows s jeho menu v levém sloupci. To totiž nabízí netušené možnosti. Stačí využít metod clickjackingu a přimět uživatele ke kliknutí na odkaz Tento počítač, což povede k zobrazení seznamu disků, které je možné dále procházet. K dispozici jsou také kontextová menu, pomocí niž je možné spustit například formátování disku, apd. Bohužel pro útočníka vedou některé činnosti k zobrazení výstražných zpráv, které možnosti útoků výrazně snižují.

A jak by tedy mohl vypadat konkrétní útok v praxi? Třeba jako výuka práce s počítačem, kde se uživatel interaktivně naučí kopírovat soubory, sdílet adresáře, nebo formátovat disky. Stačí vše jen vhodně podat a uvědomit si, že prostřednictvím menu v Průzkumníku Windows je možné se proklikat například i k ovládacím panelům a dalším částem systému.

PoC (0-day exploit) Windows XP + Internet Explorer

No a to už jsme se konečně dostali k samotnému exploitu, který umožní uložit libovolný soubor do libovolného umístění uživatelova lokálního disku. Je pochopitelné, že uživatel musí být k systému přihlášen s odpovídajícími přístupovými právy. V případě většiny uživatelů Windows se ovšem dá práce pod účtem s administrátorskými právy předpokládat.

Vytvoříme si tři HTML dokumenty s následujícím obsahem:

Index.html


ifrAttacker.html


ifrLocal.html


Demonstraci exploitu je možné shlédnout na následujícím videu




Související dokumenty:

Security of browsers
https://docs.google.com/present/view?id=dcm4kmp7_18w8945rdw
Cookiejacking
https://www.swisscyberstorm.com/speakers/valotta-slides