Autor: .cCuMiNn. | 2.6.2011 |
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ů:
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).
<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ě.
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.
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.
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.
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.htmlDemonstraci exploitu je možné shlédnout na následujícím videu